Oppure

Loading
13/04/11 19:56
Lafa_96
sto creando un ciclo con repeat...until, in questo ciclo ci sono un toto di numeri presi a random che si ripetono e vengono scritti su schermo, io vorrei che se una delle var integer ha come valore n allora la variabile integer si converta in string e che in questa string ci sia scritta una lettera! come posso fare?
aaa
13/04/11 21:10
Poggi Marco
Ciao!

In pascal, esiste la funzione ster per vonvertire i dati numerici in stringa: vedi borlandpascal.wikia.com/wiki/…
aaa
14/04/11 17:14
Poggi Marco
Le variabili in pascal, sono tipicizzate staticamente.
Ciò significa che un integer,rimarrà sempre tale.

Nel tuo caso, potresti implementare una funzione che riceva l' integer, il carattere da sostituire, e restituisca una stringa.
aaa
14/04/11 19:17
Poggi Marco
Per le funzioni vedi qui : pierotofy.it/pages/guide/Guida_Pascal/Scrivere_procedure_e_funzioni/
Ecco un esempio di una funzione:
function scambio(n:integer; c:char):string; // dichiarazione della funzione
var num:string;  // variabile locale
begin
  str(n, num); //  in num, viene memorizzato n convertito in stringa
  scambio:=num+c;  // valore restituito
end;




aaa
14/04/11 20:25
Goblin
Lafa_96 se ci dici cosa vuoi fare, forse, riusciamo a darti l'imbeccata giusta, come ha detto Marco in pascal le variabili non cambiano "al volo", se migri al OP di delphi trovi il tipo "variant" che può contenere qualsiasi cosa, ma questo, credo sia fuori portata, visto che tu stai usando in compilatore dev.
Ibis redibis non morieris in bello
15/04/11 16:41
Poggi Marco
Come ti ho già detto, una variabile non può cambiare tipo.
Nel tuo caso, potresti dichiarare due vettori, uno contenente integer, e l' altro le stringhe.
aaa
15/04/11 18:55
Goblin
Lafa_96, potresti seguire l'idea di Marco, costruendo un record con i 2 tipi che ti interessano, qualcosa del tipo:
type
TMyrecord= packed record
nVal: Integer;
sVal: String[4];
end;

poi ti dichiari il tuo array, e lo popoli, al momento della if testi il valore nella parte intera del record e scrivi la parte stringa
if oMyRecx[1].nval := 333 then oMyRec[1].sVal:=' A ';
è un po' "bruttina" come soluzione, ma potrebbe funzionare... ecco un po' di codice buttato giù al volo...

program Test;
uses crt;
type
  TMyRecord = packed record
    nVal: Integer;
    sVal: String[4];
end;

Var oMyRec: Array[1..10] of TMyRecord;
    x: integer;
begin
  for x:= 1 to 10 do
  begin
    oMyRec[x].nVal := x;
    if x=5 then
      oMyRec[x].sVal := ' A '
    else
      oMyRec[x].sVal := ' X ';
  end;
  for x:= 1 to 10 do
    Write(oMyRec[x].sVal);
  Readln;
end.
Ultima modifica effettuata da Goblin 15/04/11 19:02
Ibis redibis non morieris in bello