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

001/*
002CLAUDIO CARIDNALE 3AI
003In 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.
004Sugg:
005Definire i vettori A, B, C globali.
006Funzione menu: visualizza il menu e ritona la scelta dell'utente
007Funzione unione: effettua l'unione dei due vettori
008Funzione intersezione: effettua l'intersezione dei due vettori
009Funzione differenza: effettua la differenza dei due vettori
010*/
011#include<stdio.h>
012#define MAX 1000
013int menu(void);
014void unione(void);
015void intersezione(void);
016void differenza(void);
017int lena;
018int lenb;
019int lenc;
020int A[MAX];
021int B[MAX];
022int C[MAX];
023 
024int main(){
025    //dichiarazioni
026    int i,j;
027     
028    //acquisizione lunghezze
029    do{
030        printf("inserire la lunghezza di A : ");
031        scanf("%d",&lena);
032    }while(lena<1 || lena>=MAX);
033    do{
034        printf("inserire la lunghezza di B : ");
035        scanf("%d",&lenb);
036    }while(lenb<1 || lenb>=MAX);
037     
038    //acquisizione dati
039    //A
040    for(i=0;i<lena;i++){
041        printf("inserire il %d° di A : ",i+1);
042        scanf("%d",&A[i]);
043    }
044    //B
045    for(i=0;i<lenb;i++){
046        printf("inserire il %d° di B : ",i+1);
047        scanf("%d",&B[i]);
048    }
049     
050    //scelte
051    switch(menu()){
052        case 1:
053            unione();
054            break;
055        case 2:
056            intersezione();
057            break;
058        case 3:
059            differenza();
060            break;
061    }
062     
063    for(i=0;i<lenc;i++)
064        printf("%d\n",C[i]);
065}
066 
067int menu(void){
068    //dichiarazioni
069    int scelta;
070     
071    //acqusizione
072    do{
073        printf("1) per l'unione\n2) per l'intersezione\n3) per la differenza\nscelta : ");
074        scanf("%d",&scelta);
075    }while(scelta<1 || scelta >3);
076     
077    //ritorno
078    return scelta;
079}
080 
081void unione(void){
082    //dichiarazioni
083    int i,j,trovato;
084     
085    //unione
086    //vet A
087    lenc = 0;
088    for(i=0;i<lena;i++){
089        trovato = 0;
090        for(j=0;j<i && !trovato;j++)
091            if(A[i]==C[j])
092                trovato = 1;
093        if(!trovato)
094            C[lenc++] = A[i];
095    }
096     
097    //vet B
098    for(i=0;i<lenb;i++){
099        trovato=0;
100        for(j=0;j<lenc && !trovato;j++)
101            if(B[i]==C[j])
102                trovato = 1;
103        if(!trovato)
104            C[lenc++] = B[i];
105    }
106}
107 
108void intersezione(void){
109    //dichiarazioni
110    int i,j,trovato;
111     
112     
113    //intersezione
114    lenc = 0;
115    for(i=0;i<lena;i++){
116        trovato = 1;
117        for(j=0;j<lenb && trovato;j++)
118            if(A[i] == B[j])
119                trovato = 0;
120         
121        for(j=0;j<lenc && !trovato;j++)
122            if(A[i]==C[j])
123                trovato = 1;
124         
125        if(!trovato)
126            C[lenc++] = A[i];
127    }
128}
129 
130void differenza(void){
131    //dichiarazioni
132    int i,j,trovato;
133     
134     
135    //intersezione
136    lenc = 0;
137     
138    //vet A
139    for(i=0;i<lena;i++){
140        trovato = 1;
141        for(j=0;j<lenb && trovato;j++)
142            if(A[i] == B[j])
143                trovato = 0;
144         
145        for(j=0;j<lenc && trovato;j++)
146            if(A[i]==C[j])
147                trovato = 0;
148         
149        if(trovato)
150            C[lenc++] = A[i];
151    }
152     
153    //vet B
154    for(i=0;i<lenb;i++){
155        trovato = 1;
156        for(j=0;j<lena && trovato;j++)
157            if(B[i] == A[j])
158                trovato = 0;
159         
160        for(j=0;j<lenc && trovato;j++)
161            if(B[i]==C[j])
162                trovato = 0;
163         
164        if(trovato)
165            C[lenc++] = B[i];
166    }
167 
168}

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-2025 thecsea.it (Claudio Cardinale - cardi@thecsea.it)! Tutti i diritti riservati. - contattaci