|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
|
[C++] Creare funzioni usando solo librerie di I/O (help per esame)
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: Codice:
#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++;
}
}
}
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 ![]() 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??
__________________
Lego ™ Fans Club |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
|
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.
__________________
Lego ™ Fans Club |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Diciamo che si può fore molto più semplicemente
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) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:42.




















