U
Utente cancellato 359755
Ospite
Sto creando un programma che permette di inserire una parola con una definizione e stampa tutto ordinato. Il problema è che quando inserisco una nuova parola essa non viene nè stampata nè tantomeno la struct viene riordinata
C:
#include <stdio.h>
#include <string.h>
#define MAX_CAR 300
#define MAX_PAR 20
#define MAX_DIZ 20
typedef
struct{
char termine[MAX_PAR];
char definizione[MAX_CAR];
}Parola;
typedef
struct{
Parola numero[MAX_DIZ];
}dizionario;
void stampa(dizionario tab, int *riemp){
int i;
printf("Il dizionario inserito e' formato dalle parole: \n");
for (i=0;i<*riemp;i++) {
printf("%s : %s\n", tab.numero[i].termine, tab.numero[i].definizione);
}
}
void ordina(dizionario *ita, int n) {
int i,j, posmin;
dizionario temp;
for(i=0;i<n-1;i++){
posmin=i;
for(j=i+1;j<n;j++)
if(strcmp(ita->numero[j].termine,ita->numero[posmin].termine)<0) {
posmin=j; }
if(i!=posmin) {
strcpy(temp.numero[i].termine,ita->numero[i].termine);
strcpy(temp.numero[i].definizione,ita->numero[i].definizione);
strcpy(ita->numero[i].termine,ita->numero[posmin].termine);
strcpy(ita->numero[i].definizione,ita->numero[posmin].definizione);
strcpy(ita->numero[posmin].termine,temp.numero[i].termine);
strcpy(ita->numero[posmin].definizione,temp.numero[i].definizione);
}
}
}
void aggiungi (dizionario *ita, int *riemp) {
if ((*riemp/MAX_DIZ)==1){
printf("Raggiunto numero di parole massime");
}
else{
printf("Inserisci nuova parola, massimo %d caratteri ", MAX_PAR);
scanf("%s", &ita->numero[*riemp].termine);
printf("Inserisci la definizione della parola inserita, massimo %d caratteri ", MAX_PAR);
scanf("%s", &ita->numero[*riemp].definizione);
}
}
int main(){
dizionario ita;
int riemp;
int n;
printf("Quante parole vuoi inserire (massimo %d ", MAX_DIZ);
scanf("%d",&riemp);
for (int z=0; z<riemp; z++){
printf("Inserisci parola, massimo %d caratteri ", MAX_PAR);
scanf("%s", &ita.numero[z].termine);
printf("Inserisci definizione parola, massimo %d caratteri ", MAX_PAR);
scanf("%s", &ita.numero[z].definizione);
}
ordina(&ita, riemp);
stampa(ita, &riemp);
aggiungi(&ita, &riemp);
ordina(&ita, riemp);
stampa(ita, &riemp);
system("PAUSE");
// elimina(ita, riemp);
return 0;
}