Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    14

    [c] stringhe

    Inserire in un vettore una frase le cui parole sono separate da uno o più spazi. Inserire le parole, una per riga, in una matrice char e stamparla.
    Ad esempio, se la frase è “mi piace l’estate” la matrice sarà:
    mi
    piace
    l’estate


    segmentation fault

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    void insvet(char v[100]);
    void insmat(char mat[100][100],char vet[100]);
    void stampa(char mat[100][100]);
    
    int main(int argc, char **argv)
    { char vet[100],m[100][100];
    	insvet(vet);
    	insmat(m,vet);
    	stampa(m);
    	
    	
    }
    
    void insvet(char v[100]){
    	
    	
    	printf("inserisci frase: \n");
    	scanf("%[^\n]",v);
    	
    }
    
    void insmat(char mat[100][100],char vet[100])
    { int i,j,k;
    char c;
    i=0;
    j=0;
    k=0;
    
    	while(vet[i]!='\0')
    	{
    
    		c=strcmp(vet,"");
    		if(c==0)
    		{
    					j++;
    					mat[j][k]=vet[i];
    					i++;
    		
    			
    		}
    				else
    			{
    				
    			mat[j][k]=vet[i];
    			k++;
    			i++;
    		
    					
    			}
    	}
    }
    
    void stampa(char mat[100][100]){
    	
    	int i,j;
    	
    while(mat[i][j]!='\0'){
    	
    	printf("%c",mat[i][j]);
    	i++;
    	j++;
    		
    }
    }

  2. #2
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    
    int main()
    { 
        int i=0, esci=0;
        char str[200];
        char *result = NULL;
        char m[20][20];
        
        printf("Inserisci la tua stringa: ");
        
        for(i=0; i<200 && esci!=1; i++)
        {
            scanf("%c", &str[i]);
            if(str[i]=='\n') esci=1;
        }
        str[i-1]='\0';
    
        
        i=0;
        result = strtok( str," ");
        strcpy(m[i], result);
    
        
        while( result != NULL ) {
        printf("%s\n", m[i]);
        i++;
        result = strtok( NULL, " " );
        if(result!=NULL)
            strcpy(m[i], result);
    }
    
        system("pause");
    }
    Così è molto più facile. Cmq al posto che i while usa i for che sono molto meglio

  3. #3

    Re: [c] stringhe

    Originariamente inviato da artmar
    codice:
    void insmat(char mat[100][100],char vet[100])
    { int i,j,k;
    char c;
    i=0;
    j=0;
    k=0;
    
    	while(vet[i]!='\0')
    	{
    
    		c=strcmp(vet," ");   /*qui mancava lo spazio*/
    		if(c==0)
    		{
    					j++;                     /*qui ti sposti subito e lasci dentro mat[0] non si sa che cosa*/
    					mat[j][k]=vet[i];
    					i++;
    		
    			
    		}
    				else
    			{
    				
    			mat[j][k]=vet[i];
    			k++;
    			i++;
    		
    					
    			}
    	}
    }
    
    void stampa(char mat[100][100]){
    	
    	int i,j;
    	
    while(mat[i][j]!='\0'){
    	
    	printf("%c",mat[i][j]);
    	i++;                              /*se incrementi sia j che i insieme ti stampa solo 0;0   1;1 2;2......... eccc*/
    	j++;
    		
    }
    }
    I commenti sono alcuni errori che commettevi

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    14
    grazie mille.... provo con i for , che errori stupidi

  5. #5
    Mi spiegate questo pezzetto di codice?

    codice:
    void insvet (char v[100])
    { 	 	 	
              printf("inserisci frase: \n"); 	
              scanf("%[^\n]",v); 	 
    }

    In particolare, la scanf così scritta cosa indica?


    p.s. dire che i cicli for sono migliori degli altri è un po' limitativo: spesso hanno scopi diversi, i for si usano quando si deve fare un numero determinato di cicli, i while, in genere, quando la condizione di terminazione è logica... In certi casi i for sono inutilizzabili, come quando si hanno due condizioni di terminazione!
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Laikius91
    scanf("%[^\n]",v);

    In particolare, la scanf così scritta cosa indica?
    Acquisisce qualsiasi carattere ad eccezione del "a capo".
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    Originariamente inviato da Laikius91
    In certi casi i for sono inutilizzabili, come quando si hanno due condizioni di terminazione!
    beh non è propriamente vero ad esempio puoi fare così

    for(i=0, j=0; i<N && j<M; i++, j++)

    ed è perfettamente equivalente a:

    i=j=0;
    while(i<N && j<M){
    .
    .
    .
    i++;
    j++;
    }

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da premoli
    beh non è propriamente vero ad esempio puoi fare così

    for(i=0, j=0; i<N && j<M; i++, j++)

    ed è perfettamente equivalente a:

    i=j=0;
    while(i<N && j<M){
    .
    .
    .
    i++;
    j++;
    }
    Il for usato in quel modo è proprio brutta programmazione.
    Il for andrebbe usato quando sai quante volte iterare. Il while/do-while invece nei casi in cui il numero di interazioni non è determinato.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9
    Originariamente inviato da premoli
    beh non è propriamente vero ad esempio puoi fare così

    for(i=0, j=0; i<N && j<M; i++, j++)

    ed è perfettamente equivalente a:

    i=j=0;
    while(i<N && j<M){
    .
    .
    .
    i++;
    j++;
    }

    Si scusami ho usato "inutilizzabili" ma era giusto dire "scomodi"
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    era solo una piccola precisazione niente di che.

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.