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

In base alla scelta fornita in ingresso dall'utente, effettuare l'unione o l'intersezione o la differenza di due elenchi di nomi contenuti in due vettori A(N) e B(M), con N >0 e M >0, caricando l'insieme risultante in un nuovo vettore identificato da C.
Sugg:
Definire i vettori A, B, C globali.
Funzione menu: visualizza il menu e ritona la scelta dell'utente
Funzione unione: effettua l'unione dei due vettori
Funzione intersezione: effettua l'intersezione dei due vettori
Funzione differenza: effettua la differenza dei due vettori

mostra soluzione

/*
CLAUDIO CARIDNALE 3AI
In base alla scelta fornita in ingresso dall'utente, effettuare l'unione o l'intersezione o la differenza di due elenchi di nomi contenuti in due vettori A(N) e B(M), con N >0 e M >0, caricando l'insieme risultante in un nuovo vettore identificato da C.
Sugg:
Definire i vettori A, B, C globali.
Funzione menu: visualizza il menu e ritona la scelta dell'utente
Funzione unione: effettua l'unione dei due vettori
Funzione intersezione: effettua l'intersezione dei due vettori
Funzione differenza: effettua la differenza dei due vettori
*/
#include<stdio.h>
#define MAX 1000
int menu(void);
void unione(void);
void intersezione(void);
void differenza(void);
int lena;
int lenb;
int lenc;
int A[MAX];
int B[MAX];
int C[MAX];

int main(){
	//dichiarazioni
	int i,j;
	
	//acquisizione lunghezze
	do{
		printf("inserire la lunghezza di A : ");
		scanf("%d",&lena);
	}while(lena<1 || lena>=MAX);
	do{
		printf("inserire la lunghezza di B : ");
		scanf("%d",&lenb);
	}while(lenb<1 || lenb>=MAX);
	
	//acquisizione dati
	//A
	for(i=0;i<lena;i++){
		printf("inserire il %d° di A : ",i+1);
		scanf("%d",&A[i]);
	}
	//B
	for(i=0;i<lenb;i++){
		printf("inserire il %d° di B : ",i+1);
		scanf("%d",&B[i]);
	}
	
	//scelte
	switch(menu()){
		case 1:
			unione();
			break;
		case 2:
			intersezione();
			break;
		case 3:
			differenza();
			break;
	}
	
	for(i=0;i<lenc;i++)
		printf("%d\n",C[i]);
}

int menu(void){
	//dichiarazioni
	int scelta;
	
	//acqusizione
	do{
		printf("1) per l'unione\n2) per l'intersezione\n3) per la differenza\nscelta : ");
		scanf("%d",&scelta);
	}while(scelta<1 || scelta >3);
	
	//ritorno
	return scelta;
}

void unione(void){
	//dichiarazioni
	int i,j,trovato;
	
	//unione
	//vet A
	lenc = 0;
	for(i=0;i<lena;i++){
		trovato = 0;
		for(j=0;j<i && !trovato;j++)
			if(A[i]==C[j])
				trovato = 1;
		if(!trovato)
			C[lenc++] = A[i];
	}
	
	//vet B
	for(i=0;i<lenb;i++){
		trovato=0;
		for(j=0;j<lenc && !trovato;j++)
			if(B[i]==C[j])
				trovato = 1;
		if(!trovato)
			C[lenc++] = B[i];
	}
}

void intersezione(void){
	//dichiarazioni
	int i,j,trovato;
	
	
	//intersezione
	lenc = 0;
	for(i=0;i<lena;i++){
		trovato = 1;
		for(j=0;j<lenb && trovato;j++)
			if(A[i] == B[j])
				trovato = 0;
		
		for(j=0;j<lenc && !trovato;j++)
			if(A[i]==C[j])
				trovato = 1;
		
		if(!trovato)
			C[lenc++] = A[i];
	}
}

void differenza(void){
	//dichiarazioni
	int i,j,trovato;
	
	
	//intersezione
	lenc = 0;
	
	//vet A
	for(i=0;i<lena;i++){
		trovato = 1;
		for(j=0;j<lenb && trovato;j++)
			if(A[i] == B[j])
				trovato = 0;
		
		for(j=0;j<lenc && trovato;j++)
			if(A[i]==C[j])
				trovato = 0;
		
		if(trovato)
			C[lenc++] = A[i];
	}
	
	//vet B
	for(i=0;i<lenb;i++){
		trovato = 1;
		for(j=0;j<lena && trovato;j++)
			if(B[i] == A[j])
				trovato = 0;
		
		for(j=0;j<lenc && trovato;j++)
			if(B[i]==C[j])
				trovato = 0;
		
		if(trovato)
			C[lenc++] = B[i];
	}

}

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