PDA

View Full Version : [C++] Creare funzioni usando solo librerie di I/O (help per esame)


Dani88
30-01-2008, 14:33
Raga in vista dell'esame di fondamenti di informatica che ho tra 2 giorni, sto provando a rifarmi alcune funzioni che sono incluse in librerie che il prof non ci fa usare (per capirci solitamente solo lib di I/O, niente string.h o altro...)
Nello specifico avrei bisogno di aiuto per rifare le funzioni
strcmp e strcpy

Per la prima pensavo di fare una cosa di questo tipo:
#include <iostream>
using namespace std;


void main()
{
char str1[11],str2[11];
cout<<"inserisci stringa 1: ";
cin>>str1;
cout<<"inserisci stringa 2: ";
cin>>str2;

// inizio funzione
int i=0;
bool ctrl=true;
while(ctrl==true){
if(str1[i]<str2[i]){
ctrl=false;
//return -1;
}
else if(str1[i]>str2[i]){
ctrl=false;
//return 1;
}
if (str1[i]==str2[i]){
if(str1[i]=='\0' && str2[i]=='\0'){
ctrl=false;
//return 0;
}
i++;
}
}

}

(tralasciate il fatto che scritta così non posso mettere return qualcosa :D lo so solo che il problema per ora è a monte e se nn capisco quello non posso fare la funzione)
Il problema però è che non capisco perchè lui le stringhe, quando digito qualcosa, non mette il primo carattere in posizione 0 dell'array, il secondo in pos 1, ecc.
Cioè se tipo digito "ciao" mi mette
http://www.pctunerup.com/up/results/_200801/th_20080130152931_error.jpg (http://www.pctunerup.com/up/image.php?src=_200801/20080130152931_error.jpg)

Ora come potete ben capire a questo punto nn posso partire facendo il confornto tra i primi elementi di ciascuna stringa perchè chissà cosa esce fuori.
Stessa cosa per rifare strcpy
Come posso risolvere il problema?? :help: :help:

Dani88
30-01-2008, 15:02
ho parzialmente risolto mettendo
int i=4
Così funziona perchè se inserisco ad esempio
str1=mario
str2= andrea
mi dice che str2 viene prima, però ho il dubbio che così facendo non posso usarla sempre. Tipo mi servirebbe all'interno di un programma dove le stringhe sono lette da file con fstream.

cionci
30-01-2008, 18:13
Diciamo che si può fore molto più semplicemente ;) Ricordati che le lettere sono anche numeri...e se le settrai fra loro hai anche una differenza corrispondente al fatto che una venga prima e l'altra dopo.
Basta un while con un if interno per far terminare il ciclo in caso di lettere diverse.

Prima di tutto parti con il dichiarare la tua strcmp allo stesso modo della strcmp...cioè:

int mystrcmp(char *s1, char *s2)