Oppure

Loading
19/06/11 21:41
apprendista
salve sono nuovo di qui quindi non so se sn nel posto giusto pero volevo sapere una cosa.
E da un po di tempo che sto studiando il pascal allora volevo provare a fare un programma x generare stringhe di 12 cifre tra numeri e lettere e volevo sapere come impostare il programma grx!!!!!!!!!

----------------------------------------------------------------------------------

scusate non so ancora utilizzare sto forum cmq il commento non lo potevo continuare quindi lo continuo qui!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

codice ascii corrispondente.
dopo che mi da il numero a caso aggiungo alla prima variabile 1 e ripeto il tutto fino a quando questa non e uguale a 12 questo mi funziona solo ke quando ripete questo passaggio al momento ke gli dico di darmi il numero a caso mi da sempre lo stesso per cio spuntano 12 numeri tutti uguali.

potresti aiutarmi???????
Ultima modifica effettuata da apprendista 21/06/11 9:15
aaa
19/06/11 22:02
Goblin
Il linguaggio da usare è secondario, ma una buona base.
Hai già qualche idea?
Come faresti tu ?
Butta giù qualche idea, parliamone, ci sono diverse strade possibili, vediamo cosa riusciamo a tirare fuori
G.
Ibis redibis non morieris in bello
21/06/11 11:46
Goblin
Probabilmente ti manca l'istruzione Randomize e tutto dovrebbe funzionare.
Ti metto un programmino con 2 diverse soluzioni al tuo problema.
Con la soluzione 1 mi definisco sia i numeri sia i caratteri da selezionare, mentre la seconda soluzione si basa sulla tabella ascii
Il codice è poco commentato, ma credo che sia abbastanza chiaro.

program Numeri;

uses
  SysUtils;
type
  aNumeri = array [0..9] of integer;
  aLettere = array [0..9] of Char;

Const
  aTotNumeri:aNumeri = (0,1,2,3,4,5,6,7,8,9);
  aTotLettere:aLettere = ('A','B','C','D','E','F','G','H','I','H');
  CS_NUMERI = 12;
Var sStringa: String[CS_NUMERI];
    y, z: Integer;
Function genera(n:Integer): Integer;
begin
  Result := Random(n)+1;
end;

Procedure Soluzione1;
Var x: Integer;
    nRand: Integer;
begin
    for x := 1 to CS_NUMERI do  // per 12 volte
    begin
      nRand := Genera(1);
      if nRand=0 then  //numero
        sStringa:=sStringa+(IntToStr(aTotNumeri[Genera(High(aTotNumeri))]))
      else
        sStringa:=sStringa+(aTotLettere[Genera(High(aTotLettere))])
    end;
    sStringa := IntToStr(y)+') '+ sStringa;
    Writeln(sStringa);
    sStringa := '';
end;

Procedure Soluzione2;
Var x: Integer;
    nRand: Integer;
begin
    x:=0;
    while not (x=CS_NUMERI) do  // x 12 volte
    begin
      nRand:= Genera(122); // scrivo solo se sono nel range
      if ((nRand in [48..57]) or (nRand in [65..90]) or (nRand in [97..122])) then
      begin
        sStringa:=sStringa+Chr(nRand);
        inc(x);
      end;
    end;
    sStringa := IntToStr(y)+') '+ sStringa;
    Writeln(sStringa);
    sStringa := '';
end;

begin
  Randomize;                  
  Writeln('Ripetizioni');
  Readln(z);
  Writeln('-----------------------');
  Writeln('***** Soluzione 1 *****');
  for y := 1 to z do
    Soluzione1;
  Writeln('------------------------------');
  Writeln('***** Soluzione 2 *****');
  for y := 1 to z do
    Soluzione2;
  readln;
end.

Ibis redibis non morieris in bello