1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Algoritmos em pascal

Discussão em 'Programação' iniciada por timmy10, 2 de Abril de 2008. (Respostas: 9; Visualizações: 4614)

  1. timmy10

    timmy10 Power Member

    Tenho que inverter um nome que introduzo por exemplo escrevo maria tem que inverter para ficar airam.

    Obrigado
     
  2. Tsunamy_boy

    Tsunamy_boy Banido

    ciclo For ajuda?
    começas de traz para a frente(no ciclo for) a pegar no index da tua string (quem vai conter a palavra 'Maria') e adicionas-la numa variavel temporaria(index a index)...
    O algoritmo é este...não consigo é explicar melhor... sorry :(
    tenta isto(não sei se dá)


    var
    nome : string;
    nome_temp : string;
    i:intiger;

    (...)

    nome:="maria";
    For i := LENGTH(nome) downTo 0 Do
    Begin
    nome_temp = nome_temp + nome;
    End;
    Já não tenho pascal a uns anos mas o k poder ajudar diz
     
    Última edição: 2 de Abril de 2008
  3. timmy10

    timmy10 Power Member

    Ainda não dei isso do index :( não sei como e que se usa. Estava a pensar numa coisa tipo maria tem 5 caracteres queria cortar e colar o caracter 5 no 1 o 4 no 2 etc.

    obrigado na mesma :p
     
  4. Mavors

    Mavors Power Member

    Acho que isto faz o que pretendes:

    Código:
    program invert;
    
    var
      Str, Str2: String;
      c: integer;
    
    begin
      Write('Insere a String: ');
      Readln(Str);
      Str2 := '';
      for c := Length(Str) downto 1 do
        Str2 := Str2+Str[c];
      Write(Str2);
      Readln;
    end.
    
     
  5. timmy10

    timmy10 Power Member

    podes dizer como e que isso funciona?
    obrigadao ja posso continuar
     
    Última edição: 2 de Abril de 2008
  6. Tsunamy_boy

    Tsunamy_boy Banido

    o index vai buscar apenas um caracter na posição que queres de uma string assim:
    variavel_string[posição] (isto devolve um valor do tipo char).
     
  7. Mavors

    Mavors Power Member

    program invert;

    //Declaração de variáveis
    var
    Str, Str2: String;
    c: integer;
    //Fim de declaração de variáveis

    //Inicio
    begin

    //Envia mensagem ao utilizador
    Write('Insere a String: ');

    //Lê dados do ecrã
    Readln(Str);

    //Inicializa variável Str2 a vazio
    Str2 := '';

    //Ciclo de repetição que vai percorrer quantas vezes o números de caracteres que a string tenha. O lenght() devolve um inteiro com esse número.
    for c := Length(Str) downto 1 do

    //Enquanto aquela condição for verdade a Str2 (String vazia) irá concatenar os caracteres da String, mas por ordem inversa, uma vez que começa do caracter com inteiro mais alto.
    Str2 := Str2+Str[c];

    //Devolve ao utilizador a String invertida após o ciclo ter concluído.
    Write(Str2);
    Readln;

    //Fim
    end

    Espero ter ajudado.
     
  8. MPalhas

    MPalhas Power Member

    nao será antes:
    for c:= Lenght(Str)-1 downTo 0 do ???

    já quase não me lembro de Pascal mas penso que os indices também começam em 0 não é?
     
  9. Tsunamy_boy

    Tsunamy_boy Banido

    sim tens toda a razão pois o tamanho da string "maria" são 5 caracteres e a cada letra coresponde um index como este começa em zero fica:

    (letra - index)
    M - 0
    A - 1
    R - 2
    I - 3
    A - 4

    Acabando o index em 4 e não em 5(tamanho da string em caracteres)
    Relenbro-vos que estamos a contar index a index e nao caracter a caracter dai teres razão
    Cummps
     
  10. Podiam me ajudar neste programa que da-me errro e ja tentei, tentei e da sempre o mesmo erro se me pudessem ajudaragradecia. obrigado

    Ler 8 elementos de 1 matriz A dotipo vector. construir uma matriz B da mesma dimensão com os seus elementos multiplicados por3. Apresentar uma matriz B

    Código:
    Program matriz_a_b;
     Var A: Array [ 1..8 ] of Integer;
         B: Array [ 1..8 ] of Integer;
         i,n: Integer;
     Cont,Mult:Integer;
     Begin
      Clrscr;
      Cont:=0;
      Writeln('Introduza os valores de A');
      Writeln(''); 
      For i:= 1 to 8 do
        For n:= 1 to 8 do
         Begin
           Write('Entre com o valor A[',i, ',',n, '] : '); 
           Readln(A[i,n]);
         End;
      
       Writeln('Introduza os valores de B');
       Writeln(''); 
      For i:= 1 to 8 do
        For n:= 1 to 8 do
         Begin
           Writeln('Entre com o valor B[',i, ',',n, '] '); 
           Readln(B[i,n]);
         End; 
       
        Cont:=Cont*1;
        For n:=1 to 8 do
        Mult:=B[i]*3;
         Begin
          Writeln('O valor da matriz A e:',Mult);
          Readln(A[n]);
         End; 
         Readkey; 
     End.
     
    Última edição pelo moderador: 22 de Abril de 2008

Partilhar esta Página