Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema con ricorsione
Forum - C/C++ - problema con ricorsione - Pagina 3

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
AldoBaldo (Member)
Expert


Messaggi: 543
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 22:54
Mercoledì, 08/01/2020
Qual è l'altro forum dove hai visto la soluzione? Mi piacerebbe confrontarla con la mia.


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 23:15
Mercoledì, 08/01/2020
Testo quotato

Postato originariamente da AldoBaldo:

Non ti seguo, scusa. Quella che hai inviato per ultima è la versione in C del tuo programma in Pascal? Perché se è così la mia "traduzione" non era sbagliata di brutto, era UNA TRAGEDIA! :)
E' proprio vero che in queste cose l'intuito è meglio dimenticarselo...



Aspetta... aspetta ... resettiamo tutto ... allora la risposta (soluzione) che hanno dato alla domanda iniziale in un altro forum è:
https://www.iprogrammatori.it/forum-programmazione/cplusplu ...
ed è il sorgente in C che ho postato, questo per non far "arrabbiare" i moderatori, in fondo la pappa pronta noi non l'abbiamo data.
poi...
Per la mia conversione della tua soluzione c->pascal ... non credo che ci vorranno 5 minuti, ma qualche anno luce in più :hail::hail:
Cmq ci sto lavorando facendo sbattere i miei 2 neuroni contro la scatola cranica (non voglio far brutte figure), e credo che i miei poveri neuroni rimasti siano pieni di lividi.
:d


Ibis redibis non morieris in bello
PM Quote
Avatar
AldoBaldo (Member)
Expert


Messaggi: 543
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 23:21
Mercoledì, 08/01/2020
Grazie della segnalazione. Ora vado a dormire, che domani ci si alza presto, ma mi riprometto di tornare su questa cosa.


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 0:39
Giovedì, 09/01/2020
bene dopo aver fritto i miei neuroni, adesso mi diletto un po' ... con un giochino dei miei tempi ...


Goblin ha allegato un file: WhatsApp Image 2019-12-22 at 14.23.06.jpeg (198635 bytes)
Clicca qui per guardare l'immagine


Ibis redibis non morieris in bello
PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 13:23
Giovedì, 09/01/2020
Credo di essere riuscito a tradurre in pascal il sorgente in C, ho dovuto fare qualche contorsione mentale per tenere la traduzione il più possibile vicino all'originale.
Magari qualcuno più ferrato di me nei due linguaggi riesce a fare meglio.  

Codice sorgente - presumibilmente Delphi

  1. Function cantor_calcola_lunghezza_settori(const lStr: Integer; var l: Array of integer): Integer;
  2. Var r: integer;
  3. begin
  4.   l[0] := lStr div 3;
  5.   l[1] := l[0];
  6.   l[2] := l[0];
  7.   if (l[0] <> 0) then
  8.   begin
  9.     r := lStr mod 3;
  10.     if r = 1 then
  11.       l[1] := l[1] + 1
  12.     else if r=2 then
  13.     begin
  14.       l[0] := l[0] + 1;
  15.       l[2] := l[2] + 1;
  16.     end;
  17.     Result := 1;
  18.   end
  19.   else
  20.     Result := 0;
  21. end;
  22.  
  23.  
  24. Function cantor(Var str: Array of char;  lStr: Integer; chrEst, chrInt: Char): integer;
  25. var i: Integer;
  26.     l: Array[0..2] of integer;
  27.     c: Integer;
  28.     e: Integer;
  29.     xx: Array of char;
  30.     nByte: Integer;
  31. begin
  32.    c := cantor_calcola_lunghezza_settori(lStr, l);
  33.    if c = 1 then
  34.    begin
  35.      e := cantor(str, l[0], chrEst, chrInt);
  36.      for i := 0 to l[1] do
  37.         str[i+l[0]] := chrInt;
  38.      nByte := l[0]+l[1];
  39.      SetLength(xx, nByte);
  40.      e := e + cantor(xx, l[2], chrEst, chrInt);
  41.      for i := 0 to nByte do
  42.        str[nByte + i] := xx[i];
  43.      Result := Integer(2=e);
  44.    end
  45.    else
  46.    begin
  47.       for i := 0 to lStr do
  48.         str[i] := chrEst;
  49.       Result := 0;
  50.    end;
  51. end;



Ibis redibis non morieris in bello
PM Quote
Avatar
AldoBaldo (Member)
Expert


Messaggi: 543
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 22:20
Giovedì, 09/01/2020
Mi fai venir voglia di studiare un po' più seriamente almeno i rudimenti del Pascal, anche perché più lo guardo più mi dà l'impressione di essere parecchio imparentato col C, dunque non dovrebbe essere una missione impossibile.

Ammesso che tu già non conosca questo Wiki, dai un'occhiata a...

https://rosettacode.org/wiki/Cantor_set

...dove c'è una nutrita raccolta di esempi di conversione tra i vari linguaggi. Magari ti interessa.

Ah, alla pagina che ti ho appena segnalato danno una terza interpretazione del concetto di sequenza di Cantor.


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 0:25
Venerdì, 10/01/2020
Se non erro, in tutti i codici che ci sono nel link che hai postato, si tiene conto solo potenze del 3, non ho visto niente che tiene conto di tutto il resto, si parte da 81 sino ad arrivare a 0, questo mi fa pensare che tutto il codice che ho/abbiamo scritto alla fine non serve a niente, è stato solo a puro scopo "didattico/ludico" e al diretto interessato, l'utente che ha aperto il post, non interessa niente di approfondire alcune tematiche puramente "filosofiche".
Ho notato due particolari
1) I codici presenti nel link somigliano molto al mio e sono lontanissimi dalla visione che hai dato tu.
2) Non c'e' il pascal :noway: dunque non posso confrontarmi
G.


Ibis redibis non morieris in bello
PM Quote
Avatar
AldoBaldo (Member)
Expert


Messaggi: 543
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 0:45
Venerdì, 10/01/2020
Tutto vero tranne una cosa: quel che diverte non è mai inutile.

===============

In quella pagina di Rosetta Code manca il Pascal perché evidentemente nessuno che lo pratica ha voluto inserire la "traduzione" in quel linguaggio. Potrebbe essere una ragione per aggiungerne una tua? Non serve a niente, intendiamoci, però se uno ha voglia di farlo può essere un passatempo. Qualche volta io l'ho fatto, in C, e neppure ricordo più sotto quale "voce".

===============

E' tristemente comune che arrivi gente che manda un messaggio, chiede e... scompare nel nulla. E' un fenomeno disdicevole, ma tant'è.


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo