06/01/20 13:31
andreapagani
#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 compilato questo codice ma mi dà thread exc bad access quando lo faccio andare, qualcuno sa aiutarmi?
qui sotto vi lascio 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)
Ultima modifica effettuata da Thejuster 08/01/20 11:14
aaa