Aiuto per programma in C

di il
54 risposte

54 Risposte - Pagina 3

  • Re: Aiuto per programma in C

    Il punto è: hai capito perche ho messo i due for?
  • Re: Aiuto per programma in C

    Un altro dubbio fresco fresco di nottata...
    #include<stdio.h>
    #define SIZE 9
    
    int indicecolonna( int indice );
    void printArray( const double zz[9][9]);
    
    const double matriceIniziale[SIZE][SIZE] = { { 11, 12, 13, 14, 15, 16, 17, 18, 19 },
    { 21, 22, 23, 24, 25, 26, 27, 28, 29 }, { 31, 32, 33, 34, 35, 36, 37, 38, 39 },
    { 41, 42, 43, 44, 45, 46, 47, 48, 49 }, { 51, 52, 53, 54, 55, 56, 57, 58, 59 },
    { 61, 62, 63, 64, 65, 66, 67, 68, 69 }, { 71, 72, 73, 74, 75, 76, 77, 78, 79 },
    { 81, 82, 83, 84, 85, 86, 87, 88, 89 }, { 91, 92, 93, 94, 95, 96, 97, 98, 99 } };
    
    int main()
    {
        double aa[9][9];
        int conta;
        
        printf("la matrice di double e':\n");
        printArray(matriceIniziale);
        
        printf("l'indice e': %d", indicecolonna( conta ));
        
        return 0;
    }
    
    int indicecolonna( int indice )
    {
        int i, j;
        double sommamax = 0;
        double somma = 0;
        
        for(i = 0; i < 9; i++)
        {
              for(j = 0; j < 9; j++)
              {
                    somma += matriceIniziale[i][j];
              }
              if(sommamax < somma)
              {
                    sommamax = somma;
                    indice = j;                      
              }   
        }
        
        return indice;
    }
    
    void printArray( const double zz[9][9])
    {
       int i;
       int j;
    
       for( i = 0; i < 9; i++ )
       {
          for( j = 0; j < 9; j++ )
          {
             printf("%.0f ", zz[ i ][ j ]);
          }
          printf("\n");
       }
    } 
    
    questo programma deve indicarmi la colonna la cui somma di elementi ha il valore più grande. il programma mi parte, solo che mi dice che la colonna è la 9 a prescindere da quali siano i valori... qualche info sul possibile errore??
  • Re: Aiuto per programma in C

    skynet ha scritto:


    il punto è: hai capito perche ho messo i due for?
    si credo di si.. i primi due creano la matrice che viene memorizzata come xx, dopo nel secondo for annidato usando il file temporaneo temp inverto la diagonale. in questo modo non perdo l'informazione e non sballa l'uscita. credo
  • Re: Aiuto per programma in C

    Per l'ultima volta: impara ad usare i debug. Io i tuoi errori li vedo anche ad occhio ma tu per arrivarci hai bisogno del debugger. la variabile conta dev'essere passata x riferimento e non x valore. ad indice li viene assegnato la variabile j all'uscita del ciclo dove j è usato per forza che alla fine del for j sarà sempre 9. Devi fare i due for annidati invertendo gli indici, mantenendo j fisso e i che si muove. Se usi i diagrammi di flusso capiresti che l'indice della colonna è da tenere fisso mentre ti muovi su quello delle righe.
  • Re: Aiuto per programma in C

    Ok ma non è colpa mia se nessuno mi ha mai spiegato come si usa il debug... per me è la prima volta che programmo e ho il compito tra meno di una settimana e come vedi so fare poco... grazie comunque dell'aiuto, anche se non ho capito bene il discorso dell'indice :s
  • Re: Aiuto per programma in C

    
        #include<stdio.h>
        #define SIZE 9
    
        int indicecolonna( int & indice );
        void printArray( const double zz[9][9]);
    
        const double matriceIniziale[SIZE][SIZE] = { { 11, 12, 13, 14, 15, 16, 17, 18, 19 },
        { 21, 22, 23, 24, 25, 26, 27, 28, 29 }, { 31, 32, 33, 34, 35, 36, 37, 38, 39 },
        { 41, 42, 43, 44, 45, 46, 47, 48, 49 }, { 51, 52, 53, 54, 55, 56, 57, 58, 59 },
        { 61, 62, 63, 64, 65, 66, 67, 68, 69 }, { 71, 72, 73, 74, 75, 76, 77, 78, 79 },
        { 81, 82, 83, 84, 85, 86, 87, 88, 89 }, { 0, 0, 0, 0, 0, 96, 97, 98, 99 } };
    
        int main()
        {
            int conta;
           
            printf("la matrice di double e':\n");
            printArray(matriceIniziale);
           
            printf("l'indice e': %d", indicecolonna( conta ) - 1);
           
            return 0;
        }
    
        int indicecolonna( int & indice )
        {
            int i, j;
            double sommamax = 0;
            double somma = 0;
           
            for(j = 0; j < 9; j++)
            {
                  for(i = 0; i < 9; i++)
                  {
                        somma += matriceIniziale[i][j];
                  }
                  if(sommamax < somma)
                  {
                        sommamax = somma;
                        indice = j;                     
                  }   
            }
           
            return indice;
        }
    
        void printArray( const double zz[9][9])
        {
           int i;
           int j;
    
           for( i = 0; i < 9; i++ )
           {
              for( j = 0; j < 9; j++ )
              {
                 printf("%.0f ", zz[ i ][ j ]);
              }
              printf("\n");
           }
        }
    
    
  • Re: Aiuto per programma in C

    Intanto scusa se mi sono voltato male, solo che sono particolarmente sotto stress... il programma che hai postato l'ho provato e mi da come indice 7 sempre, anche cambiando i valori.. ho imparato a fare il debug, anche se non sono diventato un maestro
    a parte il problema con l'indice oggi ho cominciato a fare dei programmi che sfruttano il tipo booleano, solo non ho capito bene come si usa e ad esempio
    #include<stdio.h>
    
    bool verifica(int x, int n);
    
    int main()
    {
        bool temp;
        
        printf("il risultato e':\n");
        verifica(temp);
        
        return 0;
    }
    
    bool verifica(int x, int n)
    {
         int i;
         bool temp = false;
         
         scanf("%d", &x);
         scanf("%d", &n);
         
         for(i = 0; i < n; ++i)
         {
               if(((x>>i)&01) == 0)
               {
                     temp = false;
               }
               else 
               {
                    temp = true;
               }
               
         }
         return temp;
    }
                  
    
    non mi funge perchè non riconosce il tipo.. qualche consiglio?? grazie sempre
  • Re: Aiuto per programma in C

    Verifica accetta due int, tu li passi un bool. Secondo te cosa c'è che non va?
  • Re: Aiuto per programma in C

    antonaccio86 ha scritto:


    il programma che hai postato l'ho provato e mi da come indice 7 sempre, anche cambiando i valori..
    metti questa funzione a posto dell'altra. Errore mio (non ho usato molto il debug )
    
    int indicecolonna( int & indice )
    {
    	int i, j;
    	double sommamax = 0;
    	
    
    	for(j = 0; j < 9; j++)
    	{
    		double somma = 0;
    		for(i = 0; i < 9; i++)
    		{
    			somma += matriceIniziale[i][j];
    		}
    		if(sommamax < somma)
    		{
    			sommamax = somma;
    			indice = j;                     
    		}   
    	}
    
    	return indice;
    }
    
  • Re: Aiuto per programma in C

    skynet ha scritto:


    verifica accetta due int, tu li passi un bool. Secondo te cosa c'è che non va?
    si, so che accetta due int, solo che io gli voglio passare un booleano.. questo è il mio problema, non so come si fa
  • Re: Aiuto per programma in C

    Definisci la funzione verifica in modo da accettare un bool.
    
    bool verifica(bool valore);
    
  • Re: Aiuto per programma in C

    Fatto e funziona bene ho fatto anche altri programmi in questo modo e non vorrei parlare assai ma funzionano.. grazie sempre
  • Re: Aiuto per programma in C

    Skynet c'è un programma che non ho la più pallida idea di come si possa fare... potresti darmi qualche info??
    il testo dice:
    scrivere il codice di una funzione c che permetta di contare il numero di caratteri diversi presenti all'interno di una stringa.
    non ho mai lavorato con le stringhe quindi non so che fare.. grazie
  • Re: Aiuto per programma in C

    Sei sempre su C, niente c++ (ma chi diavolo insegna ancora i C io non so).
    cmq una stringa in C è un vettore di caratteri (esempio char stringa[20]).
    poi fai una scansione della stringa con i che va da 0 a strlen(stringa) (strlen sarebbe la lunghezza).
    Per ogni i fai una scansione con j che va da 0 a i -1. Se durante la scansione con j non hai trovato il carattere nel stringa allora incrementa il contatore dei diversi, se l'hai trovata incrementi i e vai avanti. E' + difficile scrivertelo a parole che a codice ma voglio che ci arrivi da solo.
  • Re: Aiuto per programma in C

    Allora ho scritto questo:
    #include<stdio.h>
    
    int contalettere( int x );
    
    int main()
    {
        int i;
        
        printf("il numero di caratteri nella stringa e': %d", contalettere( i ));
        
        return 0;
    }
    
    int contalettere( int x )
    {
        char stringa[20] = "ciao mi chiamo anto";
        int i, j;
        char temp;
        x = 0;
        
        for( i = 0; i < 20; i++ )
        {
             for( j = 0; j < i - 1; j++ )
             {
                  temp = stringa[i];
                  if(temp != stringa[i + 1])
                  {
                       x++;
                  }
             }
        }
        
        return x;
    }
                               
         
    
    nel for avevo messo strlen(stringa) solo che non me l'accetta come comando, quindi ho messo la lunghezza della stringa direttamente. il programma parte, solo che come valore mi da 170, quando non possono esserci 170 caratteri diversi...
Devi accedere o registrarti per scrivere nel forum
54 risposte