Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    10

    [C] matrice di parole...problemino

    Salve a tutti, faccio il primo anno universitario e frequento la facolta di informatica. Mentre facevo delle esercitazioni, ho avuto un problemino.

    il programma richiede questo:

    Data una frase di max 10 parole ed ogni parola deve essere lunga max 100 caratteri, l'output mi deve dare le singole parole in matrice in verticale.

    codice:
    ESEMPIO
    
    INPUT
    
    io sono un ragazzo
    
    OUTPUT
    
    i   s  u  r
    o  o  n  a
        n     g
        o     a
               z
               z
               o
    Ora...il programma di per se è facile se lo si struttura con le stinghe e la libreria string.h, ma io mi voglio complicare la vita...e nn chiedetemi il perchè XDDDD

    Io ho pensato di leggere la frase ed inserirla carattere per carattere dentro una matrice, inserendo per ogni colonna una parola. Nel momento in cui inserisco la lettere di una parola in una colonna utilizzo un contatore che incrementa fino alla fine dell'inserimento in quella colonna, per poi passare questo valore in un vettore, che mi servirà per sapere di quanti caratteri è formata la parola. il problema è questo...non mi esce dal ciclo...potete aiutarmi?? sono 3 gg che mi ci sto spaccando la testa...ecco il codice:

    codice:
    #include<stdio.h>
    
     #define cols 100
     #define rows 10
    
    int main()
    {
     
     char m[rows][cols];
     int contatore[10]={0,0,0,0,0,0,0,0,0,0};
     
     char car;
     int carattere=0,parola=0,spazio=0,finito=0;
    
    while(finito==0) {
        
        while(spazio==0) {
    	printf("\a");
        	scanf("%c", &car);
    	
        	if ((car>='a' && car<='z') || (car>='A' && car<='Z') )  { 
    		m[carattere][parola]=car;	
    	 	contatore[parola]++;
    	}
         	else { 
            	if(car=='\n' || car==EOF) {
    	
    			spazio=1;	
    			finito=1;
    		} else {
    	
    			spazio=1;
    		}
        	}
        }
    
        parola++;
    }
    
    for(carattere=0;carattere<rows;carattere++){
     for(parola=0;parola<cols;parola++){
     printf("%c", m[carattere][parola]);
    }}
    
    return 0;
    }

    ho utilizzato 2 while per caricare la matrice xke altrimenti mi ripeteva il ciclo fino a quando nn passava tutti gli spazi, in questo modo quando la frase è finita mi esce in automatico...facendo delle prove mi accorgo che dal primo ciclo, quello interno esce...ma è quello esterno con condizione FINITO=1 che nn esce...

  2. #2

    RE:

    codice:
     char m[rows][cols];
     int contatore[10]={0,0,0,0,0,0,0,0,0,0};
     
     char car;
     int carattere=0,parola=0,spazio=0,finito=0;
    
     while(finito==0)
     {
      while(spazio==0)
      {
       printf("\a");
       scanf("%c", &car);
       
       if ((car>='a' && car<='z') || (car>='A' && car<='Z'))
       { 
        m[carattere][parola]=car;	
        contatore[parola]++;
       }
       else
       { 
        if(car=='\n' || car==EOF)
        {
         spazio=1;	
         finito=1;
         }
         else
         {	
          spazio=1;
         }
        }
       }
       parola++;
      }
    Io lo vedo un po sbagliato dal principio e mal strutturato, forse...Riguarda bene il tuo codice..

    Ti consiglio di usare le variabili argc & argv per l'input, usi la funzione strncpy su un puntatore o su un array, e per ogni spazio bianco che leggi nella lettura dell'array mandi a capo...
    Mi sembra la soluzione piu ovvia..
    In piu il programma non sembra fare quello che vuoi tu..

    simo@localhost:~/Desktop$ ./c

    io sono un ragazzo




    ^C simo@localhost:~/Desktop$


    :master: Io ho sbagliato qualcosa??
    Fammi sapere

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    10
    il programma non esce dal ciclo esterno, xke se fai delle prove mettendo delle stampe o il cicalino in vari punti...funziona, cioè ti stampa o suona il cicalino, ma nn esce dal ciclo esterno...ki mi da na mano? magari con uno skizzo di codice d'esempio?

  4. #4
    xke se fai delle prove mettendo delle stampe o il cicalino in vari punti...funziona, cioè ti stampa o suona il cicalino, ma nn esce dal ciclo esterno
    :master: What??

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    10
    se metti dentro i cicli interni una printf oppure una printf con /a(cicalino) ti accorgi che nei vari cicli ci entra e come xke stampa o suona il cicalino nei punti dove le inserisci...l'unico posto dove nn suona o stampa è nell'ultimo ciclo quello piu esterno

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.