Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    35

    [PASCAL]Possibili combinazioni di caratteri

    Rieccomi qua a chiedere il vostro aiuto...

    devo implementare un programmino che preso in input dei caratteri crei in output le possibili combinazioni dei caratteri dati in input,
    L'input dovrebbe essere messo in una struttura dati(code,array,liste..)a piacere e le combinazioni possibili dovrebbero essere per un qual si voglia m
    Penso che dovrebbero essere delle permutazioni in quanto facendo una breve prova le possibili combinazioni di una parola di m caratteri sono in numero di m fattoriale

    es: parola data in input : abc

    abc-->acb-->bac-->bca-->cab-->cba

    essendo m=3 il numero di combinazione è 3!=3*2*1=6


    Attendo un vostro aiuto...!!!

  2. #2
    io farei così:
    ti crei un array di char lungo m, dove memorizzi in ordine le lettere dell'imput.
    Poi, a seconda della lunghezza di m, scrivi cicli for annidati, tipo:
    codice:
    for i:=0 to m-1 do
     for j:=0 to m-1 do
      for k:=0 to m-1 do
        begin
        permutazione = a[i]+a[j]+a[k];
        writeln(permutazione);
        end;
    dove a è l'array di char.


  3. #3
    Ecco una possibile soluzione del problema mediante una procedura ricorsiva :
    codice:
    program Permuta;
    
    
    var
     strIn:string;
     strNew:string;
     len:integer;
     i:integer;
     count:integer;
     
    procedure GenPerm(strSub:string;index:integer);
    
     var
      strTemp:string;
      i:integer;
     begin
      strTemp:=strSub;
      for i:=1 to len do
      begin
       if strTemp[i]=' ' then
       begin
        strTemp[i]:=strIn[index];
        if index=len then
        begin
         writeln(strTemp);
         count:=count+1;
        end
        else GenPerm(strTemp,index+1);
       end;
       strTemp:=strSub;
      end;
     end;
     
    begin
     count:=0;
     strNew:='';
     readln(strIn);
     len:=Length(strIn);
     for i:=1 to len do
      strNew:=strNew+' ';
     GenPerm(strNew,1);
     writeln('Numero delle permutazioni: ',count);
     readln;
    end.
    Saluti .

  4. #4
    allora mi voglio divertire anch'io,
    eccone un'altra, sempre ricorsiva
    codice:
    program permuta;
    
    {
    Questo programma stampa ricorsivamente tutte le permutazione di una stringa di caratteri.
    Compilare con fpc permuta
    }
    
    uses
      crt;
    var
      str : string;
      procedure permu (c, str : string);
      var
        i, len : integer;
        c1 : char;
      begin
    
        len := Length(str);
        case len of
          0, 1 : WriteLn(str);
          2    : begin
          		WriteLn(c + str[1] + str[2]);
          		WriteLn(c + str[2] + str[1]);
        	     end;
          else
            for i := 1 to len do
            begin
              // swap dei caratteri
    	  c1 := str[i];
              str[i] := str[1];
              str[1] := c1;
    	  permu(c + c1, Copy(str, 2, len - 1));
            end;
        end;
      end;
    
    begin
    
      WriteLn('Introduci la stringa da permutare :');
      ReadLn(str);
    
      WriteLn('***');
      permu('', str);
      WriteLn('***');
    
      WriteLn('');
      WriteLn('Grazie per aver usato questo programma.');
      WriteLn('');
    
    end.
    ciao
    sergio

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    35
    grazie ragazzi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.