Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908

    Errore in programma C

    Ho questo listato:

    codice:
    #include "stdio.h"
    #include "stdlib.h"
    #define MAX 1000
    
    int main()
    {
      int num;
      
      //Acquisiamo finchè l'utente non inserisce un numero minore o uguale al numero massimo degli elementi che 
      //si possono trattare.
      do{
        printf("Inserire quanti numeri si vogliono immettere\n");
        scanf("%d", &num);
      }while(num>MAX);
    
      //Variabili per l'esecuizione del programma
      int numeri[MAX];//Dichiariamo l'array per contenere i numeri da inserire
    
      //Riempio l'array
      for(int i=0;i<num;i++){
        printf("Inserire il %d numero\n",i+1);
        scanf("%d",&numeri[i]);
      }
    
      //Variiabili per i vari punti
    
      //punto a;
      int SommaPariA=0,SommaDispariA=0;
      //punto b;
      int SommaPariB=0,SommaDispariB=0;
      //punto c;
      int SommaPariC=0,SommaDispariC=0;
    
      //+++++++++++++++++++++Calcolo della somma e del prodotto seguendo il punto A)+++++++++++++++++++++++++++++++++
      
      //Primo for che calcola la somma degli elementi pari
      for(int i=0;i<num;i++){
        if(numeri[i]%2==0) SommaPariA+=numeri[i];
      }
      //Secondo for che calcola la somma degli elementi dispari
      for(int i=0;i<num;i++){
        if(numeri[i]%2==1) SommaDispariA+=numeri[i];
      }
     
      //+++++++++++++++++++++Calcolo della somma e del prodotto seguendo il punto B)+++++++++++++++++++++++++++++++++
      int i=0;
      //Primo while che calcola la somma degli elementi pari
      while(i<num){
        if(numeri[i]%2==0) SommaPariB+=numeri[i];
        i++;
      }
    
      //Secondo while che calcola la somma degli elementi dispari
      while(i<num){
        if(numeri[i]%2==1) SommaDispariB+=numeri[i];
        i++;
      }
    
      //+++++++++++++++++++++Calcolo della somma e del prodotto seguendo il punto C)+++++++++++++++++++++++++++++++++
      for(int i=0;i<num;i++){
        if(numeri[i]%2==0) SommaPariC+=numeri[i]; else SommaDispariC+=numeri[i];
    
      }
    
      //Stampiamo l'array
      printf("L'array e': ");
      for(int i=0;i<num;i++) printf("%d ",numeri[i]);
      printf("\n");
      printf("Punto A\nLa somma degli elementi pari e': %d, la somma dei dispari e':%d\n\n",SommaPariA,SommaDispariA);
      printf("Punto B\nLa somma degli elementi pari e': %d, la somma dei dispari e':%d\n\n",SommaPariB,SommaDispariB);
      printf("Punto C\nLa somma degli elementi pari e': %d, la somma dei dispari e':%d\n",SommaPariC,SommaDispariC);
      system("pause");//Ferma l'esecuzione in console per consentire di vedere i risultati
      return 0;
    }
    in C++ funziona egregiamente, mentre se lo compilo in C mi da svariati errori!Dato che non di C sono asciutto, qualcuno potrebbe riadattarmelo per il C?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Perche' non ci dici qualcuno di questi "svariati" errori?

  3. #3
    Prova a includere cosi':

    #include <stdio.h>

  4. #4
    In C devi mettere tutte le dichiarazioni di variabili prima delle istruzioni. Non puoi metterle mischiate con il resto del codice.

    codice:
    int main() {
       int x;
       char y;
       int *z;
       double n[10];
    .
    .
    . altre variabili
    .
    .
    
    inizio codice del programma
    }

  5. #5
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Quindi il listato buono qualcuno me lo potrebbe scrivere?Scusate, ma io sviluppo con altri linguaggi, quindi in C nada.
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma hai letto il mio post?

  7. #7
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Ops, scusami Oregon ma mi ero distratto!Allora, il listato postato sopra, compilato ed eseguito in C++ funziona perfettamente, ma dato che al mio amico serve in C, quando lo si compila vengono fuori questi errori:

    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come leggi nell'errore segnalato nella linea 20 (ciclo for) il problema e' legato al fatto (ma te l'avevano detto) che la dichiarazione delle variabili in C avviene solamente all'inizio della funzione e non durante (tanto meno all'interno del for). Quindi, tutte le for dove c'e'

    for(int i= ...

    devono diventare

    for(i=...

    e la dichiarazione della variabile i deve avvenire in testa.
    Inoltre, le dichiarazioni delle variabili

    int SommaPariA=0,SommaDispariA=0;
    int SommaPariB=0,SommaDispariB=0;
    int SommaPariC=0,SommaDispariC=0;

    devono essere anch'esse in testa. Quindi

    int num, i;
    int SommaPariA=0,SommaDispariA=0;
    int SommaPariB=0,SommaDispariB=0;
    int SommaPariC=0,SommaDispariC=0;

    E' meglio che tu comprenda quali sono le modifiche da fare in dettaglio e non che copi-incolli il codice corretto da qualcuno ...

  9. #9
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    oregon, oltre a ringraziarti per la tua disponibilità, ribadisco che il codice non è per me, quindi, un copia e incolla salverebbe il mio prezioso tempo!Mi fai sto favorino?Ti prego, così me lo tolgo di mezzo!
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Salva il tuo tempo, ma non quello degli altri ...

    codice:
    #include "stdio.h"
    #include "stdlib.h"
    #define MAX 1000
    
    int main()
    {
      //Variabili per l'esecuzione del programma
      int numeri[MAX]; //Dichiariamo l'array per contenere i numeri da inserire
      int num, i;
      //Variabili per i vari punti
      //punto a;
      int SommaPariA=0,SommaDispariA=0;
      //punto b;
      int SommaPariB=0,SommaDispariB=0;
      //punto c;
      int SommaPariC=0,SommaDispariC=0;
    
    
      //Acquisiamo finchè l'utente non inserisce un numero minore o uguale al numero massimo degli elementi che 
      //si possono trattare.
      do{
        printf("Inserire quanti numeri si vogliono immettere\n");
        scanf("%d", &num);
      }while(num>MAX);
    
      //Riempio l'array
      for(i=0;i<num;i++){
        printf("Inserire il %d numero\n",i+1);
        scanf("%d",&numeri[i]);
      }
    
      //+++++++++++++++++++++Calcolo della somma e del prodotto seguendo il punto A)+++++++++++++++++++++++++++++++++
      
      //Primo for che calcola la somma degli elementi pari
      for(i=0;i<num;i++){
        if(numeri[i]%2==0) SommaPariA+=numeri[i];
      }
      //Secondo for che calcola la somma degli elementi dispari
      for(i=0;i<num;i++){
        if(numeri[i]%2==1) SommaDispariA+=numeri[i];
      }
     
      //+++++++++++++++++++++Calcolo della somma e del prodotto seguendo il punto B)+++++++++++++++++++++++++++++++++
      //Primo while che calcola la somma degli elementi pari
      i=0;
      while(i<num){
        if(numeri[i]%2==0) SommaPariB+=numeri[i];
        i++;
      }
    
      //Secondo while che calcola la somma degli elementi dispari
      i=0;
      while(i<num){
        if(numeri[i]%2==1) SommaDispariB+=numeri[i];
        i++;
      }
    
      //+++++++++++++++++++++Calcolo della somma e del prodotto seguendo il punto C)+++++++++++++++++++++++++++++++++
      for(i=0;i<num;i++){
        if(numeri[i]%2==0) SommaPariC+=numeri[i]; else SommaDispariC+=numeri[i];
    
      }
    
      //Stampiamo l'array
      printf("L'array e': ");
      for(i=0;i<num;i++) printf("%d ",numeri[i]);
      printf("\n");
      printf("Punto A\nLa somma degli elementi pari e': %d, la somma dei dispari e':%d\n\n",SommaPariA,SommaDispariA);
      printf("Punto B\nLa somma degli elementi pari e': %d, la somma dei dispari e':%d\n\n",SommaPariB,SommaDispariB);
      printf("Punto C\nLa somma degli elementi pari e': %d, la somma dei dispari e':%d\n",SommaPariC,SommaDispariC);
     
      system("pause");//Ferma l'esecuzione in console per consentire di vedere i risultati
      return 0;
    }
    ... solo per questa volta, per quanto mi riguarda ...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.