Altro esercizio banale in c

ing.pietro
4) Individuare l’errore nel seguente programma e spiegare come si corregge


#include
#include
int main(){
char stringa1[10], stringa2[10];
strcpy(stringa1, “Sabato”);
strcpy(stringa2, “Domenica”);
strcat(stringa1, stringa2);
printf(“%s”,stringa1);
return 0;
}

Risposte
eugenio.amitrano
Ti invito a riflettere sulla funzione strcat.
Come sicuramente saprai, questa funzione accoda la seconda stringa alla prima.
Quindi stringa1 dovrebbe contenere "SabatoDomenica", ma questo non e' possibile.
Perche' ?

A presto,
Eugenio

ing.pietro
non ti seguo.....mi puoi dire solo come si corregge

eugenio.amitrano
Mi dispiace non accontentarti, non credo che sarebbe istruttivo.
Se non si trattasse di compiti ma di una bella figura con una tipa, potrei anche pensarci su ! Hehe...

Via gli scherzi, se ti puo' interessare posso aiutarti a capire, ma non chiedermi di piu'.

A presto,
Eugenio

ing.pietro
dai eugenio questo è l'unico esame che nn mi va giu
dammi una mano!!!??

eugenio.amitrano
Ok !

stringa1 e stringa2 sono due contenitori di massimo 9 caratteri.
Dichiarando un buffer di caratteri [10] significa che puo' contenere max 9 caratteri perche' uno e' dedicato al fine stringa (NIL).
Quindi se possono contenere max. 9 lettere cosa noti di strano ?

Eugenio

ing.pietro
se possono contenere al massimo 9 caratteri l'errore sarà che ne contengono piu di 9...

però stringa 1 contiene sabato e stringa 2 contiene domenica : hanno meno di 9 caratteri!!

scusa ma non ci capisco tanto

eugenio.amitrano
ma dopo strcat, stringa1 dovrebbe contenere "SabatoDomenica" quindi ?

eugenio.amitrano
Sei riuscito a correggere il programma ?

ing.pietro
stringa 1 dovrebbe contenere sabatodomenica ma non può perchè al massimo ne puo contenere 9...
e quindi come dovrei correggere ??

nn è che me lo puoi scrivere corretto..
dai che ormai ci sto saltando fuori(almeno credo)

eugenio.amitrano
Bravo!
Le soluzioni sono tante, ma una di primo livello potrebbe essere quella di aumentare la capacita' di contenimento di stringa1.

Eugenio

ing.pietro
quindi io metterei anziche 10 estenderei a 15

poi non devo piu modificare altro..

TomSawyer1
Sì, è così. Ma questo programma ha un senso o è fatto solo per trovare l'errore?

eugenio.amitrano
@Ing.Pietro:
Corretto!

@Crook:
Credo che sia solo un listato didattico per trovare l'errore.

ing.pietro
scusatemi ancora (da me l'informatica viene data per scontata piu che l'analisi matematica)(sai io nn lho mai fatta e ho un po di problemi)..

in quest altro programma l'errore invece ?

#include
#include
int main(){
char stringa1[15], stringa2[5];
strcpy( stringa1, “Sabato”);
strcpy(stringa2, “Domenica”);
strcat(stringa1, stringa2);
printf(“%s”,stringa1);
return 0;
}



dovrebbe essere in stinga 2 si deve mettere anche li 15

eugenio.amitrano
Vedi ing.pietro l'esercizio e totalmente analogo al precedente.
Ora comprendo ancora meglio le tue difficolta'.

Dimmi un po', a quale scopo ti serve risolvere questi esercizi ?

Ti chiedo questo perche' se non ha minimamente a che fare con la tua preparazione professionale, o con la scuola, ti rispondo direttamente con la soluzione, altrimenti mi impegno ad insegnarti le basi della programmazione.

Eugenio

ing.pietro
ok non voglio essere falso

allora io faccio ingegneria ambientale e ho un esame d'informatica (materia che assolutamente non mi piace (forse anche perchè nn la capisco)..

questa materia non mi interessa anche perchè sono sicuro che nel lavoro che andrò a fare non mi servirà a nulla..e quindi voglio dedicarmici il meno possibile lasciando spazio alla fisica e alla matematica (anche se gli esami di queste materie gli ho gia passati mi piacerebbe continuare a studiarle ora che ho del tempo libero)

quindi se mi vuoi aiutarmi ti ringrazio molto se invece non te la senti sei libero di fare quello che vuoi

eugenio.amitrano
Beh...il motivo della presenza di questo esame richiede che tu debba avere un minimo di preparazione. Giusto ?

Pero' comprendo le tue motivazioni e ti daro' i suggerimenti.

L'errore e' che stringa2 puo' contenere al massimo 4 caratteri e si vuole assegnargli la stringa "Domenica".

Se tu volessi sono sempre disponibile ad insegnarti a svolgere questi compiti da solo. Ovviamente dopo il mio rientro dalle vacanze.

A presto,
Eugenio

ing.pietro
eugenio sei tornato dalle vacanze?

spero di si visto che io ho l'esame mercoledi e mi servirebbe lultimo aiuto

F Spiegare l’errore nel seguente programma e dire come si corregge
#include
#include
int main(){
char stringa1[10], stringa2[10];
strcpy( stringa1, “Pluto”);
strcpy(stringa2, “Paperino”);
strcpyt(stringa1, “stringa2));
printf(“%s”,stringa1);
return 0;
}


la differenza rispetto agli altri è la funzione strcpyt

come devo fare qua ?

grazie ciao

TomSawyer1
Non è lo stesso errore dell'altro? Cioè l'array che deve essere allargato.

ing.pietro
quindi devo aumentare il contenimento delle due stringhe?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.