|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
[C++] Distanza alfabetica ricorsiva in una stringa
Provando a fare questo esercizio...ho incontrato una difficoltà... distanza la definisco come la differenza tra dim/2 e il primo elemento dell'array. In questo esempio mi dà l'intero 3.
Ora...quando faccio la ricorsiva... a volte mi da 3 e a volte -3.. quindi non rispetta la condizione e restituisce sempre false.. help me!!! Quote:
SOLUZIONE: Codice:
#include <iostream>
using namespace std;
bool distanzaalfa(char alfa[], int dim, int i);
int main(){
const int dim=8;
char alfa[]={"athidqkf"};
int i=1;
if(distanzaalfa(alfa,dim,i))
cout<<"ok"<<endl;
else cout<<"no"<<endl;
system("pause");
return 0;
}
bool distanzaalfa(char alfa[], int dim, int i){
int distanza=0;
if(dim%2!=0)
return false;
if(i==dim/2)
return true;
distanza=alfa[dim/2]-alfa[0];
if(alfa[dim/2+i] - alfa[i] != distanza)
return false;
return distanzaalfa(alfa, dim, ++i);
}
|
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Usa abs(int):
Codice:
bool distanzaalfa(char alfa[], int dim, int i)
{
if (dim % 2 != 0) return false;
static int distanza = abs(alfa[dim/2] - alfa[0]);
if (i == dim/2) return true;
if (abs(alfa[dim/2+i] - alfa[i]) != distanza) return false;
return distanzaalfa(alfa, dim, i + 1);
}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
sarebbe il modulo? è un po una scappatoia;-) ..ai fini di esercitazione universitaria come potrei fare?
Inviato dal mio GT-I9003 usando Tapatalk |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
...
Ma che scappatoia e scappatoia! La distanza, in ogni ambito della matematica e delle scienze è un numero positivo, le distanze negative non hanno senso, quindi ci metti il modulo e punto. Te lo suggerisce pure il testo dell'esercizio dicendo esplicitamente "la distanza tra due lettere è un numero positivo". Ultima modifica di vendettaaaaa : 11-03-2012 alle 12:23. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
Quote:
Inviato dal mio GT-I9003 usando Tapatalk |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:04.



















