Gå til innhold

Hva er feil i dette C programmet?


Anbefalte innlegg

Har et lite problem med et c program jeg lager. Når jeg kjører programmet hopper den over det som står med uthevet skrift under, noe ikke jeg kan begripe.

Programmet skal jo stoppe opp og vente på inntasting når det kommer en scanf.

FORSLAG???

 

 

#include <stdio.h>

#define SIZE 10

 

int main()

{

int teller , sumAlder = 0;

int elevAlder[10];

float gjennomsnittsAlder;

char avbryt = 'j';

char endring;

 

for (teller= 0 ; teller < SIZE ; teller++)

{

printf("Tast inn alder til student nr %d\n" , teller+1);

scanf("%d" , &elevAlder[teller]);

 

sumAlder = sumAlder + elevAlder[teller];

}

 

gjennomsnittsAlder = (float)sumAlder/(SIZE);

 

printf("\nGjennomsnittsalder: %.2f\n\n" , gjennomsnittsAlder);

 

while (avbryt != 'n')

{

printf("Angi index nr pa element i tabellen du vil se verdien av:\n");

scanf("%d" , &teller);

printf("\nelement nr %d har verdien %d" , teller , elevAlder[teller]);

 

printf("\n\nOnsker du a endre verdien? (J/N)\n");

scanf("%c" , &endring);

 

if ((endring == 'j') || (endring == 'J'))

{

printf("Angi ny verdi pa element nr %d" , teller);

scanf("%d" , &elevAlder[teller]);

 

gjennomsnittsAlder = (float)sumAlder/(SIZE);

 

printf("Nytt gjennomsnitt etter endring er %f" , gjennomsnittsAlder);

}

 

printf("Onsker du a sjekke et element til tast alt annet enn n");

scanf("%c" , &avbryt);

 

 

}

 

 

getchar();

return 0;

 

 

}

Lenke til kommentar
Videoannonse
Annonse

Her har du en versjon som bruker den mere "safe" fgets(3)

 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define SIZE 10

int
main(int argc, char **argv)
{
 int teller , sumAlder = 0;
 int elevAlder[10];
 char tmp_alder[10][5];
 float gjennomsnittsAlder;
 char avbryt[2];
 char endring[2];

 for (teller= 0; teller < SIZE; teller++)
   {
     printf("Tast inn alder til student nr %d\n" , teller+1);

     fgets(tmp_alder[teller], 5, stdin);
     elevAlder[teller] = atoi(tmp_alder[teller]);

     sumAlder = sumAlder + elevAlder[teller];
   }

 gjennomsnittsAlder = (float)sumAlder/(SIZE);

 printf("\nGjennomsnittsalder: %.2f\n\n" , gjennomsnittsAlder);

 avbryt[0] = 'j';

 while (avbryt[0] != 'n')
   {
     printf("Angi index nr pa element i tabellen du vil se verdien av:\n");
     fgets(tmp_alder[0], 5, stdin);
     teller = atoi(tmp_alder[0]);

     printf("\nelement nr %d har verdien %d\n" , teller , elevAlder[teller-1]);

     printf("\nOnsker du a endre verdien? (J/N)\n");

     fgets(endring, 3, stdin);

     if ((endring[0] == 'j') || (endring[0] == 'J'))
{
  printf("Angi ny verdi pa element nr %d: " , teller);
  sumAlder -= elevAlder[teller-1];

  fgets(tmp_alder[0], 5, stdin);
  elevAlder[teller-1] = atoi(tmp_alder[0]);
  sumAlder += elevAlder[teller-1];
  
  gjennomsnittsAlder = (float)sumAlder/(SIZE);

  printf("Nytt gjennomsnitt etter endring er %f\n" , gjennomsnittsAlder);
}

     printf("Onsker du a sjekke et element til tast alt annet enn n\n");
     fgets(avbryt, 3, stdin);


   }

 return 0;


}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...