Anteprima
Vedrai una selezione di 1 pagina su 5
Appunti Informatica - 2/2 Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

• Confronto tra stringhe

• senza libreri

È possibile verificare se due stringhe coincidono: verificando se esse coincidono in ogni elemento fino a

che (almeno) una delle due termina

#include <stdio.h>

int fine = 0, uguali = 1;

int i = 0; 3 controlli iniziali

char s1[30], s2[30];

int main() {

gets(s1);

gets(s2);

while (i < 30 - 1 && uguali == 1 && fine == 0) {

if (s1[i] != s2[i])

uguali = 0;

else if (s1[i] == '\0') /* qui s1[i] == s2[i] */

fine = 1;

i++;

}

printf("%s e %s ", s1, s2);

if (uguali == 0)

printf("non ");

printf("coincidono");

return 0;

}

• Con libreria

Possibile usare la funzione strcmp, contenuta nella libreria string.

Sintassi strcmp(s1 , s2); S1, elemento da confrontare con S2

strcmp(s1, s2);

int cmpr;

cmpr = strcmp(str1, str2);

if (cmpr == 0)

printf("%s e %s coincidono", str1, str2);

• == 0 se coincidono

• < 0 se s1 precede s2 in ordine alfabetico

• > 0 se s1 segue s2 in ordine alfabetico

• Copia tra stringhe

• senza libreri

È possibile assegnando un carattere alla volta

#include <stdio.h>

#define N 100

#define M 50

int main() {

char s1[N], s2[M]; /* Si suppone N >= M */ Copio s2 in s1

int i = 0;

gets(s2); // Lettura di s2

// Copia dei caratteri da s2 a s1

while (i < N && s2[i] != '\0') {

s1[i] = s2[i];

i++;

}

s1[i] = '\0'; // Terminazione della stringa s1

printf("s1: %s\n", s1);

return 0;

}

• Con libreria

È possibile eseguire la copia elemento per elemento da un array ad un altro.

Oppure è possibile usare la funzione strcpy,contenuta nella libreria string.

Copia il contenuto di s2in s1 incluso il ‘\0’

strcpy(s1, s2);

• Struct e Liste sequenziali

// Definizione della struttura Lista

typedef struct { Come viene definita una

int N; // Numero di elementi nella sequenza struttura che contiene un

int Seq[10]; // Sequenza di numeri (massimo 10 elementi)

} Lista; char[] e un intero

// Dichiarazione delle variabili

Lista L;

- Ricerca di un valore

// Definizione della struttura Lista

typedef struct {

int N; // Numero di elementi nella sequenza

int Seq[10]; // Sequenza di numeri (massimo 10 elementi)

} Lista; Quando il valore viene

trovato manda falsa

// Dichiarazione delle variabili

Lista L; // Variabile di tipo Lista questa condizione che

int val; // Valore da cercare non rende più uguale

int i; // Indice di iterazione &&

int pos; // Posizione del valore nella sequenza != vuol dire diverso

// Inizializzazione dell'indice

i = 0;

// Ricerca del valore nella sequenza && questo e quello

while (i < L.N && L.Seq[i] != val) { tutte e due le

i++; // Incrementa l'indice

} condizioni devo essere

soddisfatte

// Controllo se il valore è stato trovato

if (i < L.N) { || una delle due

pos = i; // Il valore è stato trovato, memorizza la posizione

} else { condizioni deve essere

pos = -1; // Il valore non è stato trovato, posizione non valida soddisfatta

}

Dettagli
Publisher
A.A. 2024-2025
5 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Alex2005N di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Rana Vincenzo.