D
Deleted member 287194
Ho trovato questo esempio di programma sul mio libro di testo, l'argomento è il costruttore array.
Se qualcuno potesse spiegarmelo mi farebbe un grandissimo piacere.
Il programma legge due stringhe composte da 10 caratteri ciascuna (l'originale era 50) e costruisce una terza stringa che concatena le prime due in ordine alfabetico.
Se qualcuno potesse spiegarmelo mi farebbe un grandissimo piacere.
Il programma legge due stringhe composte da 10 caratteri ciascuna (l'originale era 50) e costruisce una terza stringa che concatena le prime due in ordine alfabetico.
C:
#include <stdio.h>
#define LunghezzaArray 10
int main (void)
{
int i, j, k;
char TempCar;
char Array1[LunghezzaArray], Array2[LunghezzaArray];
/*Nella seguente dichiarazione il valore 'LunghezzaArray * 2' è un valore costante calcolato a tempo di compliazione*/
char ArrayConc[LunghezzaArray * 2];
/*Legge la prima stringa assicurandosi che essa non superi la dimensione dell'array, 50 caratteri*/
i = 0;
while (i < LunghezzaArray)
/*Si ricordi che il valore dell'indice di un array di LunghezzaArray elementi è compreso tra 0 e LunghezzArray - 1*/
{
scanf ("%c", &TempCar);
Array1[i] = TempCar;
i = i + 1;
}
/*Legge la seconda stringa assicurandosi che essa non superi la dimensione dell'array, 50 caratteri*/
i = 0;
while (i < LunghezzaArray)
{
scanf ("%c", &TempCar);
Array2[i] = TempCar;
i = i + 1;
}
/*Confronta le due stringhe per capire quale precede l'altra in ordine alfabetico*/
i = 0;
while (i < LunghezzaArray && Array1[i] == Array2[i])
i = i + 1;
if (i == LunghezzaArray || Array1[i] < Array2 [i])
/*Le due stringhe sono uguali o la prima precede la seconda in ordine alfabetico*/
{
k = 0; j = 0;
while (j < LunghezzaArray)
{
ArrayConc[k] = Array1[j];
k = k + 1;
j = j + 1;
}
j = 0;
while (j < LunghezzaArray)
{
ArrayConc[k] = Array2[j];
k = k + 1;
j = j + 1;
}
}
else
/*Se la seconda stringa precede la prima in ordine alfabetico, ossia se (Array2[i] < Array1[i])*/
{
k = 0; j = 0;
while (j < LunghezzaArray)
{
ArrayConc[k] = Array2[j];
k = k + 1;
j = j + 1;
}
j = 0;
while (j < LunghezzaArray)
{
ArrayConc[k] = Array1[j];
k = k + 1;
j = j + 1;
}
}
/*Stampa la stringa ottenuta dalla concatenazione*/
k = 0;
while (k < (LunghezzaArray * 2))
{
printf ("%c", ArrayConc[k]);
k = k + 1;
}
}