logo Thecsea.it



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License



scolastica » esercizi » terza superiore » linguaggio c

Testo dell'esercizio

Scrivere un programma che, richieste all'utente le stringhe frase, parola1 e parola2, controlli se in frase è contenuta parola1, e in tal caso sostituisca tutte le sue occorrenze con parola2

mostra soluzione

/*
CLAUDIO CARDINALE III AI
Scrivere un programma che, richieste all'utente le stringhe frase, parola1 e parola2, controlli se in frase è contenuta parola1, e in tal caso sostituisca tutte le sue occorrenze con parola2
*/
#include<stdio.h>
#include<string.h>
#define MAX 1000
int main(){
	
	//dichiarazioni
	
	int i,j;
	char frase[MAX],parola1[100],parola2[100],len,len2,len3,pos=-1,last=0;
	
	
	//acquisizione dati
	
	printf("inserire la frase : ");
	gets(frase);
	printf("inserire la parola da cercare : ");
	gets(parola1);
	printf("inserire la parola da sostituire : ");
	gets(parola2);
	
	
	//calcoli
	
	//lunghezze
	len2 = strlen(parola1);
	len3 = strlen(parola2);
	
	do{	
		len = strlen(frase);
		pos=-1;
		//ricerca
		for(i=last;i<len&& pos == -1;i++){
			for(j=0;parola1[j]==frase[i+j] && parola1[j]!='\0';j++);
			if(parola1[j]=='\0')
				pos = i;
		}
	
		//sostituzione
		if(pos>=0){
		
			//spostamento parte finale
			if(len3-len2<=0)
				for(i = pos; i<=len; i++)
					frase[i+len3] = frase[i+len2];
			else
				for(i = len; i>=pos; i--)
					frase[i+len3-len2] = frase[i];
			//parte centrale modificata
			for(i = 0; i<len3; i++)
				frase[i+pos] = parola2[i];
			last = pos+len3;
		}
	}while(pos!=-1);
		
	
	//visualizzazione risultati
	
	printf("%s\n",frase);
}

Testi Consigliati:

Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line
C guida alla programmazione: Conoscere lo standard C11 dalle basi del linguaggio alle direttive del preprocessore (Programmare con C Vol. 1)
Programmazione in C

torna



Copyright © 2004-2024 thecsea.it (Claudio Cardinale - [email protected])! Tutti i diritti riservati. - contattaci