Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81

    [c++]salvare Pezzo Di Vettore In Un Altro Vettore E Stamparlo

    Ciao ragzzi, avrei come sempre un dubbio..
    Devo realizzare un programma capace di leggere una riga in ingresso, e stampare la prima parte della riga, numero o lettere che siano, che precedono il primo spazio.
    Ho pensato quindi di fare così:
    codice:
    #include <stdio.h>
    
    int getline(char []);
    
    main()
    
    {
    
        char line[1000], miserve[1000];
    
        int i,c,len;
    
        
    
             while((len=getline(line))>0)
    
                 {
    
                     for (i=0,c=0; line[i]!=' ';)
    
                       
    
                             miserve[c++]=line[i++];
    
                             
    
                         
    
                       miserve[c]='\0';
    
                   printf("%s|",miserve);
    
                 }
    
    }
    
    int getline(char line[])
    
    {   int i,c;
    
        for(i=0; (c=getchar())!= '\n' && c!= '\0'; i++)
    
            line[i]=c;
    
        if (c=='\n')
    
            line[i++]=c;
    
        line[i]='\0';
    
    system("pause");
    
    }
    Tuttavia non viene stampato niente..

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La getline deve restituire un valore ... la system alla fine della getline non ha senso ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81
    Avevo dimenticato return..
    Sono proprio un cretino!!
    Grazie sempre oregon..

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81
    Figuriamoci se avevo risolto il problema..
    Qulla era la prima parte, adesso dovrei fare in modo tale che tutte le parti prima dello spazio vengano salvate nel vettore miserve estampate singolarmente con accanto "|".
    Il programma funziona se in input do massimo due caratteri per volta, ovvero se scrivo:
    aa ww 33
    ne viene fuori giustamente:
    aa| ww| 33|

    ma se scrivo:
    aaa 3333, viene fuori un macello!

    Ecco il codice:
    codice:
    int getline(char []);
    
    main()
    
    {
    
        char line[1000], miserve[1000];
    
        int i,c,len;
    
        
    
             while((len=getline(line))>0)
    
                 {i=0;
    
                    while((line[i])!='\0')
    
                    {
    
                     for (c=0; line[i]!=' ' && line[i]!='\0';)
    
                         {
    
                             miserve[c++]=line[i++];
    
                           
    
                         }
    
                          printf("%8s|",miserve); 
    
                     if(line[i]!='\0')
    
                         i++;
    
                          
    
                         
    
                   
    
                   
    
                   }
    
                  
    
                 }
    
    system("pause");
    
    }
    
    int getline(char line[])
    
    {   int i,c;
    
        for(i=0; (c=getchar())!= '\n' && c!= '\0'; i++)
    
            line[i]=c;
    
        //if (c=='\n')
    
          //  line[i++]=c;
    
        line[i]='\0';
    
    return i;
    
    
    
    }
    Scusa se ti faccio spesso domande ma il 15 ho un esame, e come vedi ho ancora molti dubbi..

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma perche' il listato che posti e' cosi' disordinato (non indentato correttamente e con tante linee vuote...). Cosi' si perde un sacco di tempo a leggerlo e si rinuncia a rispondere ...

    Inoltre, non ho capito se i dati del primo vettore e del secondo, alla fine, devono essere uguali o va salvato anche il carattere | nel secondo vettore ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81
    Si, scusa nel ricopiare il file dal mac a windows per poi andare nel forum succede questo, adesso te lo allego bene;
    Cmq il programma dovrebbe prendere cio' che c'è nel primo vettore, a poco a poco, ovvero prima di ogni spazio e poi stampare ogni membro con accanto |.
    Quindi se io nel primo vettore scrivo:
    "Questa è una prova", il risultato dovrebbe essere: "questa|" "è|" "una|" "prova|".
    codice:
    #include <stdio.h>
    int getline(char []);
    main()
    {
        char line[1000], miserve[1000];
        int i,c,len;
        
        while((len=getline(line))>0)
        {
            i=0;
            while((line[i])!='\0')
                    {
                     for (c=0; line[i]!=' ' && line[i]!='\0';)
                         {
                          miserve[c++]=line[i++]; 
                         }
                     printf("%8s|",miserve); 
                     if(line[i]!='\0')
                         i++;
                    }
                  
        }
        system("pause");
    }
    
    int getline(char line[])
    {   int i,c;
        for(i=0; (c=getchar())!= '\n' && c!= '\0'; i++)
            line[i]=c;
        line[i]='\0';
        return i;
    }

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma non hai fatto nessun cenno al secondo vettore ... secondo quello che mi hai spiegato, i dati separati dal primo vettore devono essere solamente visualizzati ... allora a che serve il secondo vettore?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81
    Il secondo vettore (miserve[]) lo uso semplicemente per stampare..

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Allora non ti serve (!) ... basta

    codice:
    int main()
    {
        char line[1000];
        int i, len;
    
        len=getline(line);
    
        if(len)
          for (i=0; i<len; i++)
          {
            if(line[i]==' ')
    	putchar('|');
    
            putchar(line[i]);
          }
    
          putchar('|');
          putchar('\n');
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    81
    Grazie per avermi fatto vedere quest'altro metodo, avevo già fatto una cosa di simile..
    Stavo cercando pero' altre soluzioni alternative, in modo di arrivare gon un bagaglio piu' ampio possibile all'esame..
    E in questo particolare caso, mi interessava sapere dove stava l'errore.. perchè credo che mi potrebbe capitare di salvare parte di cio' che mi serve in un altro vettore per poi stamparlo..
    Grazie cmq per avere scritto quel codice..

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.