PDA

Visualizza la versione completa : [C] Esercizi


AR64S-H
18-04-2003, 14:12
Allora ho da fare questi esercizi non so se ho capito bene la traccia potreste dirmi voi come la intendete. Sono esercizi sui flussi standard e il reindirizzamento. Posso usare funzioni come getc,getchar,gets,scanf,fscanf,printf,fprintf,unge tc,getch.
Ciao

Esercizio 1: Scrivere un programma che reinderizzi un file sulla stampante un carattere per volta

Esercizio 2: Scrivere un programma che utilizzi il reinderizzamento per accettare l'input da un file su disco , conti il numero di occorrenze di ciascuna lettera nel file e poi visualizzi il risultato sullo schermo.

Esercizio 3: Scrivere un programma che stampi i file sorgente C. Utilizzare il reindirizzamento per inserire il file sorgente e fprintf per la stampa.

Esercizio 4: Modificando l'es. 3 inserire i numeri di riga nella stampa.

Esercizio 5: scrivere un programma che accetti l'input da tastiera, ne esegua l'eco sullo schermo e poi lo riproduca sulla stampante. Il programma deve contare le righe e fare avanzare la carta nella stampante di una pagina quando necessario. Utilizzare un tasto funzione per terminare il programma.

Grazie
Ciao :ciauz:

AR64S-H
18-04-2003, 14:47
up

AR64S-H
18-04-2003, 15:57
up

AR64S-H
19-04-2003, 12:34
Up
Please :(

Temibile Alce
19-04-2003, 23:38
Up(aiutate questo poveraccio!)

akiross
20-04-2003, 21:07
Vabe, mi spiace averti visto solo ora, vedo che posso fare:

1. Per quanto sembra, non devi fare altro che un programma che preso un file, mandi, un carattere alla volta, i dati sulla stampante. In altre parole un programma per stampare.
-----SVOLGIMENTO-----
PREMESSE:
Per utilizzare la stampante devi usare lo stream standard stdprn. Questo e' un normale stream, come stdout (per la console) che indirizza i dati verso la stampante (LPT1)
Inoltre, devi utilizzare le operazioni su file, cioe' fopen() fclose(), fscanf() (o fgetc()) e fprintf() (o fputc())
LOGICA:
Il programma e' semplice. Le cose difficili erano solo sapere quali stream usare.
Questo deve:
-Aprire il file e gestire eventuali errori
-Ciclo che va dall'inizio alla fine con lettura e stampa dei carateri
-Chiusura del file
CODICE: Sappi che me lo sto inventando al volo...


int main(int argc, char *argv[])
{
FILE *ptr = NULL;
if (argc < 2)
{
printf("Utilizzo: %s <nomefile>", argv[0]); // gestisce errori di esecuzione
exit(1);
}
else
ptr = fopen(argv[1], "r");
if (ptr == NULL)
{
printf("Imposs aprire il file\n");
exit(2);
}

while(!ptr.feof())
fprintf(stdprn, "%c", fgetc(ptr));

fclose(ptr);
}

Questo rudimentale programma dovrebbe funzionare, non so che fara' seriamente, ma la logica dovrebbe esserci

Ora vado a mangiare
poi posto gli altri e vedo che posso fare
ciao

akiross
20-04-2003, 22:43
RIEKKIME
Ha gia, forse, il programma che ho fatto e' bagliato, sono adesso mi viene in mente che forse avresti proprio dovuto reindirizzare lo stream per la stampante... bho non so.
Passo al secondo esercizio:
2. Anche qui ho il clamoroso sosptetto che tu debba reindirizzare gli stream, ma non so come si fa :)
Comunque credo che anche qui tu debba aprire il file e contare quante volte c'e' una determinata lettera in esso.

Ripeto che questa soluzione non mi ispira troppo... secondo me va fatto in un altro modo, ma dato che nn saprei che fare, ti scrivo questo, poi vedi tu.

LOGICA:
Apri un file
leggi, un carattere alla volta e li confronti con quello dato
conti quelli uguali :)
chiudi il file

no, il sorgente non te lo faccio, e' semplicissimo, puoi anche modificare il codice del primo eserizio

3: pure questo e' abbastanza facile, o almeno credo. Devi utilizzare il primo parametro argv[0] per sapere il nome del file. Poi immagino tu gli aggiunga l'estenzione .c e lo apri normalmente.

Il quinto non lo so

ti ricordo che credo non vadano bene le tecniche usate, e' probabile che ci sia bisogno di un vero reindirizzamento, che non conosco

mi spiace
ciao

AR64S-H
22-04-2003, 12:03
Ti ringrazio per avermi risposto. Purtroppo non posso usare argv e fopen ed fclose.

Per reindirizzamento intendo eseguire da prompt questo comando
Se il file si chiama es2.exe

es2<presentazione.txt
In questo modo le funzioni fscanf e company i8nviano a stdin il contenuto del file.
Se invece scrivo es2>prn il programma reindirizza alla stampante l'output del programma.
Se mi sai aiutare te ne sarò gratissimo
Ciao :ciauz:

akiross
22-04-2003, 13:19
ummm, vedo che posso fare

a giudicare da quello che vedo... sembra che gli argomenti per il programma ti servano. Cioe', se non mi sbaglio, avviarlo facendo

programma < file.txt
o
programma > file.txt

utilizza i parametri, tramite argc e argv

altrimenti tu come lo fai?

ora, non continuo a fare il programma perche' sarebbe un po inutile. Comincia a dirmi come risolvere questo problema facendo a modo tuo, poi ti faccio il programma, altrimenti e' un po inutile

ciao :)

AR64S-H
22-04-2003, 13:24
Allora io pensavo di fare così:

#include <stdio.h>

char buffer[256];
int x;
+
int main(){
while(gets(ptr)!=NULL)
for(x=0;x<256;x++){
fputc(ptr[x],stdprn);
}
return 0;
}
ma mi stampa qualcosa di assurdo.

Loading