Salve a tutti, sono alle prime armi con il linguaggio di programmazione c, da poco ho iniziato a fare gli esercizi con il char e sono stato bloccato dal seguente esercizio,
Non riesco a capire dove abbia sbagliato...
Di N città si conoscono il numero di abitanti e il numero degli attivi. Calcola per ciascuna città l'indice di attività (attivi/abitanti*100) e stampa il nome della città con l'indice più basso e di quella con l'indice più alto.
#include <stdio.h>
int N,AB,AT,CONT=0;
float I,MAX,MIN;
char *XA,*XB;
char NM[21];
int main()
{
printf("Inserisci il numero di città: ");
scanf("%d",&N);
for(CONT=0;CONT<N;CONT++)
{
printf("Inserisci il nome della città: ");
scanf("%s",&NM);
printf("Inserisci il numero di abitanti: ");
scanf("%d",&AB);
printf("Inserisci il numero di attivi: ");
scanf("%d",&AT);
I=AT/AB*100;
if (I>MAX) MAX=I, XA=NM;
else if (I<MIN) MIN=I, XB=NM;
}
printf ("La città con l'indice di attività più basso è: %s",&XB);
printf ("La città con l'indice di attività più alto è: %s",&XA);
}
Funziona tutto tranne quando deve stampare il nome della città con l'indice più basso e quella con l'indice più alto!
Inizialmente mi volevo complicare ancora di più per essere ancora più preciso, se l'utente decide di inserire una sola città, il nome della città dovrà quindi comparire sia nell'indice di attività più basso sia in quello più alto.
perciò avevo pensato di farlo così:
#include <stdio.h>
int N,AB,AT,CONT=0;
float I,MAX,MIN;
char *XA,*XB;
char NM[21];
int main()
{
printf("Inserisci il numero di città: ");
scanf("%d",&N);
do{
printf("Inserisci il nome della città: ");
scanf("%s",&NM);
printf("Inserisci il numero di abitanti: ");
scanf("%d",&AB);
printf("Inserisci il numero di attivi: ");
scanf("%d",&AT);
CONT=CONT+1;
I=AT/AB*100;
if (CONT=1) MAX=(NM) MIN=(NM)
else if (I>MAX) MAX=(I), XA=(NM);
else if (I<MIN) MIN=(I), XB=(NM);
}while (CONT!=N)
printf ("La città con l'indice di attività più basso è: %s",&XB);
printf ("La città con l'indice di attività più alto è: %s",&XA);
}
Però non funziona lo stesso!