Logo Hardware.com.br
EricCartman
EricCartman Novo Membro Registrado
16 Mensagens 7 Curtidas

[Resolvido] Média das linhas de matrizes em C

#1 Por EricCartman 10/01/2018 - 22:03
[RESOLVIDO]

Eu estava treinando matrizes da qual estou aprendendo recentemente e estou com um problema no meu código, a primeira resposta dele (do 1° aluno, no caso) está certa, mas a segunda está incorreta e eu não consigo consertá-lo. Agradeceria muito se alguém pudesse me tirar essa dúvida sobre o que estou errando.

Aqui está o que fiz:

[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]

int main(){

int linha,coluna,i;
float nota[2][4];
float media[2],soma[1];

soma[0]=0;
soma[1]=0;

for(linha=0;linha<2;linha++){
for(coluna=0;coluna<4;coluna++){
printf("Digite a %d. nota do %d. aluno: ",coluna+1,linha+1);
scanf("%f",&nota[linha][coluna]);
}
}

for(linha=0;linha<2;linha++){
for(coluna=0;coluna<4;coluna++){
soma[linha]=soma[linha]+nota[linha][coluna];
}
}
for(i=0;i<2;i++){
media=soma/4;
}

for(i=0;i<2;i++){
printf("\n\nA media do %d. aluno e: %.1f \n",i+1,media);
}
printf("\n\n\n");
system("pause");
return(0);
}
cvv
cvv Veterano Registrado
603 Mensagens 75 Curtidas
#2 Por cvv
10/01/2018 - 23:28
muito tempo sem programar em C, mas vou arriscar um pitaco.

Dica 1: mesmo em códigos simples deixe em comentários a lógica do programa. Ajuda a entender o código no futuro ou a interpretação de terceiros.

Dica 2: dê nomes significativos às variáveis. A "nota" do aluno é uma variável chamada "coluna", e algum valor numérico que parece indicar uma ordem de alunos é chamada "linha".

Dica 3: no exemplo passado... se os alunos estão ordenados, faz mais sentido usar um vetor ao invés de matriz.

Estou quase re-escrevendo esse código aí e testando aqui... mas tenho que configurar compilador e tal, big_green.png
EricCartman
EricCartman Novo Membro Registrado
16 Mensagens 7 Curtidas
#3 Por EricCartman
10/01/2018 - 23:41
cvv disse:
muito tempo sem programar em C, mas vou arriscar um pitaco.

Dica 1: mesmo em códigos simples deixe em comentários a lógica do programa. Ajuda a entender o código no futuro ou a interpretação de terceiros.

Dica 2: dê nomes significativos às variáveis. A "nota" do aluno é uma variável chamada "coluna", e algum valor numérico que parece indicar uma ordem de alunos é chamada "linha".

Dica 3: no exemplo passado... se os alunos estão ordenados, faz mais sentido usar um vetor ao invés de matriz.

Estou quase re-escrevendo esse código aí e testando aqui... mas tenho que configurar compilador e tal, big_green.png



Obrigado por responder. No caso coloquei a nota como coluna e o aluno como linha. Mesmo tendo mais sentido usar vetor ao invés de matriz nesse programa, eu não usei vetor porque já sei fazê-lo assim e quero treinar matriz mesmo.
cvv
cvv Veterano Registrado
603 Mensagens 75 Curtidas
#4 Por cvv
11/01/2018 - 05:02
Beleza, como prometido resolvi brincar um pouco com C.

Estou usando o compilador grátis da Digital Mars: dmc.exe.

Um simples editor de texto puro: notepad++.

E um simples batch de compilação: compile-with-dmc.cmd.

compile-with-dmc.cmd:
[code=DOS]@echo off & mode 100, 25
REM O eco de comandos foi desativado e o tamanho da janela do cmd redimensionado.

echo.
echo.
set "_ext=c"
REM "c" é a extensão do arquivo que iremos pesquisar em disco.

for %%f in (*.%_ext%) do set "_src=%%f"
REM O laço busca por arquivos terminados em ".c" dentro do diretório do qual o script é executado.
REM E por fim o laço faz busca alfabética salvando a última ocorrência na variável %_src%

echo.File found: %_src%
REM Mostra o arquivo encontrado.

set /P _src=Source file:
REM Dê enter apenas se o arquivo encontrado for o correto ou digite o nome do arquivo que enviar para compilação.

"E:\Fernando\Installed\dmc\bin\dmc.exe" %_src% > %_src:~0,-2%.out
REM Endereço real do compilador, endereço relativo do código fonte e redirecionamento das mensagens para um arquivo.

type %_src:~0,-2%.out
REM Simples exibição da saída do compilador no CMD. Efeito semelhante do comando "tee" do GNU/Linux.

echo.
echo.
timeout /nobreak /t 15
REM Simples contador de 15 segundos.

exit /b
REM Comando para fechar o script sem fechar o cmd que o executou.

REM Fonte de pesquisa de detalhes que sempre esqueço:
REM https://ss64.com/nt/syntax-args.html
REM https://ss64.com/nt/syntax-substring.html[/code]

Links: http://www.digitalmars.com/download/freecompiler.html
Links: https://notepad-plus-plus.org/download/

Copiei o código apresentado, re-alinhei manualmente a identação do mesmo e mandei compilar.
[code=C]byEric.c(27) : Error: illegal operand types
Had: float *
media=soma/4;
^[/code]

Erro de compilação. Vamos estudar esse erro.

O que é "media" e o que é "soma"?
[code=C]float media[2],soma[1];[/code]

"media" é um vetor de floats.

"soma" é outro vetor de floats.

Hum, vamos re-interpretar o código: media=soma/4;

Não faz sentido dividir um vetor por 4. Nós podemos dividir um número dentro deste vetor. Logo, preciso de uma declaração indexada. Sem se preocupar com lógica, apenas sintaxe, podemos re-escrever assim:
[code=C]media[0]=(soma[0]/4);[/code]

E agora o código compila. Sinal que não há erros de compilação. Mas ainda pode haver erros de lógica.

Ainda nesta linha, gostaria de perguntar:

O que é "/" e o que é "4"?

"/" irei chamar de literal de divisão.

"4" irei chamar de literal de inteiro.

É importante entender que os tipos de dados utilizados na operação de divisão influenciam no comportamento da divisão.

Logo se queremos fazer uma divisão fracionária, é melhor indicarmos explicitamente os valores como números fracionários. Por exemplo, usar o literal de float "4.0".

Mais nos capítulos 3.4 e 3.12 da documentação:

"Integer division of positive values truncates towards zero, so 5/3 is 1. However, if either operand is negative, the direction of rounding is implementation-defined."

"In that example, since y and z are both integers, integer division is performed, and even though x is a floating-point variable, it receives the value 2. Explicitly casting the result of the division to float does no good, because the computed value of y/z is already 2.

To fix this problem, you need to convert one of the operands to a floating-point type before the division takes place"

Fonte: https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html

Por isso, nesta linha, seria mais interessante que ela fosse re-escrita assim:
[code=C]media[0]=(soma[0]/4.0);[/code]

Novamente o código compila.

Por fim, abaixo está minha revisão do exercício.

"código refeito inclusive em lógica"

[code=C]
/** 2018/01/11 05:38
* código baseado no trabalho aparesentado por EricCartman em:
*
* https://www.hardware.com.br/comunidade/media-matrizes/1473731/
* (versão simples)
*/

/*
Vamos imaginar uma Tabela de Alunos, contendo:
1x código por aluno: tipo real, fornecida;
2x notas por aluno: tipo real, fornecida;
1x média do aluno: tipo real, calculada;

|---------------------|
|COD-NOTA1-NOTA2-MEDIA|
|---|-----|-----|-----|
|1.0| 10.0| 10.0| 10.0|
|2.0| 5.0| 5.0| 5.0|
|3.0| 10.0| 4.0| 7.0|
|4.0| 3.0| 7.2| 5.1|
|5.0| 3.0| 2.8| 2.9|
|---------------------|

Desafio: faça a leitura das variáveis;
Desafio: faça o cálculo da média posteriormente à leitura completa da tabela;

Vamos imaginar agora uma simples variável:
1 média de todos os alunos: tipo real, calculada;

|---------------------|
|COD-NOTA1-NOTA2-MEDIA|
|---|-----|-----|-----|
|1.0| 10.0| 10.0| 10.0|
|2.0| 5.0| 5.0| 5.0|
|3.0| 10.0| 4.0| 7.0|
|4.0| 3.0| 7.2| 5.1|
|5.0| 3.0| 2.8| 2.9|
|---------------------|
| MEDIA-GERAL: 6.0|
|---------------------|

Desafio: faça o cálculo da média-geral;

*/

#include
#include
#include

int main(){
// |---------------------| |-----------------------|
// |COD-NOTA1-NOTA2-MEDIA| | TABELA EM MEMÓRIA 5x4 |
// |---|-----|-----|-----| |-----|-----|-----|-----|
// |1.0| 10.0| 10.0| 10.0| | 0x0 | 0x1 | 0x2 | 0x3 |
// |2.0| 5.0| 5.0| 5.0| | 1x0 | 1x1 | 1x2 | 1x3 |
// |3.0| 10.0| 2.0| 6.0| | 2x0 | 2x1 | 2x2 | 2x3 |
// |4.0| 4.0| 7.0| 5.5| | 3x0 | 3x1 | 3x2 | 3x3 |
// |5.0| 3.0| 2.8| 2.9| | 4x0 | 4x1 | 4x2 | 4x3 |
// |---------------------| |-----------------------|
#define quantidadeDeAlunos 5
#define quantidadeDeCampos 4
float tabelaDeAlunos[quantidadeDeAlunos][quantidadeDeCampos];
int indicei, indicej;
float codigo, nota1, nota2, media; // nenhuma das variáveis desta linha são
// necessárias mas elas ajudam a ler
// melhor o código.
// |---------------------|
// |COD-NOTA1-NOTA2-MEDIA|
// |---|-----|-----|-----|
// |1.0| 10.0| 10.0| 10.0|
// |2.0| 5.0| 5.0| 5.0|
// |3.0| 10.0| 4.0| 7.0|
// |4.0| 3.0| 7.2| 5.1|
// |5.0| 3.0| 2.8| 2.9|
// |---------------------|
// | MEDIA-GERAL: 6.0|
// |---------------------|
float mediaGeral;
// Desafio: faça a leitura das variáveis;
for (indicei=0;indicei // inicializa o índice j
indicej=0;

// vetor: codigo, nota1, nota2, media;
printf("Digite o codigo do aluno %3d: ",indicei+1);
scanf("%f",&codigo);
tabelaDeAlunos[indicei][indicej++]=codigo;

printf("Aluno %3.1f digite a sua nota1: ",codigo);
scanf("%f",&nota1);
tabelaDeAlunos[indicei][indicej++]=nota1;

printf("Aluno %3.1f digite a sua nota2: ",codigo);
scanf("%f",&nota2);
tabelaDeAlunos[indicei][indicej++]=nota2;

printf("\n");
}
// Desafio: faça o cálculo da média por aluno;
for (indicei=0;indicei media=tabelaDeAlunos[indicei][1]+tabelaDeAlunos[indicei][2];
media=media/2.0;
tabelaDeAlunos[indicei][3]=media;
}

// Desafio: faça o cálculo da média-geral;
mediaGeral=0.0;
for (indicei=0;indicei mediaGeral=mediaGeral+tabelaDeAlunos[indicei][3];
}
mediaGeral=mediaGeral/(float)quantidadeDeAlunos;

// Desafio Bônus: exiba na tela toda a tabela;
char mystring[80];
char numeroFormatado[5];
printf("|-----------------------|\n");
printf("|---TABELA-DOS-ALUNOS---|\n");
printf("|-----------------------|\n");
printf("| COD | N01 | N02 | MDA |\n");
printf("|-----|-----|-----|-----|\n");
for (indicei=0;indicei strcpy(mystring,"|");
for (indicej=0;indicej sprintf(numeroFormatado,"%4.1f",tabelaDeAlunos[indicei][indicej]);
strcat(mystring,numeroFormatado);
strcat(mystring," |");
}
strcat(mystring,"\n");
printf("%s",mystring);
}
printf("|-----|-----|-----|-----|\n");
printf("| MEDIA-GERAL: %-4.1f|\n",mediaGeral);
printf("|-----------------------|\n");
/** FIM DO BÔNUS **/

system("pause");
return 0;
}

/**
* Compilador usados: Digital Mars C Compiler
* http://www.digitalmars.com/download/freecompiler.html
* http://ftp.digitalmars.com/Digital_Mars_C++/Patch/dm857c.zip
*
* Editor de texto usado: Notepad++
* https://notepad-plus-plus.org/download/
*
* Referências da linguagem:
* https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html
* http://www.cplusplus.com/reference/
* http://en.cppreference.com/w/c/language
* https://www-s.acm.illinois.edu/webmonkeys/book/c_guide/
*
* Tutoriais:
* http://publications.gbdirect.co.uk/c_book/
* http://www.crasseux.com/books/ctutorial/
* https://www.cprogramming.com/tutorial.html
* https://www.geeksforgeeks.org/c/
* http://www.learn-c.org
* http://www.pucsp.br/~so-comp/cursoc/c.html
*
* Outros compiladores gratuitos:
* Clang.LLVM: http://releases.llvm.org/download.html
* GCC.......: https://gcc.gnu.org/install/binaries.html
* TinyC.TCC.: https://bellard.org/tcc/
*
* Outros editores de texto gratuitos:
* ATOM......: https://atom.io
* Brackets..: http://brackets.io
* Geany.....: https://www.geany.org
*
* IDEs gratuitas:
* eclipse...: https://eclipse.org/ide/
* NetBeans..: https://netbeans.org
* CodeLite..: https://codelite.org
* CodeBlocks: http://codeblocks.org
*
*/

[/code]


abraços
EricCartman
EricCartman Novo Membro Registrado
16 Mensagens 7 Curtidas
#5 Por EricCartman
15/01/2018 - 03:26
cvv disse:
Beleza, como prometido resolvi brincar um pouco com C.

Estou usando o compilador grátis da Digital Mars: dmc.exe.

Um simples editor de texto puro: notepad++.

E um simples batch de compilação: compile-with-dmc.cmd.

compile-with-dmc.cmd:
[code=DOS]@echo off & mode 100, 25
REM O eco de comandos foi desativado e o tamanho da janela do cmd redimensionado.

echo.
echo.
set "_ext=c"
REM "c" é a extensão do arquivo que iremos pesquisar em disco.

for %%f in (*.%_ext%) do set "_src=%%f"
REM O laço busca por arquivos terminados em ".c" dentro do diretório do qual o script é executado.
REM E por fim o laço faz busca alfabética salvando a última ocorrência na variável %_src%

echo.File found: %_src%
REM Mostra o arquivo encontrado.

set /P _src=Source file:
REM Dê enter apenas se o arquivo encontrado for o correto ou digite o nome do arquivo que enviar para compilação.

"E:\Fernando\Installed\dmc\bin\dmc.exe" %_src% > %_src:~0,-2%.out
REM Endereço real do compilador, endereço relativo do código fonte e redirecionamento das mensagens para um arquivo.

type %_src:~0,-2%.out
REM Simples exibição da saída do compilador no CMD. Efeito semelhante do comando "tee" do GNU/Linux.

echo.
echo.
timeout /nobreak /t 15
REM Simples contador de 15 segundos.

exit /b
REM Comando para fechar o script sem fechar o cmd que o executou.

REM Fonte de pesquisa de detalhes que sempre esqueço:
REM https://ss64.com/nt/syntax-args.html
REM https://ss64.com/nt/syntax-substring.html[/code]

Links: http://www.digitalmars.com/download/freecompiler.html
Links: https://notepad-plus-plus.org/download/

Copiei o código apresentado, re-alinhei manualmente a identação do mesmo e mandei compilar.
[code=C]byEric.c(27) : Error: illegal operand types
Had: float *
media=soma/4;
^[/code]

Erro de compilação. Vamos estudar esse erro.

O que é "media" e o que é "soma"?
[code=C]float media[2],soma[1];[/code]

"media" é um vetor de floats.

"soma" é outro vetor de floats.

Hum, vamos re-interpretar o código: media=soma/4;

Não faz sentido dividir um vetor por 4. Nós podemos dividir um número dentro deste vetor. Logo, preciso de uma declaração indexada. Sem se preocupar com lógica, apenas sintaxe, podemos re-escrever assim:
[code=C]media[0]=(soma[0]/4);[/code]

E agora o código compila. Sinal que não há erros de compilação. Mas ainda pode haver erros de lógica.

Ainda nesta linha, gostaria de perguntar:

O que é "/" e o que é "4"?

"/" irei chamar de literal de divisão.

"4" irei chamar de literal de inteiro.

É importante entender que os tipos de dados utilizados na operação de divisão influenciam no comportamento da divisão.

Logo se queremos fazer uma divisão fracionária, é melhor indicarmos explicitamente os valores como números fracionários. Por exemplo, usar o literal de float "4.0".

Mais nos capítulos 3.4 e 3.12 da documentação:

"Integer division of positive values truncates towards zero, so 5/3 is 1. However, if either operand is negative, the direction of rounding is implementation-defined."

"In that example, since y and z are both integers, integer division is performed, and even though x is a floating-point variable, it receives the value 2. Explicitly casting the result of the division to float does no good, because the computed value of y/z is already 2.

To fix this problem, you need to convert one of the operands to a floating-point type before the division takes place"

Fonte: https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html

Por isso, nesta linha, seria mais interessante que ela fosse re-escrita assim:
[code=C]media[0]=(soma[0]/4.0);[/code]

Novamente o código compila.

Por fim, abaixo está minha revisão do exercício.

"código refeito inclusive em lógica"

[code=C]
/** 2018/01/11 05:38
* código baseado no trabalho aparesentado por EricCartman em:
*
* https://www.hardware.com.br/comunidade/media-matrizes/1473731/
* (versão simples)
*/

/*
Vamos imaginar uma Tabela de Alunos, contendo:
1x código por aluno: tipo real, fornecida;
2x notas por aluno: tipo real, fornecida;
1x média do aluno: tipo real, calculada;

|---------------------|
|COD-NOTA1-NOTA2-MEDIA|
|---|-----|-----|-----|
|1.0| 10.0| 10.0| 10.0|
|2.0| 5.0| 5.0| 5.0|
|3.0| 10.0| 4.0| 7.0|
|4.0| 3.0| 7.2| 5.1|
|5.0| 3.0| 2.8| 2.9|
|---------------------|

Desafio: faça a leitura das variáveis;
Desafio: faça o cálculo da média posteriormente à leitura completa da tabela;

Vamos imaginar agora uma simples variável:
1 média de todos os alunos: tipo real, calculada;

|---------------------|
|COD-NOTA1-NOTA2-MEDIA|
|---|-----|-----|-----|
|1.0| 10.0| 10.0| 10.0|
|2.0| 5.0| 5.0| 5.0|
|3.0| 10.0| 4.0| 7.0|
|4.0| 3.0| 7.2| 5.1|
|5.0| 3.0| 2.8| 2.9|
|---------------------|
| MEDIA-GERAL: 6.0|
|---------------------|

Desafio: faça o cálculo da média-geral;

*/

#include
#include
#include

int main(){
// |---------------------| |-----------------------|
// |COD-NOTA1-NOTA2-MEDIA| | TABELA EM MEMÓRIA 5x4 |
// |---|-----|-----|-----| |-----|-----|-----|-----|
// |1.0| 10.0| 10.0| 10.0| | 0x0 | 0x1 | 0x2 | 0x3 |
// |2.0| 5.0| 5.0| 5.0| | 1x0 | 1x1 | 1x2 | 1x3 |
// |3.0| 10.0| 2.0| 6.0| | 2x0 | 2x1 | 2x2 | 2x3 |
// |4.0| 4.0| 7.0| 5.5| | 3x0 | 3x1 | 3x2 | 3x3 |
// |5.0| 3.0| 2.8| 2.9| | 4x0 | 4x1 | 4x2 | 4x3 |
// |---------------------| |-----------------------|
#define quantidadeDeAlunos 5
#define quantidadeDeCampos 4
float tabelaDeAlunos[quantidadeDeAlunos][quantidadeDeCampos];
int indicei, indicej;
float codigo, nota1, nota2, media; // nenhuma das variáveis desta linha são
// necessárias mas elas ajudam a ler
// melhor o código.
// |---------------------|
// |COD-NOTA1-NOTA2-MEDIA|
// |---|-----|-----|-----|
// |1.0| 10.0| 10.0| 10.0|
// |2.0| 5.0| 5.0| 5.0|
// |3.0| 10.0| 4.0| 7.0|
// |4.0| 3.0| 7.2| 5.1|
// |5.0| 3.0| 2.8| 2.9|
// |---------------------|
// | MEDIA-GERAL: 6.0|
// |---------------------|
float mediaGeral;
// Desafio: faça a leitura das variáveis;
for (indicei=0;indicei // inicializa o índice j
indicej=0;

// vetor: codigo, nota1, nota2, media;
printf("Digite o codigo do aluno %3d: ",indicei+1);
scanf("%f",&codigo);
tabelaDeAlunos[indicei][indicej++]=codigo;

printf("Aluno %3.1f digite a sua nota1: ",codigo);
scanf("%f",&nota1);
tabelaDeAlunos[indicei][indicej++]=nota1;

printf("Aluno %3.1f digite a sua nota2: ",codigo);
scanf("%f",&nota2);
tabelaDeAlunos[indicei][indicej++]=nota2;

printf("\n");
}
// Desafio: faça o cálculo da média por aluno;
for (indicei=0;indicei media=tabelaDeAlunos[indicei][1]+tabelaDeAlunos[indicei][2];
media=media/2.0;
tabelaDeAlunos[indicei][3]=media;
}

// Desafio: faça o cálculo da média-geral;
mediaGeral=0.0;
for (indicei=0;indicei mediaGeral=mediaGeral+tabelaDeAlunos[indicei][3];
}
mediaGeral=mediaGeral/(float)quantidadeDeAlunos;

// Desafio Bônus: exiba na tela toda a tabela;
char mystring[80];
char numeroFormatado[5];
printf("|-----------------------|\n");
printf("|---TABELA-DOS-ALUNOS---|\n");
printf("|-----------------------|\n");
printf("| COD | N01 | N02 | MDA |\n");
printf("|-----|-----|-----|-----|\n");
for (indicei=0;indicei strcpy(mystring,"|");
for (indicej=0;indicej sprintf(numeroFormatado,"%4.1f",tabelaDeAlunos[indicei][indicej]);
strcat(mystring,numeroFormatado);
strcat(mystring," |");
}
strcat(mystring,"\n");
printf("%s",mystring);
}
printf("|-----|-----|-----|-----|\n");
printf("| MEDIA-GERAL: %-4.1f|\n",mediaGeral);
printf("|-----------------------|\n");
/** FIM DO BÔNUS **/

system("pause");
return 0;
}

/**
* Compilador usados: Digital Mars C Compiler
* http://www.digitalmars.com/download/freecompiler.html
* http://ftp.digitalmars.com/Digital_Mars_C++/Patch/dm857c.zip
*
* Editor de texto usado: Notepad++
* https://notepad-plus-plus.org/download/
*
* Referências da linguagem:
* https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html
* http://www.cplusplus.com/reference/
* http://en.cppreference.com/w/c/language
* https://www-s.acm.illinois.edu/webmonkeys/book/c_guide/
*
* Tutoriais:
* http://publications.gbdirect.co.uk/c_book/
* http://www.crasseux.com/books/ctutorial/
* https://www.cprogramming.com/tutorial.html
* https://www.geeksforgeeks.org/c/
* http://www.learn-c.org
* http://www.pucsp.br/~so-comp/cursoc/c.html
*
* Outros compiladores gratuitos:
* Clang.LLVM: http://releases.llvm.org/download.html
* GCC.......: https://gcc.gnu.org/install/binaries.html
* TinyC.TCC.: https://bellard.org/tcc/
*
* Outros editores de texto gratuitos:
* ATOM......: https://atom.io
* Brackets..: http://brackets.io
* Geany.....: https://www.geany.org
*
* IDEs gratuitas:
* eclipse...: https://eclipse.org/ide/
* NetBeans..: https://netbeans.org
* CodeLite..: https://codelite.org
* CodeBlocks: http://codeblocks.org
* eclipse...: https://eclipse.org/ide/
* eclipse...: https://eclipse.org/ide/
*
*/

[/code]


abraços


Depois de vários dias, eu finalmente vi onde estava o erro. Eu atribui os vetores: pra media[1] e pra soma[1], sendo que eu tinha que atribuir 2 para ambos. Agora funciona normalmente, troquei para vários valores e deu certo. Obrigado pela ajuda.

Código consertado:

[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]

int main(){

int linha,coluna,i;
float nota[2][4];
float media[2],soma[2];


for(linha=0;linha<2;linha++){
soma[linha]=0;
}

for(linha=0;linha<2;linha++){
for(coluna=0;coluna<4;coluna++){
printf("Digite a %d. nota do %d. aluno: ",coluna+1,linha+1);
scanf("%f",&nota[linha][coluna]);
}
}

for(linha=0;linha<2;linha++){
for(coluna=0;coluna<4;coluna++){
soma[linha]=soma[linha]+nota[linha][coluna];
}
}

for(i=0;i<2;i++){
media=soma/4.0;
}

for(i=0;i<2;i++){
printf("\n\nA media do %d. aluno e: %.1f \n",i+1,media);
}
printf("\n\n\n");
system("pause");
return(0);
}
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal