Oppure

Loading
08/01/20 21:44
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...
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.
08/01/20 21:54
AldoBaldo
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.
08/01/20 22:15
Goblin
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 è:
iprogrammatori.it/forum-programmazione/cplusplus/…
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
08/01/20 22:21
AldoBaldo
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.
08/01/20 23:39
Goblin
bene dopo aver fritto i miei neuroni, adesso mi diletto un po' ... con un giochino dei miei tempi ...
Ibis redibis non morieris in bello
09/01/20 12:23
Goblin
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.


Function cantor_calcola_lunghezza_settori(const lStr: Integer; var l: Array of integer): Integer;
Var r: integer;
begin
  l[0] := lStr div 3;
  l[1] := l[0];
  l[2] := l[0];
  if (l[0] <> 0) then
  begin
    r := lStr mod 3;
    if r = 1 then
      l[1] := l[1] + 1
    else if r=2 then
    begin
      l[0] := l[0] + 1;
      l[2] := l[2] + 1;
    end;
    Result := 1;
  end
  else
    Result := 0;
end;


Function cantor(Var str: Array of char;  lStr: Integer; chrEst, chrInt: Char): integer;
var i: Integer;
    l: Array[0..2] of integer;
    c: Integer;
    e: Integer;
    xx: Array of char;
    nByte: Integer;
begin
   c := cantor_calcola_lunghezza_settori(lStr, l);
   if c = 1 then
   begin
     e := cantor(str, l[0], chrEst, chrInt);
     for i := 0 to l[1] do
        str[i+l[0]] := chrInt;
     nByte := l[0]+l[1];
     SetLength(xx, nByte);
     e := e + cantor(xx, l[2], chrEst, chrInt);
     for i := 0 to nByte do
       str[nByte + i] := xx[i];
     Result := Integer(2=e);
   end
   else
   begin
      for i := 0 to lStr do
        str[i] := chrEst;
      Result := 0;
   end;
end;
Ibis redibis non morieris in bello
09/01/20 21:20
AldoBaldo
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...

rosettacode.org/wiki/…

...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.
09/01/20 23:25
Goblin
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