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

    Programma non funzionante [C]

    Salve a tutti il seguente programma in C dovrebbe dati nomi e voti di una classe come dati di input stampare la media e l'elenco dei nomi e dei voti in modo decrescente dividendoli quelli sotto e sopra la media non mi funziona e non capisco il perchè...so che è pieno di errori ma non riesco a trovarli...Grazie anticipatamente!!!
    P.S. Uso come compilatore Dev c++ forse è il progrmma che non funziona... :master:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void Ordina_decrescente_Sup(char nomi[35][],float voti[],int ne);
    void Ordina_decrescente_inf(char nomi[35][],float voti[],int ne);
    float Media(float voti[],int ne);
    int main(void){
    char nomi [35][20],risp;
    float voti [35],media=0;
    int i,k=0,ne=0;
    //dati di input voti e nomi
    do{
    fflush(stdin);
    printf("Inseisci nome:");
    gets(nomi[ne]);
    printf("\nInserisci voto");
    scanf("%f",&voti[ne]);
    ne++;
    system ("cls");
    printf("Vuoi continuare si o no?");
    risp=_getch();
    }while(risp=='s'||risp=='S');
    //media della classe
    system("cls");
    printf("La media della classe e' %0.3f",Media(voti,ne));
    //Richiamo funzioni per ordinare gli studenti in modo decrescente dividendoli ki sta sopra e sotto alla media
    printf("\n\nAlunni sopra la media\n\n");
    Ordina_decrescente_Sup(nomi,voti,ne);
    printf("Alunni sotto la media\n\n");
    Ordina_decrescente_inf(nomi,voti,ne);
    _getch();
    return 0;
    }
    void Ordina_decrescente_Sup(char nomi[35][],float voti[],int ne){
    int i,k,J=1;
    float app=0;
    char app_str[20];
    for(i=0;i<ne;i++){
    for(k=0;k<ne;k++){
    if(voti[k]> Media(voti,ne)){
    if(voti[i]>voti[k]){
    app=voti[k];
    strcpy(app_str,nomi[i]);
    voti[k]=voti[i];
    strcpy(nomi[k],nomi[i]);
    voti[i]=app;
    strcpy(nomi[i],app_str);
    }
    }
    }
    }
    for(i=0;i<ne;i++){
    printf("%d %s\t\t%0.2f",j++,nomi[i],voti[i]);
    }

    }


    void Ordina_decrescente_inf(char nomi[35][],float vooti[],int ne){
    int i,k,J=1;
    float app=0;
    char app_str[20];
    for(i=0;i<ne;i++){
    for(k=0;k<ne;k++){
    if(voti[k]< Media (voti,ne)){
    if(voti[i]>voti[k]){
    app=voti[k];
    strcpy(app_str,nomi[k]);
    voti[k]=voti[i];
    strcpy(nomi[k],nomi[i]);
    voti[i]=app;
    strcpy(nomi[i],app_str);
    }
    }
    }
    }
    for(i=0;i<ne;i++){
    printf("%d %s\t\t%0.2f",j++,nomi[i],voti[i]);
    }
    }
    float Media(float voti[],int ne){
    int i;
    float somma=0;
    for(i=0;i<ne;i++)
    somma=somma+voti[i];
    return somma/ne;
    }

  2. #2
    Ciao, posta il codice utilizzando il tag code, altrimenti è difficile dare un'occhiata senza indentazione.


  3. #3
    Lo so ke ce un altro modo invece di fare copia incolla ma non ho capto come si fa...

  4. #4
    clicca sul cancelletto (#) che vedi in alto, affianco ai tasti PHP, List e Quote.
    Incolla il testo lì nella casella che ti compare.

    Oppure scrivi


    {code}
    il tuo codice va incollato qui
    {/code}

    al posto delle parentesi graffe mettici le parentesi quadre.

  5. #5
    Ok grazie mille;
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    void Ordina_decrescente_Sup(char nomi[35][],float voti[],int ne);
    void Ordina_decrescente_inf(char nomi[35][],float voti[],int ne);
    float Media(float voti[],int ne);
    int main(void){
      char nomi [35][20],risp;
      float voti [35],media=0;
      int i,k=0,ne=0;
      //dati di input voti e nomi
      	do{
                fflush(stdin);
                printf("Inseisci nome:");
                gets(nomi[ne]);
                printf("\nInserisci voto");
                scanf("%f",&voti[ne]);
                ne++;
                system ("cls");
                printf("Vuoi continuare si o no?");
                risp=_getch();
       }while(risp=='s'||risp=='S');
       //media della classe
       system("cls");
       printf("La media della classe e' %0.3f",Media(voti,ne));
       //Richiamo funzioni per ordinare gli studenti in modo decrescente dividendoli ki sta sopra e sotto alla media
       printf("\n\nAlunni sopra la media\n\n");
       Ordina_decrescente_Sup(nomi,voti,ne);
       printf("Alunni sotto la media\n\n");
       Ordina_decrescente_inf(nomi,voti,ne);
       _getch();            
      return 0;
    }
    void Ordina_decrescente_Sup(char nomi[35][],float voti[],int ne){
    	 int i,k,J=1;
         float app=0;
    	 char app_str[20];
         for(i=0;i<ne;i++){
    		for(k=0;k<ne;k++){
    			if(voti[k]> Media(voti,ne)){
    				if(voti[i]>voti[k]){
    					app=voti[k];
    	 				strcpy(app_str,nomi[i]);
    					voti[k]=voti[i];
    					strcpy(nomi[k],nomi[i]);
    					voti[i]=app;
    		     		strcpy(nomi[i],app_str);
    				}
    			}
    		}
    	}
    	for(i=0;i<ne;i++){
    		printf("%d %s\t\t%0.2f;\n",j++,nomi[i],voti[i]);
    	}
    			
    }                   
    
                               
    void Ordina_decrescente_inf(char nomi[35][],float vooti[],int ne){
    	int i,k,J=1;
    	float app=0;
    	char app_str[20];
    	for(i=0;i<ne;i++){
    		for(k=0;k<ne;k++){
    			if(voti[k]< Media (voti,ne)){
    				if(voti[i]>voti[k]){
    					app=voti[k];
    	 				strcpy(app_str,nomi[k]);
    					voti[k]=voti[i];
    					strcpy(nomi[k],nomi[i]);
    					voti[i]=app;
    		     		strcpy(nomi[i],app_str);
    				}
    			}
    		}
    	}
    	for(i=0;i<ne;i++){
    		printf("%d %s\t\t%0.2f;\n",j++,nomi[i],voti[i]);
    	}
    }
    float Media(float voti[],int ne){
    	int i;
    	float somma=0;
    	for(i=0;i<ne;i++)
    		somma=somma+voti[i];
    	return somma/ne;
    }

  6. #6
    Ci sono errori piuttosto banali che puoi correggere in 3 minuti leggendo l'output del compilatore.
    Ti dice, ad esempio, che non trova "j" (dato che la variabile l'hai chiamata "J" grande), non trova voti (hai scritto vooti tu) e cose del genere. Inoltre ti dice che devi specificare il limite per ogni dimensione degli array multidimensionali...
    Non dovresti avere problemi a correggere tutto


  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Programma non funzionante [C]

    Originariamente inviato da fagix
    P.S. Uso come compilatore Dev c++ forse è il progrmma che non funziona...
    DevC++ non è un compilatore ma un IDE ("ambiente di sviluppo integrato"). Come compilatore usa mingw (basato su gcc) :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Si erorri cerano ma ce un problema quando compilo mi da dei errori sulla funazione "strcpy" l'errore che mi riporta è il seguente:
    "invalid user uspecified bounds" e non so che significa

  9. #9
    credo tu ti sbagli. Quell'errore dovrebbe dartelo nella riga del prototipo della funzione (o delle, mi pare fossero 2) che accetta un array multidimensionale, perchè non specifichi tutti i limiti, meno eventualmente quello della dimensione più a sinistra:

    codice:
    int f(int i[10][5]){} // si
    int f(int i[][5]){} // si
    int f(int i[10][]){} // no
    int f(int i[][]){} // no

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.