Salve, sto studiando le basi di C, potreste darmi una mano ?
il seguente algo dovrebbe leggere due stringhe composte da tot caratteri, in questo caso 10, e costruirne una terza concatenandole in ordine alfabetico per poi stampare quest'ultima.
Ho copiato l'intero programma dal libro dal quale sto studiando, provando a farlo girare sul web compiler che uso per esercitarmi che ho trovato su repl.it
Il risultato però è strano: semplicemente incolla una parte della prima stringa subito dopo la seconda. Insomma, non credo faccia quello che è descritto sopra (che a dire il vero non ho capito esattamente cosa dovrebbe fare, la descrizione è un po ambigua). Non so se per un errore del libro o una diversa versione/implementazione del compilatore.
Help? thanks
#include <stdio.h>
#define LunghezzaArray 10
int main()
{
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 compilazione*/
char ArrayConc[LunghezzaArray * 2];
/* Legge la prima stringa assicurandosi che essa non superi la dimensione dell'array, 10 caratteri*/
i=0;
while (i<LunghezzaArray)
/* Si ricordi che il valore dell'indice di un array di LunghezzaArray elementi è compreso fra 0 e LunghezzaArray-1*/
{
scanf("%c",&TempCar);
Array1[i]=TempCar;
i=i+1;}
/*Legge la seconda stringa assicurandosi che essa no nsuperi la dimensione dell'array, 10 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;}
}
PS: chiedo scusa per l'indentazione assente, è un problema ?
EDIT:ok ho provato ad indentare, un po maluccio