Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] mi serve aiuto

    ciao a tutti avrei bisogno di un grandissimo aiuto spero sia la sezione giusta..

    devo realizzare un programma che prenda in input vari dati tramite delle strutture dopo di che salvarle in un file.. il programma l'ho fatto e logicamente sembra corretto solo che ogni volta mi da la prima riga sballata(non di termini immessi da me) e dopo la seconda iterazione crashia e non riesco a capire il perchè.. qualcuno puo gentilmente darmi una mano??? il codice è questo:

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    struct Insegnamenti {
           int CD_Ins;
           char Nome[40];
           int Anno;
           int Sem;
           int CFU;};
           
    int main()
    {
     
     FILE *Insegnamento;
     
     int i;
     i=1;
     struct Insegnamenti Pos[i];
     if ((Insegnamento = fopen("Insegnamenti.bak", "wt")) == NULL)
          printf("\nNon posso aprire il file di input.\n");                         
     else
         while(Pos[i].CD_Ins!=-1){
                      printf("dammi il codice dell'insegnamento\n");
                      scanf("%d", &Pos[i].CD_Ins);
                      
                      if(Pos[i].CD_Ins!=-1){
                                            printf("Immeti il nome dell'insegnamento\n");
                                            scanf("%s",&Pos[i].Nome);
                      
                      do{
                         printf("Inserisci l'anno del corso\n");
                         scanf("%d",&Pos[i].Anno);
                         if(Pos[i].Anno>3)
                             printf("Gli anni sono 3 non %d\n\n",Pos[i].Anno);}
                      while(Pos[i].Anno>3);
                      
                      do{
                         printf("A che semestre appartiene\n");
                         scanf("%d",&Pos[i].Sem);
                         if(Pos[i].Sem>2)
                             printf("I semestri sono 2\n\n");}
                      while(Pos[i].Sem>2);
                      
                      do{
                         printf("inserisce i CFU\n");
                         scanf("%d", &Pos[i].CFU);
                         if(Pos[i].CFU>18)
                             printf("Non ti sembrano un po troppi??\n\n");}
                      while(Pos[i].CFU>18);
                      
                      printf("%5d%10s%5d%5d%5d\n",Pos[i].CD_Ins,Pos[i].Nome,Pos[i].Anno,Pos[i].Sem,Pos[i].CFU);
                      
                      fprintf(Insegnamento,"%5d%10s%5d%5d%5d\n",Pos[i].CD_Ins,Pos[i].Nome,Pos[i].Anno,Pos[i].Sem,Pos[i].CFU);
                      
                      }}
     fclose(Insegnamento);
    
    
     system("PAUSE");
    }
    il compilatore usato e dev-c spero che qualcuno mi possa aiutare dato che sto uscendo matto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Dichiari un solo elemento strutturato con

    struct Insegnamenti Pos[i];

    dato che i = 1 e poi utilizzi direttamente l'indice 1 ... ti ricordo che i vettori in C lavorano in base 0 ...

    Inoltre nel ciclo

    while(Pos[i].CD_Ins!=-1)

    i non varia mai ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    chiedo scusa ho dimenticato i++ fra queste 2 linee

    fprintf(Insegnamento,"%5d%10s%5d%5d%5d\n",Pos[i].CD_Ins,Pos[i].Nome,Pos[i].Anno,Pos[i].Sem,Pos[i].CFU);
    i++;
    }}
    fclose(Insegnamento);

    scusa mo non ho capito bene che intendi con definisco una sola struttura se mi diresti come modificarlo mi faresti un grosso favore..perchè non ho la più pallida idea di che cosa stai parlando...

    ti chiedo scusa per il disturbo

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Leggere il regolamento prima di postare:

    1) Titolo non conforme
    2) Mancano i tag code nel codice.

    Sistemo io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.