Escreva uma função que retorna o maior valor de um array de tamanho N. Escreva um programa que leia N valores inteiros, imprima o array com k elementos por linha, e o maior elemento. O valor de k também deve ser fornecido pelo usuário.
Passo 1
A gente precisa ler dois inteiros: o tamanho do array
e a quantidade de elementos por linha
, depois ler
valores inteiros, armazenar num array, imprimir esse array com
elementos por linha e, por fim, mostrar o maior valor. O conteúdo envolve arrays, funções e loops.
Passo 2
Vamos criar uma função chamada max que receba um array e seu tamanho, percorra todos os elementos comparando-os e retorne o maior valor encontrado. Isso mostra como estruturar funções que operam sobre coleções.
Passo 3
No programa principal, primeiro a gente lê os valores de
e
usando scanf, para saber quantos números vão entrar no array e quantos mostrar por linha.
Depois alocamos dinamicamente um array de tamanho (ou podemos usar um vetor fixo, se preferir) e fazemos um loop de 0 até
para ler cada valor no array.
Depois alocamos dinamicamente um array de tamanho
Passo 4
Em seguida chamamos a função max passando o array e
para obter o maior valor, guardando-o numa variável m.
Passo 5
Para imprimir o array com
elementos por linha, fazemos outro loop de 0 até
, imprimimos arr[i] seguido de espaço e, sempre que
, imprimimos uma quebra de linha. No final, se
, imprimimos mais uma quebra para ajustar o formato.
Passo 6
Por fim, imprimimos o valor m, que é o maior elemento, e liberamos a memória alocada antes de sair do programa.
Resposta
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
int max(int arr[], int n) {
int m = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > m) {
m = arr[i];
}
}
return m;
}
int m = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > m) {
m = arr[i];
}
}
return m;
}
int main() {
int N, k;
scanf("%d %d", &N, &k);
int *arr = malloc(N * sizeof(int));
for (int i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
int m = max(arr, N);
for (int i = 0; i < N; i++) {
printf("%d “, arr[i]);
if ((i + 1) % k == 0) {
printf(”\n");
}
}
if (N % k != 0) {
printf("\n");
}
printf("%d\n", m);
free(arr);
return 0;
}
int N, k;
scanf("%d %d", &N, &k);
int *arr = malloc(N * sizeof(int));
for (int i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
int m = max(arr, N);
for (int i = 0; i < N; i++) {
printf("%d “, arr[i]);
if ((i + 1) % k == 0) {
printf(”\n");
}
}
if (N % k != 0) {
printf("\n");
}
printf("%d\n", m);
free(arr);
return 0;
}