Gestione dei file di testo, matrici e struct

Slides:



Advertisements
Presentazioni simili
File Linguaggio C.
Advertisements

Introduzione al linguaggio C++
INFORMATICA Altre Istruzioni di I/O
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Gestione dei file Ing. Simona Colucci.
LINGUAGGIO DI PROGRAMMAZIONE C
Uso avanzato di C.
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Stringhe di caratteri In linguaggio C.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
INFORMATICA I file.
Caratteri e stringhe di caratteri
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
FILE DATI 16 lunedi 26 luglio giovedi ore 9 Come sappiamo, un file dati è un gruppo di informazioni tra loro correlate, memorizzate in un dispositivo di.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 15 Maggio 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 9 Maggio 2012.
Laboratorio di Linguaggi lezione VI Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
INFORMATICA I file. © Piero Demichelis 2 File Per rendere più uniforme possibile il comportamento dei programmi in relazione alla grande varietà dei dispositivi.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Struct, enum, Puntatori e Array dinamici
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
Esercizi C sui tipi definiti dall’utente
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Esercizi di riepilogo sul linguaggio C: file, puntatori, liste
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
1 Gestione dei File Corso di Informatica A Vito Perrone.
File di testo, file binari
I File.
Le funzioni.
GESTIONE DEI FILE Per poter mantenere disponibili i dati tra le diverse esecuzioni di un programma (persi-stenza dei dati) è necessario poterli archi-viare.
C14 #12 Verso le olimpiadi Piero Scotto - C14.
Piero Scotto - C141 C14 #6 I VETTORI (#define e const)
Equazione di secondo grado.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Piero Scotto - C141 C14 #09 Gestione stringhe: esercizio. Switch case. Variabili logiche.
Creazione progetto in C++/DEV
Massimo Comun Divisore
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Gestione dei File. 2 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi –Si usano dall'interno dei programmi Realizzano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Esercizi su File.
Esercizi su File e Liste
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Piero Scotto - C141 C14 SINTASSI DEL C VARIABILI e COSTANTI.
C14 #5 I cicli FOR e WHILE Piero Scotto - C14.
Piero Scotto - C141 C14 #7 Do While – Break Funzioni ricorsive.
Piero Scotto - C141 C14 #10 Il programma Dev-c++ Gestione dei file.
Soluzioni e commenti esercizi 1 e 2
2000 Prentice Hall, Inc. All rights reserved. Capitolo 11 (Deitel) Lelaborazione dei file Sommario Introduzione La gerarchia dei dati 11.3.
1 Esempi domande di esame. 2 Dato il seguente programma #include int main(){ int *p,j=9,i=5; p=&j; *p=i; printf("%d %d %d\n", i,j,*p); scanf("%d",p);/*
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni – BCOR Ingegneria Elettronica – BELR Introduzione al C Esercitazione 5 D. Bloisi, A.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 11 e 12 -
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
File binari Accesso a file con record di lunghezza costante Struct Persona { Int id; Char nome[50];// nome e cognome Double stipendio; }; Persona dipendente;
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 21 Maggio 2014.
Fabio Scotti – Università degli Studi – Laboratorio di programmazione per la sicurezza 1 Lezione 13 e 14 GESTIONE DEI FILE A) Nozioni sulla gestione dei.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 13 e 14 -
Operatori di incremento e decremento
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Gestione dei file di testo, matrici e struct Piero Scotto - C14

Finalità del corso Finalità del corso Finalità del corso Piero Scotto - C14

Il cifrario di Cesare Si scriva un programma che cifri/decifri un file di testo in base ad un codice segreto. Il programma deve chiedere il nome del file di input, il nome del file di output e il codice segreto (un numero intero). La cifratura avviene sostituendo le sole lettere (maiuscole e minuscole separatamente) con altre lettere in base al valore del codice. Il valore del codice indica di quanti caratteri si deve traslare ciascuna delle lettere: se ad es. il codice è 3, allora ‘A’ --> ‘D’, ‘B’ --> ‘E’, ... ‘X’ --> ‘A’, ‘Y’ --> ‘B’, ‘Z’ --> ‘C’. La corrispondenza completa delle lettere maiuscole (per le minuscole è analogo) è: Ad esempio, con codice=3 “Ciao” diventa “Fldr”. Si noti che per decifrare un testo basta inserire come codice il valore opposto a quello usato per la cifratura (qui –3). Piero Scotto - C14

#define LETTEREALFABETO 26 int main() { int codice, i, l; int c; #define MAXSTRING 80 #define LETTEREALFABETO 26 int main() { int codice, i, l; int c; char riga[MAXSTRING]; /* riga da cifrare e’ un vettore di 80 caratteri */ char FileIN[FILENAME_MAX]; char FileOUT[FILENAME_MAX]; /* FILE *fpIN, *fpOUT; printf("Input file: "); gets(FileIN); if ( (fpIN = fopen(FileIN, "r")) == NULL ) { fprintf(stderr, "Impossibile aprire il file: %s\n", FileIN); return EXIT_FAILURE; } printf("Output file: "); gets(FileOUT); if ( (fpOUT = fopen(FileOUT, "w")) == NULL ) fprintf(stderr, "Impossibile aprire il file: %s\n", FileOUT); printf("Codice: "); scanf("%d", &codice); Piero Scotto - C14

#include<stdio.h> #include<ctype.h> #include<string.h> #include<stdlib.h> #define MAXSTRING 80 #define LETTEREALFABETO 26 int main() { int codice, i, l; int c; char riga[MAXSTRING]; /* riga da cifrare */ char FileIN[FILENAME_MAX]; /* FILENAME_MAX e’ la massima lunghezza di un file, costante di stdio.h */ char FileOUT[FILENAME_MAX]; FILE *fpIN, *fpOUT; /* fpIN e fpOUT sono dei puntatori ai file che leggo e che scrivo */ printf("Input file: "); gets(FileIN); if ( (fpIN = fopen(FileIN, "r")) == NULL ) fprintf(stderr, "Impossibile aprire il file: %s\n", FileIN); return EXIT_FAILURE; } /* una possibile modalita’ di apertura del file in lettura con segnalazione di errore */ printf("Output file: "); gets(FileOUT); if ( (fpOUT = fopen(FileOUT, "w")) == NULL ) fprintf(stderr, "Impossibile aprire il file: %s\n", FileOUT); } /* una possibile modalita’ di apertura del file in scrittura con segnalazione di errore */ printf("Codice: "); scanf("%d", &codice); Piero Scotto - C14

/. I valori utili per codice sono da 0 a 25, ad es /* I valori utili per codice sono da 0 a 25, ad es. 26 equivale a 0, 27 a 1, etc. quindi conviene riportare il codice fornito dall'utente come ad un valore tra 0 e 25 calcolando il resto di (codice % 26). Lo standard pero' non garantisce che l'operatore % mantenga il segno nel risultato, quindi lo si calcola sempre come valore positivo e poi si cambia di segno al risultato se codice era negativo */ codice = (codice>=0 ? +1 : -1) * (abs(codice) % LETTEREALFABETO); while (fgets(riga, MAXSTRING, fpIN) != NULL) /* ciclo while fino alla fine del file */ { l = strlen(riga); /* misuro la lunghezza della riga, cioe’ quanti sono i caratteri */ for (i=0; i<l; i++) c = riga[i]; /* metto il carattere i-esimo in c */ if (isupper(c)) /* maiuscola */ c += codice; if (c > 'Z') /* sfora a destra */ c -= LETTEREALFABETO; else if (c < 'A') /* sfora a sinistra */ c += LETTEREALFABETO; riga[i] = (char)c; /* operazione di casting su c */ } else if (islower(c)) /* minuscola */ if (c > 'z') else if (c < 'a') riga[i] = (char)c; fputs(riga, fpOUT); /* metto la riga modificata sul file fpOUT */ fclose(fpIN); fclose(fpOUT); return EXIT_SUCCESS; Piero Scotto - C14

Se mandiamo in esecuzione il file e indichiamo testo.txt ovvero E’ opportuno mettere il file di testo nella directory di dev-cpp o del compilatore e ricordarsi il nome. Se mandiamo in esecuzione il file e indichiamo testo.txt ovvero “Quel ramo del lago di Como, che volge a mezzogiorno, tra due catene non interrotte di monti, tutto a seni e a golfi, a “ e testo2.txt come file di output con codice 35 otteniamo: “Zdnu ajvx mnu ujpx mr Lxvx, lqn exupn j vniixprxawx, caj mdn ljcnwn wxw rwcnaaxccn mr vxwcr, cdccx j bnwr n j pxuor, j” Se poi usiamo testo2.txt come testo di input e testo3.txt come testo di output scrivendo come codice -35 abbiamo nuovamente il testo iniziale. Piero Scotto - C14

Piero Scotto - C14

Piero Scotto - C14

Piero Scotto - C14

Piero Scotto - C14

Piero Scotto - C14

Piero Scotto - C14

Piero Scotto - C14

Piero Scotto - C14