Oppure

Loading
06/01 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 &quot;parti&quot; 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 11:14
06/01 14:25
Ultimo
Stai lavorando su un Array quindi riguardati il codice che hai scritto
Ultimo (Hai voluto la bicicletta ? ....)

Studiare LINQ, WPF, ASP.NET MVC, Entity Framwork, C#, Blend, XAML, Javascript, HTML5, CSS .....(tanta roba)

dropbox.com/s/c2aots5x4urgbhf/…
06/01 14:26
Ultimo

Attendo la risposta dei Maestri :k:
Ultimo (Hai voluto la bicicletta ? ....)

Studiare LINQ, WPF, ASP.NET MVC, Entity Framwork, C#, Blend, XAML, Javascript, HTML5, CSS .....(tanta roba)

dropbox.com/s/c2aots5x4urgbhf/…
06/01 14:44
nessuno
Hai postato anche su iprogrammatori.it
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità;) chiamava il gioco del Lotto Tassa sulla stupidità.
06/01 20:47
AldoBaldo
Siccome la ricorsione mi fa sempre girare la testa, ho voluto cogliere la palla al balzo e cimentarmi con quest'esercizio.
L'ho risolto anche per le stringhe che hanno dimensioni che non siano potenze del tre, cosa che non ho ben capito se rientra nelle richieste della traccia o meno. La mia risoluzione dà uscite di questo genere:

01 char: #
02 char: ##
03 char: #.#
04 char: #..#
05 char: ##.##
06 char: ##..##
07 char: ##...##
08 char: #.#..#.#
09 char: #.#...#.#
10 char: #.#....#.#
11 char: #..#...#..#
12 char: #..#....#..#
13 char: #..#.....#..#
14 char: ##.##....##.##
15 char: ##.##.....##.##
16 char: ##.##......##.##
17 char: ##..##.....##..##
18 char: ##..##......##..##
19 char: ##..##.......##..##
20 char: ##...##......##...##
21 char: ##...##.......##...##
22 char: ##...##........##...##
23 char: #.#..#.#.......#.#..#.#
24 char: #.#..#.#........#.#..#.#
25 char: #.#..#.#.........#.#..#.#
26 char: #.#...#.#........#.#...#.#
27 char: #.#...#.#.........#.#...#.#
eccetera...


...e va be'. Poi, però, ho cercato "polvere di cantor" su "Wikipedia" e ho trovato una definizione nella quale non si parla di vettori, bensì di matrici. In altre parole, si dice che la "polvere di cantor" è un costrutto bidimensionale (in effetti l'immagine illustrativa riporta un quadrato che contiene altri quadrati, come in una specie di "frattale" - non so niente sui frattali, quindi non so se ho usato la parola a sproposito).

Qual è l'interpretazione corretta?
Ultima modifica effettuata da AldoBaldo 06/01 20:49
Ma cosa vuoi che ne sappia? Io ci gioco, col codice, mica ci lavoro!
07/01 10:28
andreapagani
mi manderesti il tuo codice Aldo baglio? perché a me dà un problema di segmentazione fault ma non capisco come risolverlo
07/01 19:41
AldoBaldo
Lo farei anche, ma è vietato.

A me quel che (di solito) fa sbagliare i programmi che richiedono ricorsioni è l'impostazione delle condizioni di return, il che mi porta a "saturare" lo stack con dei crash a volte spettacolari! Per questo ho preso in considerazione il tuo esercizio: per fare esercizio.

Non so se la saturazione dello stack sia un problema anche del tuo codice (non l'ho provato).
Ultima modifica effettuata da AldoBaldo 07/01 20:00
Ma cosa vuoi che ne sappia? Io ci gioco, col codice, mica ci lavoro!
07/01 22:58
Goblin
Postato originariamente da AldoBaldo:
Siccome la ricorsione mi fa sempre girare la testa, ho voluto cogliere la palla al balzo e cimentarmi con quest'esercizio.

L'ho pensato anche io ...
Postato originariamente da AldoBaldo:
L'ho risolto anche per le stringhe che hanno dimensioni che non siano potenze del tre, cosa che non ho ben capito se rientra nelle richieste della traccia o meno. La mia risoluzione dà uscite di questo genere:

01 char: #
02 char: ##
03 char: #.#
04 char: #..#
05 char: ##.##
06 char: ##..##
07 char: ##...##
08 char: #.#..#.#
09 char: #.#...#.#
10 char: #.#....#.#
11 char: #..#...#..#
12 char: #..#....#..#
13 char: #..#.....#..#
14 char: ##.##....##.##
15 char: ##.##.....##.##
16 char: ##.##......##.##
17 char: ##..##.....##..##
18 char: ##..##......##..##
19 char: ##..##.......##..##
20 char: ##...##......##...##
21 char: ##...##.......##...##
22 char: ##...##........##...##
23 char: #.#..#.#.......#.#..#.#
24 char: #.#..#.#........#.#..#.#
25 char: #.#..#.#.........#.#..#.#
26 char: #.#...#.#........#.#...#.#
27 char: #.#...#.#.........#.#...#.#
eccetera...


Si io ho fatto un po' di test, prima ho risolto la ricorsione del "cantor set" con le potenze di tre, dunque 3,9,27,81...
e i risultati vengono in linea con i tuoi
Poi ho giocato un po' con il codice per allineare i risultati in base alle richieste e prendendo spunto dai tuoi risultati ho tirato fuori 2 serie di risultati, uno lasciando l'algoritmo "base" e un secondo cercando di equilibrare i risultati per stringhe che no siano potenze di tre

Postato originariamente da AldoBaldo:
...e va be'. Poi, però, ho cercato "polvere di cantor" su "Wikipedia" e ho trovato una definizione nella quale non si parla di vettori, bensì di matrici. In altre parole, si dice che la "polvere di cantor" è un costrutto bidimensionale (in effetti l'immagine illustrativa riporta un quadrato che contiene altri quadrati, come in una specie di "frattale" - non so niente sui frattali, quindi non so se ho usato la parola a sproposito).

Qual è l'interpretazione corretta?


Si ... quale è l'interpretazione corretta?? si lascia la ricorsione "base" oppure bisogna apportare piccole modifiche in base alle dimesioni della stringa?

Se serve a qualcuno posso postare il sorgente, non è C, ma Pascal, ma credo che cambia poco.

Un saluto
Ibis et redibis non morieris in bello