Esercizi sulle stringhe
|
|
|
- Marino Bertolini
- 6 anni fa
- Visualizzazioni
Transcript
1 Esercizi sulle stringhe
2 Esercizio 1 La cifratura è un processo di sostituzione, permutazione manuale ed automatica di simboli. Lo scopo di un criptosistema è di cifrare un testo intellegibile (in chiaro) producendo un testo cifrato(criptogramma). La decifratura rappresenta il processo inverso ovvero è l operazione messa in atto dal destinatario per riottenere il testo in chiaro. Dato un valore intero k, scrivere un programma per la cifratura e decifratura di stringhe lunghe al più 50 caratteri dove ogni carattere della stringa viene fatto shiftare di k caratteri. Applicare l algoritmo alla stringa costante "nelmezzodelcammindinostravita" Esercizi su stringhe 2
3 Esercizio 1 (cont.) #include <stdio.h> #define N 51 main(){ char s[n]="nelmezzodelcammindinostravita"; int i; int k; } scanf( %d,&k); for (i=0; s[i]!='\0'; i++) /*cifratura s[i]=s[i]+k; printf( Stringa cifrata: %s,s); for (i=0; s[i]!='\0'; i++) /*decifr. s[i]=s[i]-k; printf( Stringa decifrata: %s,s); Esercizi su stringhe 3
4 Esercizio 1 Variante Dato un carattere k, scrivere un programma per la cifratura e decifratura di stringhe lunghe al più 50 caratteri. Ogni carattere della stringa viene fatto shiftare di un numero di caratteri equivalente alla posizione nell alfabeto del carattere k.. Il risultato deve essere una stringa di caratteri dell alfabeto a - z. Applicare l algoritmo ad una stringa inserita da tastiera.! NOTA È necessario prevedere gli opportuni meccanismi di shifting con rotazione dei caratteri. Ad esempio, se ho il carattere z e lo devo shiftare di 3 posizioni allora il risultato è c. Esercizi su stringhe 4
5 Esercizio 1 Variante (cont.) #include <stdio.h> #define N 51 main(){ char s[n]; int i; char k; scanf( %s",s); scanf("%c", &k); k=k-'a'; for (i=0; s[i]!='\0' ; i++){ s[i]=s[i]+k; if(s[i]> z ) s[i]= a +(s[i]%'z')-1;} for (i=0; s[i]!='\0' ; i++){ s[i]=s[i]-k; if(s[i]< a ) s[i]='z'-(('a'%s[i])-1);}} Esercizi su stringhe 5
6 Esercizio Modificare l esercizio precedente affinché richieda la chiave di cifratura e poi consenta la cifratura/ decifratura di una sequenza di stringhe fornita da tastiera. Ogni stringa inserita dall utente deve essere prima cifrata (con stampa del risultato) e poi decifrata. Scrivere quindi due varianti: 1. Viene prima richiesto all utente il numero delle stringhe inserite e poi la sequenza di stringhe 2. La lunghezza della sequenza non è nota a priori Esercizi su stringhe 6
7 Esercizio 2 Scrivere un programma per la cifratura e decifratura con parola chiave di stringhe minuscole lunghe al più 50 caratteri. Per ogni carattere c della stringa, si considera il carattere k di eguale posizione (modulo la lunghezza della parola chiave) nella parola chiave, e si fa shiftare c di un numero di caratteri equivalente alla posizione nell alfabeto del carattere k. Il risultato deve essere una stringa di caratteri dell alfabeto a - z. Ad esempio data la stringa ciao e la parola chiave no, la corrispondente parola cifrata è pwnc. Applicare l algortimo alla stringa costante nelmezzodelcammindinostravita con parola chiave dante. Esercizi su stringhe 7
8 Esercizio 2 (cont.) #include <stdio.h> #include <string.h> #define N 51 void main(){ char s[n]="nelmezzodelcammindinostravita", crit[] = "dante"; int i,k; k=strlen(crit); /*cifratura*/ for (i=0; s[i]!='\0'; i++) { c2=crit[i%k]-'a'; s[i]=s[i]+c2; if(s[i]>'z') s[i]='a +(s[i]%'z')-1;} /*decifratura*/ for (i=0; s[i]!='\0' ; i++) { c2=crit[i%k]-'a'; s[i]=s[i]-c2; if(s[i]<'a') s[i]='z'-(('a'%s[i])-1);}} Esercizi su stringhe 8
9 Esercizio 3 Utilizzando le funzioni della libreria string.h e date due stringhe sta e stb lunghe al più 99 caratteri inserite da tastiera scrivere un programma che 1. concatena la stringa sta alla stringa e memorizza il risultato in sta 2. concatena sta a stb e memorizza il risultato in sta, 3. stampa i caratteri della stringa risultante sta in ordine inverso. NOTA Le funzioni di string.h coinvolte sono strcat e strlen Esercizi su stringhe 9
10 Esercizio 3 (cont.) #include <stdio.h> #include <string.h> void main () { char sta[100],stb[100]; int i; printf("introdurre una stringa: "); scanf( %s,&sta[0]); strcat(sta," "); printf("introdurre una stringa: "); scanf( %s,&stb[0]); strcat(sta,stb); for(i=strlen(sta)-1; i>=0;i--) printf("%c",sta[i]); } Esercizi su stringhe 10
11 Esercizio 4 Dati: un vettore contenente al più 100 nomi di persona (lunghezza <=20) forniti da tastiera un nome scrivere un programma che conta quante volte il nome compare nel vettore. NOTA Un vettore di stringhe di lunghezza <= 20 è definito come: char nomi[100][21]; In alternativa è possibile definire il tipo stringa: typedef char stringa[21]; E quinidi definire nomi come vettore di tipo stringa: stringa nomi[100]; Esercizi su stringhe 11
12 Esercizio 4 (cont.) #include <stdio.h> #include <string.h> typedef char stringa[21]; int main ( ) { stringa NOMI[100], NOMECERCATO; int I,N,CONTA; printf("quanti NOMI NEL VETTORE? "); scanf("%d",&n); for (I=0; I<N; I++){ printf("introdurre il nome %d:", I+1); scanf("%s", NOMI[I]); /* oppure scanf( %s,&nomi[i][0]); */} Esercizi su stringhe 12
13 Esercizio 4 (cont.) printf("introdurre il nome da cercare:"); scanf("%s", NOMECERCATO); for (CONTA=0,I=0; I<N; I++) { if (strcmp(nomi[i], NOMECERCATO)==0) CONTA = CONTA + 1;} printf("il nome compare N.volte= %d:", CONTA); } Esercizi su stringhe 13
14 Definizione di tipi in C: typedef Usare typedef per definire il tipo stringa fa sì che il compilatore aggiunga stringa alla lista dei nomi di tipi che è in grado di riconoscere Adesso stringa può essere utilizzata per dichiarare variabili, nelle espressioni di cast e in qualsiasi altro punto dove è richiesto un tipo ESEMPIO stringa NOMI[100], NOMECERCATO; Per il compilatore stringa è sinonimo di un char[21] ESEMPIO: Definizione del tipo Bool typedef int Bool; Bool flag; Esercizi su stringhe 14
15 Esercizi Rivedere i programmi sui vettori ordinati assumendo che i vettori siano vettori di stringhe Scrivere un programma che trasforma una stringa lunga al più 20 caratteri sostituendo caratteri minuscoli con caratteri maiuscoli Scrivere un programma che data una stringa s lunga al più 40 caratteri, produce una stringa e che rappresenta il reverse della stringa s. Scrivere un programma che dato un vettore V di stringhe lunghe al più 20 caratteri e un carattere c, copi in un altro vettore tutte e sole le parole del vettore V che iniziano con il carattere c Esercizi su stringhe 15
Esercizi. Stringhe. Stringhe Ricerca binaria
Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)
5 Stringhe. Esiste una libreria di C che gestisce le stringhe string.h essa ci permette di:
Le stringhe di caratteri sono gestite in C come dei vettori di char con alla fine un tappo dato dal carattere \0. E possibile acquisire un intera stringa di caratteri in una sola istruzione grazie all
Programmazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti
Informatica 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0
STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1
L AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using
Stringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
Esercitazione di Reti degli elaboratori
Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione
Esercitazione 12. Esercizi di Ricapitolazione
Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,
Introduzione al linguaggio C Funzioni
Introduzione al linguaggio C Funzioni Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
Gestione delle stringhe in C
Gestione delle stringhe in C 1 Generalità Una stringa è un vettore di caratteri il cui ultimo elemento è un carattere terminatore (o di fine stringa), codificato dal carattere di codice 0 e rappresentato
Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C
Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi
#include <stdio.h> main() { - 1 -
Un primo esempio di programma Ogni programma C deve contenere una funzione speciale chiamata main che indica il punto in cui inizia l esecuzione del programma. La funzione main è unica all interno di ogni
Aggregati di dati eterogenei: il tipo struct. Esercizi risolti
Esercizi risolti 1 Esercizio Si vuole realizzare un tipo utilizzato per informazioni su operazioni di vendita, avente i seguenti campi: codice: numero intero indicante il codice di riferimento dell articolo
Corso di Informatica 1 Esercitazione n. 4
Corso di Informatica 1 Esercitazione n. 4 Marco Liverani Esercizio n. 1 Letti in input due numeri interi n > 0 e k > 1 costruire un array A di n numeri interi casuali minori di 100 che non siano multipli
Dati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
STRINGHE: ARRAY DI CARATTERI! a p e \0
STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più
Esercizio 1 (15 punti)
Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind
Stringhe in C. Emilio Di Giacomo
Stringhe in C Emilio Di Giacomo Stringhe Una stringa è una sequenza finita di caratteri Le stringhe sono un tipo di dati talmente importante e utile che fanno parte di quasi tutti i linguaggi di programmazione
Lezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
stringhe array monodimensionali char. libreria < string.h>
Le stringhe Le stringhe sono array monodimensionali il cui tipo base è char. Il nucleo del linguaggio non prevede particolari istruzioni per il trattamento delle stringhe che potrebbero essere gestite
Introduzione alla programmazione. Alice Pavarani
Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello
Caratteri e stringhe
Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un
Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
ESERCIZIO 1 ESERCIZIO 2
ESERCIZIO 1 Scrivere una funzione che data una stringa A calcoli la sua lunghezza. int lunghezza(char A[]); Scrivere una funzione che date due stringhe A e B copi il contenuto di A in B e restituisca il
ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
Primo programma in C
Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file
