#include <stdio.h>
char *cantor(char[], int, int);
int main() {
char v[27];
for(int i = 0; i<27; i++){
v[i] = ' ';
}
cantor( v, 0, 26);
return 0;
}
char *cantor(char str[], int posizioneInizioStringa, int posizioneFineStringa){
if(posizioneFineStringa == posizioneInizioStringa ){
return str;
}
int a = (posizioneFineStringa + 1)/3;
for(int i=0; i<a; i++){
str = '#';
}
cantor(str, 0, a);
for(int i=a; i<2*a; i++){
str = '.';
}
cantor( str, a, 2*a);
for(int i = 2*a; i<posizioneFineStringa; i++){
str = '#';
}
cantor(str, 2*a, posizioneFineStringa);
return str;
}
ho fatto questo codice ma quando lo faccio andare mi dà thread exc bad access e non capisco perché.
Qualcuno mi sa aiutare?
questo sotto è il testo dell'esercizio
Una stringa (di lunghezza a piacere) che contiene solo caratteri ?#? e ?.? può essere una rappresentazione della così-detta polvere di Cantor (mono-dimensionale) se costruita nel modo seguente:
1. si pensa il numero di celle della stringa come diviso in tre parti, ciascuna della stessa lunghezza (a meno di un carattere in aggiunta o in difetto)
2. le celle delle parti a sinistra e a destra vengono riempite con caratteri ?#?
3. le celle della parte centrale vengono riempite con caratteri ?.?
4. Ciascuna parte contenente i ?#? viene modificata come descritto nei punti 1., 2., 3. (cioé divisa
in tre parti, con le parti esterne contenenti ?#? e quella centrale contenente ?.? ), ...., ricorsivamente fino ad arrivare ad avere “parti” composte da zero oppure una singola cella.
Esempio: un array di caratteri con 9 celle contenete polvere di cantor è: #.#...#.#
Scrivere sottoprogramma che, preso un array di caratteri, lo riempia come una stringa che rappresenta la
polvere di Cantor. Scrivere un programma main() che visualizza la stringa creata dal sottoprogramma.
Suggerimento:
...Cantor(char str[],
int posizioneInizioStringa,
int posizioneFineStringa)