Probl. ALGORITMO "C"
Devo presentare un programma per domani!
E' perfetto ma non riesco a trovare l'errore!
Che faccio!???
Unisce 2 array di struct (studente) e deve avere la possibilità di scegliere da tastiera quale compo si vuole unire in un terzo array (risultato).
<pre id=code><font face=courier size= id=code>
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct studente {
char nome[];
char cognome[];
int matricola;
} ;
struct risultato {
char stringa [];
int matricola;
};
void riempi(studente str[],int n);
void unione_cognome(studente str1[],studente str2[],risultato unione[],int n1,int n2);
void unione_nome(studente str1[],studente str2[],risultato unione[],int n1,int n2);
void unione_int(studente str1[],studente str2[],studente unione[],int n1,int n2);
int scelta(studente str1[],studente str2[],risultato unione[],int n1,int n2);
void risulta(risultato unione[],int n1,int n2,int scelto);
void main()
{
int num1,num2,scelto;
char vai;
studente str1[25],str2[30];
risultato unione[55];
printf("\nInserisci il numero di studenti del primo vettore:\n");
scanf("%d",&num1);
riempi(str1,num1);
printf("\nIl primo vettore è pieno");
printf("\nInserisci il numero di studenti del secondo vettore:\n");
scanf("%d",&num2);
riempi(str2,num2);
printf("\nIl secondo vettore è pieno");
scelto=scelta(str1,str2,unione,num1,num2
);
printf("\nIl risultato è raggiunto premi un tasto per visualizzarlo");
vai=getch();
risulta(unione,num1,num2,scelto);
}
void riempi(studente vet[30],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("\nInserisci il Cognome del %d° allievo: ",i+1);
scanf("%s",&vet[i].cognome);
printf("\nInserisci il Nome del %d° allievo: ",i+1);
scanf("%s",&vet[i].nome);
printf("\nInseriscine ora la matricola: ");
scanf("%d",&vet[i].matricola);
clrscr();
}
}
void unione_cognome(studente str1[25],studente str2[30],risultato unione[55],int n1,int n2)
{
int i,j;
for(i=0;i<n1;i++)
strcpy(unione[i].stringa,str1[i].cognome);
j=i;
for(i=0;i<n2;i++)
{
strcat(unione[j].stringa,str2[i].cognome);
j++;
}
}
void unione_nome(studente str1[25],studente str2[30],risultato unione[55],int n1,int n2)
{
int i,j;
for(i=0;i<n1;i++)
strcpy(unione[i].stringa,str1[i].nome);
j=i;
for(i=0;i<n2;i++)
{
strcat(unione[j].stringa,str2[i].nome);
j++;
}
}
void unione_int(studente str1[25],studente str2[30],risultato unione[55],int n1,int n2)
{
int i,j;
for(i=0;i<n1;i++)
unione[i].matricola=str1[i].matricola;
j=i;
for(i=0;i<n2;i++){
unione[j].matricola=str2[i].matricola;
j++; }
}
int scelta(studente str1[25],studente str2[30],risultato unione[55],int num1,int num2)
{
int scelto,i=0;
printf("\n\t\tScegli quale di quale campo vuoi l'unione :\n\n\n");
printf("\n\t 1 : Il campo matricola ");
printf("\n\t 2 : Il campo cognome ");
printf("\n\t 3 : Il campo nome\n\t");
scanf("%d",&scelto);
do
{
if(i)
{
printf("\n Non puoi inserire un numero non compreso tra l'intervallo 1 - 3");
scanf("%d",&scelto); }
switch(scelto){
case 1:
unione_int(str1,str2,unione,num1,num
2);
break;
case 2:
unione_cognome(str1,str2,unione,num1
,num2);
break;
case 3:
unione_nome(str1,str2,unione,num1,nu
m2);
break;
default:
i=1;
} }
while(i);
return scelto;
}
void risulta(risultato unione[55],int n1,int n2,int scelto)
{
int i;
clrscr();
if(scelto==2||3)
for(i=0;i<(n1+n2);i++)
printf("\n\t%s",unione[i].stringa);
else
for(i=0;i<(n1+n2);i++)
printf("\n\t%d",unione[i].matricola);
}
</font id=code></pre id=code>
peppe