Jump to content
Elyst

erro marado

Recommended Posts

Elyst

Bom dia.

Desculpem a linguagem mas não encontrei nenhum titulo mais próprio para este erro que tive...

Basicamente escrevi um programa que lia 100 notas de alunos e verificava quem passava e quem reprovava.

Depois disto tinha de criar uma cópia do programa anterior e adicionar uma função que calcula-se a média dos alunos que passaram.

Eu escrevi o código da função direitinho (por assim dizer) e lá fui compilar para ver se tinha algum erro.

Estou em linux a usar o Gedit e a consola para compilar. Tentei compilar pela primeira vez este programa e ele deu estes erros

ubuntu@ubuntu-desktop:~$ cd Documentos
ubuntu@ubuntu-desktop:~/Documentos$ gcc notas.c < notas.txt
notas1.c:3:74: warning: null character(s) ignored
notas1.c: In function ‘mediaNotas’:
notas1.c:7: error: ‘namx’ undeclared (first use in this function)
notas1.c:7: error: (Each undeclared identifier is reported only once
notas1.c:7: error: for each function it appears in.)

ok até aqui tudo "bem"... em vez de "nmax" escrevi "namx" por distração e os outros erros não os sei de cabeça mas passando os olhos novamente pelo código deveria resolver tudo num instante.

O problema surge agora, tinha fechado o gedit para copiar o ficheiro txt para a mesma pasta e depois compilei sem abrir o gedit.

Mas ao abrir novamente o meu ficheiro notas.txt heis o que surge:

椣据畬敤㰠瑳楤⹯㹨ਊ湩⁴敭楤乡瑯獡昨潬瑡渠瑯獡嵛‬湩⁴浮硡‬汦慯⁴潮慴慐獳条浥‬汦慯⁴洪摥慩)਀੻湩⁴慰獳㵡㬰ਊ昉牯渨慭㭸慮硭〾渻慭⵸⤭ऊ੻ 晩渨瑯偡獡慳敧㴼渠瑯獡湛慭⵸崱
ਉ ⁻洪摥慩⬠‽潮慴孳浮硡ㄭ㭝ऊ†瀠獡慳⬫਻ ੽紉⨊敭楤⽡瀽獡慳ऻ⼉猯浡⁥獡⨠敭楤⁡‽洪摥慩⼠瀠獡慳਻敲畴湲瀠獡慳਻੽椊瑮洠楡⡮਩੻椉瑮愠畬潮㵳ⰰ瀠獡慳〽਻昉潬瑡丠䍁ㅛ〰ⱝ丠孅〱崰‬䙎ㅛ〰ⱝ渠業Ɱ洠摥慩〽਻ऊ†潦⡲污湵獯愻畬潮㱳〱㬰污湵獯⬫਩ 笠ऊ††捳湡⡦┢≦‬並䍁慛畬潮嵳㬩⼠未慵摲⁡慶潬⁲慤愠⹶挠湯楴畮⁡潤⁳污湵獯⨠ਯ †猠慣普∨春Ⱒ☠䕎慛畬潮嵳㬩†⨯畧牡慤漠瘠污牯搠⁡潮慴搠⁥硥浡⁥潤⁳污湵獯⼪ऊ††䙎慛畬潮嵳㴠丠䍁慛畬潮嵳〪㐮⬠丠孅污湵獯⩝⸰㬶ऊ†੽猊慣普∨春Ⱒ☠浮湩㬩⼠未慵摲⁡⁡潮慴洠湩浩⩡ਯऊ⨯潦⡲污湵獯〽愻畬潮㱳〱㬰污湵獯⬫਩笉ऊ†⼯晩丨孆污湵獯㹝渽業⥮瀠獡慳⬫਻ 丠孆污湵獯㹝渽業‿慰獳⭡‫›㬰ऊ⩽ਯ敭楤乡瑯獡丨ⱆ⠠〱⤰‬浮湩‬洦摥慩㬩ऊ牰湩晴∨慰獳牡浡┠⁤污湵獯攠愠洠摥慩쌠₩⸥昲⠠潮慴搠⁥慰獳条浥┠㈮⥦湜Ⱒ慰獳ⱡ浮湩洬摥慩㬩瀊瑵档牡✨湜⤧਻੽

não faço nem sombra de ideia do que se passou aqui... mas se usar o compilador para este.... .... código ele dá os mesmos erros que inicialmente... o que me leva a acreditar que o código ainda lá esteja... só que agora não consigo perceber nada dele...

Gostava de ter alguma ajuda, mais para poder saber o que realmente se passou aqui...

Obg

cumps.


“The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.”(Seymour Cray)

Share this post


Link to post
Share on other sites
Baderous

No Gedit tenta ir a Tools -> Set Language e vê se consegues descobrir algo.

Share this post


Link to post
Share on other sites
Elyst

No Gedit tenta ir a Tools -> Set Language e vê se consegues descobrir algo.

não acontece nada...

experimentei abrir agora com o kate e já aparece o programa normal.

#include <stdio.h>

int mediaNotas(float notas[], int nmax, float notaPassagem, float *media)  
{
int passa=0;

for(nmax;namx>0;nmax--)
{
 if(notaPassagem <= notas[nmax-1]) 	
 { *media += notas[nmax-1];
   passa++;
 }
}
*media/=passa;		//same as *media = *media / passa;
return passa;
}

int main()
{
int alunos=0, passa=0;
float NAC[100], NE[100], NF[100], nmin, media=0;

  for(alunos;alunos<100;alunos++)
  {
    scanf("%f", &NAC[alunos]); /*guarda o valor da av. continua dos alunos */
    scanf("%f", &NE[alunos]);  /*guarda o valor da nota de exame dos alunos*/
    NF[alunos] = NAC[alunos]*0.4 + NE[alunos]*0.6;
  }

scanf("%f", &nmin); /*guarda a nota minima*/

/*for(alunos=0;alunos<100;alunos++)
{
  //if(NF[alunos]>=nmin) passa++;
  NF[alunos]>=nmin ? passa++ : 0;
}*/
mediaNotas(NF, (100), nmin, &media);
printf("passaram %d alunos e a media é %.2f (nota de passagem %.2f)\n",passa,nmin,media);
putchar('\n');
}

ainda tem por aí uns erros na função, só um minutinho e já reponho a versão a funcionar... espero eu...


“The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.”(Seymour Cray)

Share this post


Link to post
Share on other sites
falk0n

#include <stdio.h>

int mediaNotas(float notas[], int nmax, float notaPassagem, float *media)  
{
int passa=0;

for(nmax;namx>0;nmax--)
{
 if(notaPassagem <= notas[nmax-1]) 	
 { *media += notas[nmax-1];
   passa++;
 }
}
*media/=passa;		//same as *media = *media / passa;
return passa;
}

o "erro" anterior é nesta linha

for(nmax;namx>0;nmax--)

onde tens namx que deverá ser nmax

Boas programações

Share this post


Link to post
Share on other sites
Elyst

já tinha reparado, só dava 3 erros e eram todos devido a essa distracção.

Já corrigi mas ao correr por um ficheiro de texto com a informação a ser introduzida enganei-me e escrevi os resultados para esse ficheiro XD

Mas acho que está a funcionar bem.


“The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.”(Seymour Cray)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.