[C]Esercizi 1.6-1.7 Il linguaggio C K&R[RISOLTO]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Plaoo
Linux 3.x
Linux 3.x
Messaggi: 809
Iscritto il: gio 10 apr 2008, 17:40
Slackware: 14 64
Kernel: 3.2.9
Desktop: KDE
Località: Ittiri (SS)

[C]Esercizi 1.6-1.7 Il linguaggio C K&R[RISOLTO]

Messaggio da Plaoo »

Salve a tutti sto iniziando a studiare il C ho appena acquistato il libro di K&R e pur conoscendo l'informatica teorica (cicli,variabili,funzioni, ecc) leggendo attentamente il libro mi sono fermato a questi esercizi:

1.6 Si verifichi che l' espressione getchar() != EOF abbia valore 0 o1 ho scritto questo:

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
long c;
while ((c = getchar()) != EOF){
    printf("%1d\n",(getchar()!= EOF));
}

return 0;
}
Sapete dirmi se è giusto??

1.7 Si scriva un programma che visualizzi il valore di EOF io scritto questo:

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
long c;
while ((c = getchar()) != EOF){
    printf("%1d\n",(getchar()!= EOF));
    printf("%d\n", EOF);
}

return 0;
}
Il problema qua è che EOF vale -1 è giusto??

Scusate la banalità del post ma non posso sapere se quello che ho scritto è giusto non conoscendo affatto il reale valore di EOF nel libro non c'è scritto :?
Ultima modifica di Plaoo il gio 6 nov 2008, 18:27, modificato 1 volta in totale.
Il canale ufficiale di slacky.eu si trova sui server irc.syrolnet.org canale #slackware

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R

Messaggio da Mario Vanoni »

Plaoo ha scritto:Salve a tutti sto iniziando a studiare il C ho appena acquistato il libro di K&R e pur conoscendo l'informatica teorica (cicli,variabili,funzioni, ecc) leggendo attentamente il libro mi sono fermato a questi esercizi:

1.6 Si verifichi che l' espressione getchar() != EOF abbia valore 0 o1 ho scritto questo:

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
long c;
while ((c = getchar()) != EOF){
    printf("%1d\n",(getchar()!= EOF));
}

return 0;
}
Sapete dirmi se è giusto??

1.7 Si scriva un programma che visualizzi il valore di EOF io scritto questo:

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
long c;
while ((c = getchar()) != EOF){
    printf("%1d\n",(getchar()!= EOF));
    printf("%d\n", EOF);
}

return 0;
}
Il problema qua è che EOF vale -1 è giusto??

Scusate la banalità del post ma non posso sapere se quello che ho scritto è giusto non conoscendo affatto il reale valore di EOF nel libro non c'è scritto :?
visto che includi stdio.h
leggiti
/usr/include/stdio.h

Avatar utente
paolo86
Linux 0.x
Linux 0.x
Messaggi: 73
Iscritto il: lun 14 lug 2008, 19:22
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2
Località: Cagliari
Contatta:

Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R

Messaggio da paolo86 »

Intanto direi che usare una variabile di tipo long per i caratteri è un tantino esagerato...
puoi usare al massimo int... comunque è meglio se usi char...
Per stampare il valore di EOF ti bastava fare:

Codice: Seleziona tutto

#include <stdio.h>  //Necessario per la printf

int main()
{
  printf("%d\n", EOF);

  return 0;  //Se la funzione ha un tipo di ritorno non puoi dimenticarti la return
}
Hai dimenticato anche le return e %d è solo per interi... per i long è %ld se non sbaglio, mentre per i caratteri %c...

Ciao!!

Avatar utente
kreen
Linux 2.x
Linux 2.x
Messaggi: 228
Iscritto il: mer 1 feb 2006, 18:32
Slackware: 12.0
Kernel: 2.6.21.5-smp
Desktop: KDE
Località: Verona

Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R

Messaggio da kreen »

Plaoo ha scritto:1.6 Si verifichi che l' espressione getchar() != EOF abbia valore 0 o 1
Ciao.
Dovresti anche verificare che getchar() != EOF abbia valore 0. Invece nella condizione del while tu cicli finche' è diverso da EOF.

Codice: Seleziona tutto

#include <stdio.h>
#include <stdlib.h>

/* Se vuoi terminare, inviando EOF, premi Ctrl-d */

int main(void)
{
int c = 0;
while (c = (getchar() != EOF)){
    printf("getchar() != EOF ---> %1d\n", c);
}

printf("getchar() == EOF ---> %1d\n", c);

return 0;
}

Avatar utente
Plaoo
Linux 3.x
Linux 3.x
Messaggi: 809
Iscritto il: gio 10 apr 2008, 17:40
Slackware: 14 64
Kernel: 3.2.9
Desktop: KDE
Località: Ittiri (SS)

Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R

Messaggio da Plaoo »

paolo86 ha scritto:Intanto direi che usare una variabile di tipo long per i caratteri è un tantino esagerato...
puoi usare al massimo int... comunque è meglio se usi char...
Per stampare il valore di EOF ti bastava fare:

Codice: Seleziona tutto

#include <stdio.h>  //Necessario per la printf

int main()
{
  printf("%d\n", EOF);

  return 0;  //Se la funzione ha un tipo di ritorno non puoi dimenticarti la return
}
Hai dimenticato anche le return e %d è solo per interi... per i long è %ld se non sbaglio, mentre per i caratteri %c...

Ciao!!
E' questo l'ho fatto ma mi sembrava strano che il valore di EOF sia -1
kreen ha scritto:

Codice: Seleziona tutto

.../* Se vuoi terminare, inviando EOF, premi Ctrl-d */...
Sapevo che EOF era Ctrl-Z.
Comunque grazie a tutti quelli che mi hanno aiutato, praticamente facevo le cose giuste (non ho postato tutte le prove che ho fatto) mi siete serviti per controllare il mio lavoro grazie ancora :thumbright:
Il canale ufficiale di slacky.eu si trova sui server irc.syrolnet.org canale #slackware

Avatar utente
kreen
Linux 2.x
Linux 2.x
Messaggi: 228
Iscritto il: mer 1 feb 2006, 18:32
Slackware: 12.0
Kernel: 2.6.21.5-smp
Desktop: KDE
Località: Verona

Re: [C]Esercizi 1.6-1.7 Il linguaggio C K&R[RISOLTO]

Messaggio da kreen »

Plaoo ha scritto:Sapevo che EOF era Ctrl-Z.
http://www.mail-archive.com/lin-club@vi ... 00987.html

Ciao e buon studio.

Rispondi