Esercizio che mi sono inventato, ma c'è un problema :|

di il
17 risposte

Esercizio che mi sono inventato, ma c'è un problema :|

Praticamente volevo creare un programmino in C che aprisse un file.txt, leggesse dei voti seguiti dal loro peso scritti in questo modo: 30 6 28 12 29 6... poi chiedesse se ci fossero altri voti, li leggesse da riga di comando col loro peso, li aggiungesse alla lista nel file.txt e calcolasse la media pesata di tutti. L'ho strutturato così, e si compila senza errori, il problema è che quando lo faccio partire non fa niente e quando vado a riaprire il file.txt coi voti, quello risulta vuoto e li devo riscrivere, in pratica me li cancella.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

float MediaPesata(int [], int [], int); //dichiarazione funzione

float MediaPesata(int peso[], int numero[],int N) //funzione generica che calcola la media
{
int i,s,a;
float media;
a=0;
s=0;
for (i=0; i<N; i++){
s=s+numero*peso;
a=a+peso;
}
media=(float)(s)/(float)(a);
return(media);
}

int main() //programma principale
{
FILE *ptrFile;
float mediap;
int i,N,*pes,*voto;
char c,s[2];
if ((ptrFile=fopen("Voti.txt","w"))==NULL){printf("Impossibile aprire il file\n"); return(-1);}
if ((pes=(int*)malloc(sizeof(int)))==NULL){
printf("Impossibile allocare la memoria\n"); return(-1);}
if ((voto=(int*)malloc(sizeof(int)))==NULL){
printf("Impossibile allocare la memoria\n"); return(-1);}
i=0;

while (c!=EOF){
fscanf(ptrFile,"%d %d%c", &voto, &pes, c);
i++;
if ((pes=(int*)realloc(pes,(i+1)*sizeof(int)))==NULL){
printf("Impossibile allocare la memoria\n"); return(-1);}
if ((voto=(int*)realloc(voto,(i+1)*sizeof(int)))==NULL){
printf("Impossibile allocare la memoria\n"); return(-1);}
}

do{
printf("Vuoi inserire un altro voto? (si-no)\n");
scanf("%s",s);
if (strcmp(s,"no")!=0){ //se s è diverso da "no"
i++;
if ((voto=(int*)realloc(voto,(i+1)*sizeof(int)))==NULL){
printf("Impossibile allocare la memoria\n"); return(-1);}
if ((pes=(int*)realloc(pes,(i+1)*sizeof(int)))==NULL){
printf("Impossibile allocare la memoria\n"); return(-1);}
printf("Inserisci il voto\n");
scanf("%d",&voto);
printf("Inserisci il suo peso\n");
scanf("%d",&pes);
fprintf(ptrFile,"%d %d",voto, pes);
}
}while(strcmp(s,"si")==0);

mediap=MediaPesata(pes,voto,i);
printf("La media pesata e': %.2f\n",mediap);
system("pause");
free(voto);
free(pes);
return(0);
}


Grazie a chiunque saprà darmi una mano...

17 Risposte

  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    e si compila senza errori
    fscanf(ptrFile,"%d %d%c", &voto[i], &pes[i], c);
    Quello sopra è un errore!

    Vedi tu devi metterti nei panni di chi ti aiuta,secondo te cosa potrà mai capire uno dal codice che hai postato?
    Esistono i tag code dove tu possa mettere dentro il tuo codice,è quel pulsantino con scritto codice.
    c'è un'altro problema ancora piu enorme,l'uso dell'ide dev-ciofeca++.
    Disinstallalo e installati Code::Blocks o altro che ti sia simpatico.
    Non esistono motivazioni per usare tale ambiente se non quella di non voler imparare a programmare.

    per finire dovresti comprarti un libro e leggerlo soprattutto nella sezione fopen.
    Li vedrai che per aprire un file in lettura e scrittura dovrai usare "r+" e non "w"
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    • Grazie di avermi comunque risposto, lo so non sono pratico di queste cose, spero di impararle in fretta. Ho messo il codice nel tag ora, correggendo anche quei due errori che mi hai segnalato (che comunque durante la compilazione non mi segnalava, ho provato un sacco di volte e non dava nè errori nè warning...), ma ho visto che non viene formattato come l'avevo scritto sul compilatore facendo copia-incolla... cioè l'indentazione è diversa, c'è qualche modo per mantenerla uguale facendo copia-incolla?
    #include <stdio.h> 
    #include <stdlib.h>
    #include <string.h>
    
    float MediaPesata(int [], int [], int);   //dichiarazione funzione 
     
    float MediaPesata(int peso[], int numero[],int N)   //funzione generica che calcola la media 
    { 
      int i,s,a;
      float media;
      a=0;
      s=0;
      for (i=0; i<N; i++){
        s=s+numero[i]*peso[i];
        a=a+peso[i];
      }
      media=(float)(s)/(float)(a);
      return(media);
    }
    
    
    int main()            
    {
      FILE *ptrFile;
      float mediap;
      int i,N,*pes,*voto;
      char c,s[2];
      if ((ptrFile=fopen("Voti.txt","r+"))==NULL){printf("Impossibile aprire il file\n"); return(-1);}    
      if ((pes=(int*)malloc(sizeof(int)))==NULL){                                                        
        printf("Impossibile allocare la memoria\n"); return(-1);}                                         
      if ((voto=(int*)malloc(sizeof(int)))==NULL){                                                        
        printf("Impossibile allocare la memoria\n"); return(-1);}
      i=0;	
      while (c!=EOF){
        fscanf(ptrFile,"%d %d%c", &voto[i], &pes[i], &c); 
        i++;   
        if ((pes=(int*)realloc(pes,(i+1)*sizeof(int)))==NULL){                     
          printf("Impossibile allocare la memoria\n"); return(-1);}                 
        if ((voto=(int*)realloc(voto,(i+1)*sizeof(int)))==NULL){                    
          printf("Impossibile allocare la memoria\n"); return(-1);}
      }
      do{
        printf("Vuoi inserire un altro voto? (si-no)\n");
    	scanf("%s",s);
    	if (strcmp(s,"no")!=0){             
    	  i++;
    	  if ((voto=(int*)realloc(voto,(i+1)*sizeof(int)))==NULL){
            printf("Impossibile allocare la memoria\n"); return(-1);}
    	  if ((pes=(int*)realloc(pes,(i+1)*sizeof(int)))==NULL){
            printf("Impossibile allocare la memoria\n"); return(-1);}	
    	  printf("Inserisci il voto\n");
    	  scanf("%d",&voto[i]);
    	  printf("Inserisci il suo peso\n");
    	  scanf("%d",&pes[i]);
    	  fprintf(ptrFile,"%d %d",voto[i], pes[i]);
    	  }  
     }while(strcmp(s,"si")==0);
      mediap=MediaPesata(pes,voto,i);
      printf("La media pesata e': %.2f\n",mediap);
      system("pause");
      free(voto);
      free(pes);
      return(0);
    }
    • Un'altra cosa, mi scuso per la mia ignoranza, comunque non credo di aver capito la parte dopo sull'ide dev, per me è arabo, io faccio ingegneria meccanica, di informatica non ne capisco...
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Usi Dev-c++ giusto?
    Bene allora disinstallalo immadiatamente, cercati CODE::BLOCKS e installati quello versione 13.10 con il pacchetto mingw(il compilatore)
    Con che libro stai imparando a programmare?
    ci sono tantissimi errori:
    
    pes=(int*)realloc(pes,(i+1)*sizeof(int))
    
    deve essere
    
    pes = (int*) realloc(pes, ( i + 2) * sizeof(int))
    
    Non ho poi ben capito come è formattato il file.Spiega bene cosa c'è inserito cosa distanzia i valori e quant'altro.
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Per scrivere il programma uso il Notepad++ che ha fornito il professore di fondamenti di informatica all'università, la compilazione la faccio direttamente sulla riga di comando scrivendo Bcc32 nomefile.c
    Comunque mi cercherò CODE::BLOCK e farò come dici tu che sicuramente è meglio... Come libro ho "Il linguaggio C" di Brian W.Kernighan e Dennis M. Ritchie, però diciamo che non è che me lo sono letto bene, perchè il tempo è quello che è, e preferisco imparare facendo esercizi ed andando a tentativi, sono fatto così...

    Venendo al programma che ho messo, il file.txt contenente i voti è formattato così:
    voto1 peso1 voto2 peso2 ... votoN pesoN
    E' tutto su una riga unica, dopo ogni voto c'è uno spazio e poi il suo peso, poi uno spazio e il successivo voto. I voti da aggiungere chiaramente devono essere aggiunti seguendo questa formattazione.
    Per quanto riguarda gli errori, ammetto che devo imparare a usare bene fscanf e fprintf...
    Il fatto che dici che nella realloc devo allocare (i+2) posti invece che (i+1) come avevo fatto io però sinceramente non l'ho capito... cioè io ho fatto un primo ciclo while che teoricamente rialloca nel vettore dei voti e dei pesi un posto ogni volta che ne viene letto uno, alla fine del ciclo supponiamo che nel file ci siano N voti, per come ho strutturato il ciclo i vettori escono dal ciclo allocati di un posto in più del necessario mentre i esce dal ciclo pari al numero dei voti. Ora parte l'altro ciclo do-while se la risposta è si, i viene incrementato di 1 (diventa il N+1) e rialloco (i+1) posti cioè N+1+1. In realtà riguardandoci nella riallocazione del secondo ciclo avrei potuto allocare i posti e non (i+1) secondo me, perchè ne alloca uno in più così... lo modificherò un pelino anche perchè come è strutturato ora voto[N] ragionandoci non viene riempito perchè passando da un ciclo all'altro i viene incrementato di 2 prima che venga assegnato un voto a voto. Sta di fatto che se l'errore fosse solo questo dovrebbe funzionare, credo...

    Il problema è che non funziona, comunque sugli errori logici mi posso scervellare benissimo io, il più magari era sapere se avevo usato bene fscanf e fprintf...
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    No no basta non usare dev-c++,usa pure quello senza problemi.

    Allora ti ho modificato la prima scanf,poi la fprintf,ti ho tolto il bufferoverflow della s e il secondo ciclo l'ho modificato ugale al primo perchè lo avevi sbagliato.
    L'indice i andava bene il tuo, con quell'indentazione mi ero perso.
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    float MediaPesata(int [], int [], int);   //dichiarazione funzione
    
    float MediaPesata(int peso[], int numero[],int N)   //funzione generica che calcola la media
    {
      int i,s,a;
      float media;
      a=0;
      s=0;
      for (i=0; i<N; i++){
        s=s+numero[i]*peso[i];
        a=a+peso[i];
      }
      media=(float)(s)/(float)(a);
      return(media);
    }
    
    
    int main()
    {
      FILE *ptrFile;
      float mediap;
      int i,N,*pes,*voto;
    
      char c,s[80];//s[2]CAVOLO BUFFER OVERFLOW! ECCO PERCHè NON SI USA MAI LA SCANF
      if ((ptrFile=fopen("Voti.txt","r+"))==NULL){printf("Impossibile aprire il file\n"); return(-1);}
      if ((pes=(int*)malloc(sizeof(int)))==NULL){
        printf("Impossibile allocare la memoria\n"); return(-1);}
      if ((voto=(int*)malloc(sizeof(int)))==NULL){
        printf("Impossibile allocare la memoria\n"); return(-1);}
      i=0;
      while ( (fscanf(ptrFile,"%d %d ", &voto[i],&pes[i])) != EOF)
      {
        i++;
        if ((pes=(int*)realloc(pes,(i+1)*sizeof(int)))==NULL){
          printf("Impossibile allocare la memoria\n"); return(-1);}
        if ((voto=(int*)realloc(voto,(i+1)*sizeof(int)))==NULL){
          printf("Impossibile allocare la memoria\n"); return(-1);}
      }
    
      while(1)
      {
        printf("Vuoi inserire un altro voto? (si-no)\n");
       scanf("%s",s);
       if (strcmp(s,"si")) break;
    
        printf("Inserisci il voto\n");
         scanf("%d",&voto[i]);
         printf("Inserisci il suo peso\n");
         scanf("%d",&pes[i]);
         fprintf(ptrFile,"%d %d ",voto[i], pes[i]);
         i++;
         if ((voto=(int*)realloc(voto,(i+1)*sizeof(int)))==NULL){
            printf("Impossibile allocare la memoria\n"); return(-1);}
         if ((pes=(int*)realloc(pes,(i+1)*sizeof(int)))==NULL){
            printf("Impossibile allocare la memoria\n"); return(-1);}
    
         }
    
        int k;
        for (k = 0;k < i ; k++)
        {
            printf("[%d] voto:%d  peso:%d\n",k,voto[k],pes[k]);
        }
    
      mediap=MediaPesata(pes,voto,i);
      printf("La media pesata e': %.2f\n",mediap);
    
      free(voto);
      free(pes);
      return(0);
    }
    
    scusa se non l'ho identato.
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Sono riuscito a farlo andare grazie mille... comunque la tua versione del programma mi è piaciuta, ho modificato un paio di cose in base a quella, ma il secondo ciclo (quello do-while) l'ho lasciato invariato ed ha funzionato lo stesso (infatti ero abbastanza sicuro che fosse giusto anche come avevo fatto io)... la cosa principalmente che non lo faceva andare era:
     while (c!=EOF){
                  fscanf(ptrFile,"%d %d%c", &voto[i], &pes[i], &c); 
    che ho sostituito come ho visto nella tua versione con:
    if ((ptrFile=fopen("Voti.txt","r+"))==NULL){printf("Impossibile aprire il file\n"); return(-1);}    
    poi ho tolto il buffer di overflow dalla s come mi hai suggerito e modificato un paio di cose per quanto riguarda la i, in particolare tra i due cicli ho messo l'istruzione:
    i=i-1;

    per il problema che avevo evidenziato sopra e poi conseguentemente nella funzione ho messo:
    mediap=MediaPesata(pes,voto,i+1);
    Poi ho modificato un altro dettaglio nell'fprintf mettendo uno spazio prima del primo %d se no mi scriveva il voto digitato attaccato al peso del voto prima, ora l'ho modificato così:
    fprintf(ptrFile," %d %d",voto[i], pes[i]);
    Quindi ho fatto varie prove e funziona, grazie infinite per il fondamentale aiuto, lascio qui anche la mia versione funzionante con il secondo ciclo pressochè inalterato (non ho messo il ciclo per mostrare i voti come hai fatto tu ma in effetti può fare comodo...).
    #include <stdio.h> 
    #include <stdlib.h>
    #include <string.h>
    
    float MediaPesata(int [], int [], int);   //dichiarazione funzione 
     
    float MediaPesata(int peso[], int numero[],int N)   //funzione generica che calcola la media 
    { 
      int i,s,a;
      float media;
      a=0;
      s=0;
      for (i=0; i<N; i++){
        s=s+numero[i]*peso[i];
        a=a+peso[i];
      }
      media=(float)(s)/(float)(a);
      return(media);
    }
    
    
    int main()            
    {
      FILE *ptrFile;
      float mediap;
      int i,N,*pes,*voto;
      char c,s[80];
      if ((ptrFile=fopen("Voti.txt","r+"))==NULL){printf("Impossibile aprire il file\n"); return(-1);}    
      if ((pes=(int*)malloc(sizeof(int)))==NULL){                                                        
        printf("Impossibile allocare la memoria\n"); return(-1);}                                         
      if ((voto=(int*)malloc(sizeof(int)))==NULL){                                                        
        printf("Impossibile allocare la memoria\n"); return(-1);}
      i=0;	
      while ( (fscanf(ptrFile,"%d %d ", &voto[i],&pes[i])) != EOF){
        i++;   
        if ((pes=(int*)realloc(pes,(i+1)*sizeof(int)))==NULL){                     
          printf("Impossibile allocare la memoria\n"); return(-1);}                 
        if ((voto=(int*)realloc(voto,(i+1)*sizeof(int)))==NULL){                    
          printf("Impossibile allocare la memoria\n"); return(-1);}
      }
      i=i-1;
      do{
        printf("Vuoi inserire un altro voto? (si-no)\n");
    	scanf("%s",s);
    	if (strcmp(s,"no")!=0){             
    	  i++;
    	  if ((voto=(int*)realloc(voto,(i+1)*sizeof(int)))==NULL){
            printf("Impossibile allocare la memoria\n"); return(-1);}
    	  if ((pes=(int*)realloc(pes,(i+1)*sizeof(int)))==NULL){
            printf("Impossibile allocare la memoria\n"); return(-1);}	
    	  printf("Inserisci il voto\n");
    	  scanf("%d",&voto[i]);
    	  printf("Inserisci il suo peso\n");
    	  scanf("%d",&pes[i]);
    	  fprintf(ptrFile," %d %d",voto[i], pes[i]);
    	  }  
     }while(strcmp(s,"si")==0);
      mediap=MediaPesata(pes,voto,i+1);
      printf("La media pesata e': %.2f\n",mediap);
      system("pause");
      free(voto);
      free(pes);
      return(0);
    }
    Al più presto disistallerò anche il dev c++ e metterò l'altro, ancora non ho avuto il tempo, grazie ancora per l'aiuto e per il tempo dedicato
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Ma non avevi detto che non lo stavi usando?mi sembrava strano che il notepad++ facesse tutti quei pastrocchi.

    Il secondo ciclo è sbagliato!Allochi un valore in piu,il ciclo for l'avevo messo proprio per farti capire come fare a vedere se hai fatto bene o male.Vero che col ciclo for il programma non va bene giustO?
    Per ogni altra sorta di errore è sicuramente colpa del dev
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Cosa non lo stavo usando? Io ho sempre usato il notepad++ finora (non so se abbia capito cosa sia il dev++, forse ho fatto un pò di confusione, pensavo fosse un nome equivalente del notepad che sto usando io, se invece è quello che mi consigliavi tu, ho fatto confusione coi nomi), quello che mi hai detto tu appena ho un pò di tempo lo scarico e lo installo... ma ci devo perdere un pò di tempo anche lì e ora come ora ne ho poco.
    Comunque lasciando stare quello, ok che il ciclo l'hai fatto per capire dove il programma era errato, ma io ti assicuro che così il programma funziona correttamente come l'ho scritto nel messaggio subito sopra, avrei fatto la controprova col ciclo che hai messo tu se vedevo che smanettandoci un pò così non riuscivo a capire il problema, ma sono riuscito quasi subito dopo aver visto la tua versione... la tua versione col ciclo for non ho provato a farla andare, ma solo letta e cercata di capire... e mi è stata molto utile appunto per modificare la mia... Comunque prova a copiare il mio codice (l'ultima versione che ho messo), creare un file con dei numeri e vedere se funziona... io ho fatto varie prove, la media torna e poi riaprendo il file i voti sono aggiunti nel modo giusto. Magari riprova a dirmi il punto specifico dove credi che sia sbagliato il mio secondo ciclo nell'ultima versione che ho messo, perchè, ti ripeto, da me funziona correttamente.
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Allora tu fai la media di n valori quindi da i=0 a i<N ok?
    Iniziamo ad analizzare il primo ciclo,
    Entri con i vettori di dimensioni vd = 1 e i = 0,
    -Parte il ciclo,
    -Tenta di leggere due numeri,
    -Ce la fa
    -i++,vd++
    -Tento di leggere ma ho finito esco.
    -i == 1,vd == 2; vd[0] == valore letto file ; vd[1] == indefinito;
    -Entro secondo ciclo
    -si
    -i++ i==2, vd ==3,vd[0] == valore letto file ; vd[1] == indefinito;vd[2] = indefinito;
    -inserisco i dati in i;
    -vd[2]=dati
    -esco ciclo
    -i==2, vd ==3,vd[0] == valore letto file ; vd[1] == indefinito;vd[2] = Lettura utente;
    Ora a questo punto facendo un ciclo da 0 a <N ed essendo N i avrai che il ciclo termina a un valore inferiore a 2 e quindi l'ultimo dato inserito non è usato.
    in piu avrai il primo valore del vettore dopo la lettura del file di valore indefinito.
    Ecco perchè ti ho messo il ciclo for,infatti non vedendo l'ultimo valore immesso vuol dire che non viene nemmeno calcolato.
    e teoricamente spesso dovrebbe capitarti di vedere qualche numero che non centra con quelli che hai messo te,anche se questo secondo errore in base ai numeri inseriti è difficile da rilevare.
    Se tu provassi a fare un file con soli 1 e inserire soli 1 vedrai che ti stampa a video anche altri numeri.
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Ma infatti il problema che dici tu c'era nella prima versione che ho postato, poi se vai a vedere l'avevo scritto anche io che mi ero reso conto di sto fatto, se guardi l'ultima versione che ho messo è modificata come segue:

    Primo ciclo:
    -entro con i vettori vd=1 e i=0
    -parte il ciclo
    -tenta di leggere 2 numeri
    -ce la fa
    -i++ vd++
    -tento di leggere ma ho finito, esco
    -all'uscita del ciclo i=1, vd=2, vd[0]=valore letto da file, vd[1] allocato ma indefinito

    Istruzione che ho aggiunto tra i due cicli: i=i-1;
    quindi i diventa 0.

    -entro nel secondo ciclo
    -si
    -i++ i=1 vd=2 vd[0]=valore letto da file, vd[1] allocato ma indefinito
    -inserisco i dati in i
    -vd[1]=dati
    -esco ciclo

    quindi ho v[0]=valore letto da file, v[1] valore letto dall'utente
    i=1

    Ora nella funzione visto che passo la dimensione del vettore devo passare i+1 (altra cosa che ho conseguentemente modificato)
    Media=MediaPesata(Voto, Pes, i+1)

    Ergo la mia ultima torna... ho preferito fare così piuttosto che cabiarla radicalmente
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Non l'avevo visto,con quell'orrenda identazione è difficle capirci qualcosa.
    Il concetto comunque è sbgliato.
    Ergo la mia ultima torna... ho preferito fare così piuttosto che cabiarla radicalmente
    Io personalmente l'avrei riscritto da zero cercando di usare un pò piu di intuizione.
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Personalmente avrei preferito una forma pulita quale:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
        FILE *f;
    
        float medias;
        float mediaa;
        int rvoto,rpeso;
    
        if (!(f = fopen("Voti.txt","r+")))
            {printf("Impossibile aprire il file\n"); return(-1);}
    
        while ( (fscanf(f,"%d %d ", &rvoto,&rpeso)) != EOF)
        {
            medias += rvoto * rpeso;
            mediaa += rpeso;
        }
    
        char input[80];
        while (1)
        {
            printf("Vuoi inserire un altro voto? (si-no) :");
            fgets(input,80,stdin)[strlen(input)-1] = '\0';
            if (strcmp(input,"si")) break;
    
            printf("Inserisci il voto:");
            fgets(input,80,stdin)[strlen(input)-1] = '\0';
            rvoto =atoi(input);
            printf("Inserisci il peso:");
            fgets(input,80,stdin)[strlen(input)-1] = '\0';
            rpeso =atoi(input);
    
            medias += rvoto * rpeso;
            mediaa += rpeso;
    
            fprintf(f,"%d %d ",rvoto, rpeso);
    
            puts("");
        }
    
        printf("La media pesata e': %.2f\n",medias/mediaa);
    
        return(0);
    }
    
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Scusa per l'indentazione, certo così come l'hai fatto tu è molto meglio, io non ho questa dimestichezza col linguaggio C, sono alle prime armi, comunque io l'avevo pensato da strutturare che usasse una funzione, lo so che è più corto senza, però il fatto di creare una funzione che calcolasse la media poteva fare comodo anche in altri casi... Il mio scopo poi non era proprio quello di creare un programma nel modo più corto e intuitivo possibile, ma cercare di pensarne uno utile (perchè alla fine lo userò per i voti dell'università) e strutturarlo in modo che inglobasse molti dei comandi principali del C, per cercare di capire più a fondo il loro funzionamento... tutto qui
  • Re: Esercizio che mi sono inventato, ma c'è un problema :|

    Ok,invece di fare una funzione che calcoli la media che nella vita reale è inutile,perchè non fai una funzione per l'input utente?
    Ovvero riscrivi la funzione gets ma che accetti il numero massimo di caratteri inseribili.
    Ecco,questa è una funzione utile,dato che lo standard non la prevede,non l'ho inserita proprio perchè volevo proportelo come esercizio.
    Infatti io non uso la fgets come ho fatto in questo esempio ma uso una funzione che ho fatto io per la lettura degli input.
Devi accedere o registrarti per scrivere nel forum
17 risposte