Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - convertire integer in string
Forum - Pascal - convertire integer in string

Avatar
Lafa_96 (Normal User)
Pro


Messaggi: 111
Iscritto: 09/03/2011

Segnala al moderatore
Postato alle 21:56
Mercoledì, 13/04/2011
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?

PM
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Up
1
Down
V
Segnala al moderatore
Postato alle 22:25
Giovedì, 14/04/2011
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.

il programma è una emerita cavolata, fondamentalmente l'ho iniziato così, tanto per passante il tempo, ma poi mi ci sono accanito, allora in pratica ho dichiarato un array che contiene 20 elementi, successivamente in un ciclo repeat...until (infinito) ho messo che ogni elemento dell'array ha... - Lafa_96 - 15/04/11 18:00
...come valore un numero a caso tra 0 e 1000, poi ho messo tante implicazioni quanti sono gli elementi dell'array e per ogni implicazione c' la seguente istruzione, if x[1] := 333 then x[1]:=' A ', il problema sorge appunto qui, vorrei che quando un elemento dell'array raggiunge valore n allora... - Lafa_96 - 15/04/11 18:03
...l'elemento si trasformi in string e il suo valore sia una lettera, ovviamente tutti gli elementi dell'array vengono scritti su schermo nel ciclo (tipo effetto matrix) e quindi se creo una implicazione per un elemento a quel punto dovrei inserire tutti i casi possibili, perchè essendo i numeri... - Lafa_96 - 15/04/11 18:05
...presi a caso se l'elemento x[3] arriva per primo a 333 rispetto all'elemento x[1] a quel punto non posso usare l'istruzione str(...), scusate la lunghezza! - Lafa_96 - 15/04/11 18:06
Come ti ho già detto, una variabile, non può cambiare tipo. - Poggi Marco - 15/04/11 18:37


Ibis redibis non morieris in bello
PM
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 18:41
Venerdì, 15/04/2011
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.

PM
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Up
1
Down
V
Segnala al moderatore
Postato alle 20:55
Venerdì, 15/04/2011
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...

Codice sorgente - presumibilmente Delphi

  1. program Test;
  2. uses crt;
  3. type
  4.   TMyRecord = packed record
  5.     nVal: Integer;
  6.     sVal: String[4];
  7. end;
  8.  
  9. Var oMyRec: Array[1..10] of TMyRecord;
  10.     x: integer;
  11. begin
  12.   for x:= 1 to 10 do
  13.   begin
  14.     oMyRec[x].nVal := x;
  15.     if x=5 then
  16.       oMyRec[x].sVal := ' A '
  17.     else
  18.       oMyRec[x].sVal := ' X ';
  19.   end;
  20.   for x:= 1 to 10 do
  21.     Write(oMyRec[x].sVal);
  22.   Readln;
  23. end.


Ultima modifica effettuata da Goblin il 15/04/2011 alle 21:02
grazie a tutti e 2 mi siete stati molto utili ^^ - Lafa_96 - 15/04/11 21:20


Ibis redibis non morieris in bello
PM
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 23:10
Mercoledì, 13/04/2011
Ciao!

In pascal, esiste la funzione ster per vonvertire i dati numerici in stringa: vedi http://borlandpascal.wikia.com/wiki/String_operations

nn è proprio quello che cercavo, io vorrei che la stessa variabile integer si trasformasse in stringa per poter sostituire una lettera al posto del numero, perchè non mi serve che il valore della variabile integer vada a finire in un'altra variabile; in alternativa, come si rende null il valore... - Lafa_96 - 14/04/11 17:57
...di una var integer in modo che quando viene scritta su shermo non venga scritta? purtroppo mi serve questa istruzione, quando il compilatore legge la variabile è come se non la leggesse! - Lafa_96 - 14/04/11 17:58
PM
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:14
Giovedì, 14/04/2011
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.

non è che mi faresti un esempio per favore? io sono del tutto nuovo al pascal, lo uso solo perchè mi serve a scuola e spero di impararlo bene perchè è diverso dai linguaggi .NET che uso di solito! ps io uso dev-pascal (non so quanto possa essere utile saperlo ma nn si sa mai!) - Lafa_96 - 14/04/11 20:03
PM
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:17
Giovedì, 14/04/2011
Per le funzioni vedi qui : http://www.pierotofy.it/pages/guide/Guida_Pascal/Scrivere_ ...
Ecco un esempio di una funzione:
Codice sorgente - presumibilmente Delphi

  1. function scambio(n:integer; c:char):string; // dichiarazione della funzione
  2. var num:string;  // variabile locale
  3. begin
  4.   str(n, num); //  in num, viene memorizzato n convertito in stringa
  5.   scambio:=num+c;  // valore restituito
  6. end;






PM