Repository 32bit  Forum
Repository 64bit  Wiki

[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.

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

Messaggioda Plaoo » gio nov 06, 2008 12:14

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 nov 06, 2008 18:27, modificato 1 volta in totale.
Il canale ufficiale di slacky.eu si trova sui server irc.syrolnet.org canale #slackware
Avatar utente
Plaoo
Linux 2.6
Linux 2.6
 
Messaggi: 809
Iscritto il: gio apr 10, 2008 16:40
Località: Ittiri (SS)
Slackware: 14 64
Kernel: 3.2.9
Desktop: KDE

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

Messaggioda Mario Vanoni » gio nov 06, 2008 13:08

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
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

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

Messaggioda paolo86 » gio nov 06, 2008 13:12

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
paolo86
Linux 1.0
Linux 1.0
 
Messaggi: 73
Iscritto il: lun lug 14, 2008 18:22
Località: Cagliari
Nome Cognome: Paolo Cortis
Slackware: Slackware64 current
Kernel: 3.4.1-jiraiya
Desktop: KDE 4.8.2

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

Messaggioda kreen » gio nov 06, 2008 14:56

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
kreen
Linux 2.4
Linux 2.4
 
Messaggi: 228
Iscritto il: mer feb 01, 2006 18:32
Località: Verona
Slackware: 12.0
Kernel: 2.6.21.5-smp
Desktop: KDE

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

Messaggioda Plaoo » gio nov 06, 2008 18:27

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
Plaoo
Linux 2.6
Linux 2.6
 
Messaggi: 809
Iscritto il: gio apr 10, 2008 16:40
Località: Ittiri (SS)
Slackware: 14 64
Kernel: 3.2.9
Desktop: KDE

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

Messaggioda kreen » gio nov 06, 2008 18:46

Plaoo ha scritto:Sapevo che EOF era Ctrl-Z.


http://www.mail-archive.com/lin-club@vi ... 00987.html

Ciao e buon studio.
Avatar utente
kreen
Linux 2.4
Linux 2.4
 
Messaggi: 228
Iscritto il: mer feb 01, 2006 18:32
Località: Verona
Slackware: 12.0
Kernel: 2.6.21.5-smp
Desktop: KDE


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron