Preciso de ajuda em um exercício utilizando C++
Faça um programa que contenha uma matriz 5x5 números inteiros, preencha com valores e mostre ao final:
- média de valores;
- posição [x][y] dos valores que estão acima da média.
Preciso de ajuda em um exercício utilizando C++
Faça um programa que contenha uma matriz 5x5 números inteiros, preencha com valores e mostre ao final:
Cadê o que vc fez até o momento?
int main()
{
int v[5][5], i, j;
int soma;
float media;
soma = 0;
for (i = 0; i < 5; i++) {
for (i = 0; i < 5; i++) {
scanf("%d", v[i][j]);
soma = soma + v[i][j];
}
}
media = soma / 25 //25 elm da matriz dividido pleo num de elementos
// printa media
for (i = 0; i < 5; i++){ //intera a coluna da matriz
for (i=0; i < 5; i++) { //intera a linha da matriz
if (v[i][j] > media){
//printa i,j
}
}
}
return 0;
}
Vamos lá. Seu código está em C, não C++. É comum a confusão e é comum ensinarem errado. Vc está no caminho, mas tem vários errinhos. Ao programar, vá fazendo parte por parte. Por exemplo, sua entrada, logo de cara, está errada, pq vc não usou o & precedendo o identificador do array na função scanf. Sendo assim, escreva a parte da entrada dos dados, teste, se não houver erro na execução, prossiga. Há outros probleminhas de falta de ponto e vírgula e de lógica, onde, por exemplo, vc usa dois fors com o mesmo controle (variável i), onde um atrapalha o outro. Ajustei seu código e adicionei uma macro para poder testar com dimensões menores da matriz quadrada, dá uma olhada e se precisar remover a macro, é só substituir por 5 no código. Qualquer dúvida, vá perguntando.
#include <stdio.h>
#include <stdlib.h>
// você está programando em C, não em C++.
// estou definindo uma macro aqui para poder
// testar com uma matriz menor. ficar entrando
// com 25 valores toda vez que for testar é
// improdutivo e cansativo. uma macro é expandida
// quando o pré-processador lidar com seu arquivo
// (antes da compilação). todo lugar em que houver um
// N, vai haver a substituição pelo valor que está na frene
// nesse caso, 5.
#define N 5
int main() {
// boa prática, declare uma variável por linha.
int v[N][N]; // aqui estou usando a macro, vc pode
// trocar pelo 5 para entregar, ou deixar
// a macro. seu professor deve entender
// o que é (espero pelo menos).
int i;
int j;
int soma;
float media;
soma = 0;
for (i = 0; i < N; i++) { // usando a macro de novo
//for (i = 0; i < 5; i++) { // errado. precisa usar o j
// afinal, a matriz tem 2
// dimensões
for (j = 0; j < N; j++) {
//scanf("%d", v[i][j]); // errado. precisa do &
scanf("%d", &v[i][j]);
soma = soma + v[i][j];
}
}
//media = soma / 25 // errado, falta o ponto e vírgula
// se você quer a média como um float, vc precisa
// forçar que um dos operandos seja um float, pois
// se dividir inteiro com inteiro, o resultado será
// um inteiro. se for remover a macro, substitua
// (float) (N*N) por 25.0 (com o .0 para indicar que 25
// é um float).
// (float) (N*N) aqui o que acontece é o seguinte. N vai ser
// substituído por 5, então será a conta 5*5 que da 25,
// entretanto, 5 é inteiro e 25 também o é, então forçamos
// com um cast que 25 seja convertido em um float (25.0).
media = soma / (float) (N*N); // aqui estava faltando o ponto e vírgula
printf( "A media dos valores da matriz eh: %.2f\n", media );
for (i = 0; i < N; i++){ // o termo é itera, não intera.
// i denota linha na sua implementação
for (j=0; j < N; j++) { // j denota coluna, i fixo, j
// variando, percorre a linha
if ( v[i][j] > media ){
printf( "O valor na posicao %d-%d "
"esta acima da media.\n", i, j );
}
}
}
return 0;
}