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

    Programma in C: compattazione di un array

    Ciao a tutti, sono nuovo qui, vado subito al dunque perché ho l'esame di informatica tra poco e mi sono impanicato su un programma che stavo scrivendo

    Il programma in questione riceve da ingresso un array di interi V[5] e ristampa la sua versione compattata C[5] senza zeri e senza ripetizioni di numeri già presenti (tramite uso di flag ). Quindi se da imput do 2 2 0 2 0 da output riceverò 2 . Io avevo pensato a una cosa del genere:

    codice:
    #include <stdio.h>
    #define bool int
    #define true 1
    #define false 0
    int main(void) {
        int i, n, h, trovato, V[5], C[5];
        
        for(i=0;i<5;i++){
            scanf("%d", &V[i]);
        }
        trovato=true;
                while(trovato){
                    trovato=false;
                                    h=0;
                    for(i=h;i<5;i++){            
                    if(V[i]!=0){
                        if(i==h){
                            if(i=h){
                                i++;
                            }
                            else{
                                trovato=true;
                                i++;
                            }
                        }
                        else{
                            n=V[i];
                            V[i]=C[i];
                            C[i]=n;
                        }
                        if(i=5-1){
                                a=0;
                            h++;
                        }
                    }
                    else{
                        i++;
                    }
                }
            }
        
        for(i=0;i<5;i++){
            printf("%d\n", C[i]);
        }
        return 0;
    }

    Perfavore niente insulti riguardo la mia scarsa capacità di programmare
    Vi ringrazio in anticipo
    Ultima modifica di LeleFT; 04-02-2015 a 18:55 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    Ciao, sinceramente non capisco cosa faccia il tuo codice

    Leggendo la traccia io risolverei cosi

    Creo l'array v[] e acquisisco i suoi elementi, creo il vettore c[] e lo inizializzo a zero

    Scorro il vettore v, se l'elemento è diverso da zero, verifico che nel vettore c[] non sia presente quel
    numero "scorrendolo con un ciclo for()", se non è presente aggiungo il numero al vettore c[]

    stampo i numeri contenuti nel vettore c[], con la condizione for(i=0;c[i]!=0;i++)
    Tecnologia

  3. #3
    Ciao,
    grazie per la risposta
    Diciamo che la prima parte del programma ( immettere valori diversi da zero nel C[5]) mi funziona bene...non capisco però come faccio a immettere una sola volta i valori che si ripetono

  4. #4
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551
    verifico che nel vettore c[] non sia presente quel
    numero "scorrendolo con un ciclo for()"

    codice:
    #define true 1
    #define false 0
    int main()
    {
    
        int i=0, j=0;
        int c[5]={0};
        ....
        ....
        ....
        ....
        for(i=0;i<5;i++)
        {
           /*
              Scorro l'array v, controllo che l'elemento sia diverso da zero 
              e che non sia presente nell'array c, se è cosi, inserisco v[i] in c[j];  
           */ 
           if(v[i]!=0  && VerificaPresenzaElemento(c,v[i])==false)
           {
                c[j]=v[i];
                j++; // Contatore posizione array c
           }
        }
    
    }
    
    
    
    
    
    char VerificaPresenzaElemento(int c[],int elemento)
    {
        int i=0;
        /*
          Scorro tutto l'arrat c, e controllo che ogni elemento sia uguale
          ad elemento cioè a v[i]
        */
        for(i=0; i<5 && c[i]!=0;i++)
       {
            if(c[i]==elemento)
                return 1;
    
       }
            
    
        return 0; // se non trova un elemento uguale return 0 
    }
    Tecnologia

  5. #5
    Grazie, ma il problema è che essendo un corso di informatica b, la funzioni in c non le abbiamo fatte

  6. #6
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    Ciao

    Ciao, be una cosa la puoi sempre fare peggiore


    codice:
    #define true 1
    #define false 0
    int main()
    {
    
    
        int i=0, j=0,k=0;
        int c[5]={0};
        char bool=true;
        ....
        ....
        ....
        ....
        for(i=0;i<5;i++)
        {
           /*
              Scorro l'array v, controllo che l'elemento sia diverso da zero 
              e che non sia presente nell'array c, se è cosi, inserisco v[i] in c[j];  
           */ 
           if(v[i]!=0)
           {    
                for(k=0; k<5;k++)
                {   
                      bool=false;
                       
                     if(c[k]==v[i])
                     {
                         bool=true;
                         break;
                     }   
            
                }
       
            }
          
           if(bool==false)
           {          
    
    
    
    
               c[j]=v[i];
                j++; // Contatore posizione array c
           }
        }//End for
    
    
    }
    
    
    
    
    
    
    
    
    
    
    
    Ultima modifica di torn24; 04-02-2015 a 16:19
    Tecnologia

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.