Programma da mettere alla prova!

di il
27 risposte

27 Risposte - Pagina 2

  • Re: Programma da mettere alla prova!

    Tu cercavi i bug, questo è un bug. Comunque, se vuoi risolverlo, modifica il codice, io smetto.
  • Re: Programma da mettere alla prova!

    Questo in realtà è il codice originale ma non funziona, secondo te perché?
    
    #include <stdio.h>
    
    #define IN 1   //all' interno della parola
    #define OUT 0   //all' esterno della parola
    
    //conta il numero di righe, parole e caratteri del testo in ingresso
    main()
    {
    	int c, nl, nw, nc, state;
    
    	state = OUT;   
    	nl = nw = nc = 0;
    	while ((c = getchar()) != EOF) {
    		++nc;
    		if (c == '\n')
    			++nl;
    		if (c == ' ' || c == '\n' || c == '\t')
    			state = OUT;
    		else if (state == OUT) {
    			state = IN;
    			++nw;
    		}
    	}
    	printf("Righe:%d Parole:%d Caratteri:%d\n", nl, nw, nc);
    }
    
    cambia solo che printf è stato messo fuori dal ciclo
  • Re: Programma da mettere alla prova!

    SuperManPC ha scritto:


    Questo in realtà è il codice originale ma non funziona, secondo te perché?
    
    #include <stdio.h>
    
    #define IN 1   //all' interno della parola
    #define OUT 0   //all' esterno della parola
    
    //conta il numero di righe, parole e caratteri del testo in ingresso
    main()
    {
    	int c, nl, nw, nc, state;
    
    	state = OUT;   
    	nl = nw = nc = 0;
    	while ((c = getchar()) != EOF) {
    		++nc;
    		if (c == '\n')
    			++nl;
    		if (c == ' ' || c == '\n' || c == '\t')
    			state = OUT;
    		else if (state == OUT) {
    			state = IN;
    			++nw;
    		}
    	}
    	printf("Righe:%d Parole:%d Caratteri:%d\n", nl, nw, nc);
    }
    
    cambia solo che printf è stato messo fuori dal ciclo

    Ne sei sicuro? che tipo di funzione è la funzione principale? cosa ritorna? poi dai una controllata al codice, se non capisci una cosa studiala, non ha senso fare esperimenti senza cognizione di causa.
  • Re: Programma da mettere alla prova!

    Si ne sono sicuro ho copiato il codice dal libro, è main la funzione principale ma non c'è return
  • Re: Programma da mettere alla prova!

    Forse piuttosto che ritornare visualizza
  • Re: Programma da mettere alla prova!

    Io ti ho già risposto sul newlinwma non hai fatto nessuna correzione
  • Re: Programma da mettere alla prova!

    Il newline volevo correggerlo dopo questa questione perché è quest' ultimo il codice in realtà. Devo fare un altro thread per chiedere perché non funziona o posso qui?
  • Re: Programma da mettere alla prova!

    Potresti perfavore dirmi perché se metto la printf fuori dal ciclo while non si visualizza niente dando return?
  • Re: Programma da mettere alla prova!

    Non so se si può definire corretto, ho messo solo che nc all' inizio è -1.
    
    #include <stdio.h>
    
    #define IN 1   //all' interno della parola
    #define OUT 0   //all' esterno della parola
    
    //conta il numero di righe, parole e caratteri del testo in ingresso
    main()
    {
    	int c, nl, nw, nc, state;
    
    	state = OUT;   
    	nl = nw = 0;
    	nc = -1;
    	while ((c = getchar()) != EOF) {
    		++nc;
    		if (c == '\n')
    			++nl;
    		if (c == ' ' || c == '\n' || c == '\t')
    			state = OUT;
    		else if (state == OUT) {
    			state = IN;
    			++nw;
    		}printf("Righe:%d Parole:%d Caratteri:%d\n", nl, nw, nc);
    	}
    	
    }
    
  • Re: Programma da mettere alla prova!

    Ora è il top ma rimane la questione printf
    
    #include <stdio.h>
    
    #define IN 1   //all' interno della parola
    #define OUT 0   //all' esterno della parola
    
    //conta il numero di righe, parole e caratteri del testo in ingresso
    main()
    {
    	int c, nl, nw, nc, state;
    
    	state = OUT;   
    	nl = nw = nc = 0;
    	while ((c = getchar()) != EOF) {
    		if (c != ' ' && c != '\n' && c != '\t')
    		++nc;
    		if (c == '\n')
    			++nl;
    		if (c == ' ' || c == '\n' || c == '\t')
    			state = OUT;
    		else if (state == OUT) {
    			state = IN;
    			++nw;
    		}printf("Righe:%d Parole:%d Caratteri:%d\n", nl, nw, nc);
    	}
    	
    }
    
  • Re: Programma da mettere alla prova!

    Uff mi sa che non va bene neanche questa...
  • Re: Programma da mettere alla prova!

    Non capisco la logica della tua domanda iniziale. Tanto per incominciare perché noi dovremmo provare un programma che tu hai scritto? Lo hai scritto e non sei capace di provarlo?
    Inoltre il tipo di dato più utile per provare un programma che lavora su testi é..... Un testo. Apri una pagina di internet a caso e vedi che fa
  • Re: Programma da mettere alla prova!

    Visto che un programma che è stato scritto su un libro mi sembrava strano che non funzionasse, perché è l' unico che non va
Devi accedere o registrarti per scrivere nel forum
27 risposte