Recent

Author Topic: Ajuda a criar um programa  (Read 3805 times)

caiba1

  • Newbie
  • Posts: 1
Ajuda a criar um programa
« on: February 28, 2015, 06:19:51 pm »
estou a ter um problema ao criar um programa, na preparação para um teste e não o consigo fazer funcionar, no enunciado diz o seguinte:
Elabore um Algoritmo que pergunte o nome ao utilizador, e responda aleatoriamente
«"Olá ", nome, "!"», «"Como está ", nome, "?"» ou «"Prazer em vê-lo ", nome, "!"».
o que eu consegui fazer foi:
program Project1;


uses crt;
var
a:string;
b:integer;
begin
  clrscr;
  writeln('introduza o seu primeiro nome');
  readln(a);
  randomize;
 for b := 1 to 3 do
   begin
     b :=random (3)+1;
     case b of
     1:writeln('Ola ',a,'!');
     2:writeln('Como esta ',a,'?');
     3:writeln('Prazer em ve-lo ',a,'!');
     end;
   end;
   readln();
end.



Mas esta me a dar um erro:project1.lpr(15,8) Error: Illegal assignment to for-loop variable "b"

e gostaria que me ajudassem com isto ate domingo dia 29 à noite, atenção, tentem faze-lo com comandos simples,visto que estou a começar a trabalhar com pascal e ainda só sei utilizar os comandos básicos.

jmpessoa

  • Hero Member
  • *****
  • Posts: 2301
Re: Ajuda a criar um programa
« Reply #1 on: February 28, 2015, 07:00:43 pm »
O erro é aqui:

Code: [Select]
b :=random (3)+1;
Voce não pode reutilizar "b".... declare outra variável ....

Lamw: Lazarus Android Module Wizard
https://github.com/jmpessoa/lazandroidmodulewizard

progdias

  • Newbie
  • Posts: 3
Re: Ajuda a criar um programa
« Reply #2 on: February 28, 2015, 07:17:55 pm »
Sim. Tente declarar outra variável como:

program Project1;


uses crt;
var
a:string;
b,c:integer;

begin
  clrscr;
  writeln('introduza o seu primeiro nome');
  readln(a);
  randomize;

  for c:= 1 to 3 do
   begin
     b :=random (3)+1;
     case b of
     1:writeln('Ola ',a,'!');
     2:writeln('Como esta ',a,'?');
     3:writeln('Prazer em ve-lo ',a,'!');
     end;
   end;
   readln();
end. 

Mas depois disto tem outro problema > se por exemplo a variavel b começar em 3, depois pode voltar a 3, pois o número aleatório pode ser o mesmo e não outro como você quer.     :o             

progdias

  • Newbie
  • Posts: 3
Re: Ajuda a criar um programa
« Reply #3 on: February 28, 2015, 08:13:19 pm »
Mesmo sendo um Newbie penso que consegui solucionar o problema.

Pensei assim> 1º o random escolhe a 1ª frase. Depois as duas que faltam também são escolhidas pelo random. Possivelmente devem existir outras soluções com menos código, mas aqui vai o meu contributo.  ;)

program Project1;

uses crt;
var
a:string;
b,c:integer;

begin
  clrscr;
  writeln('Introduza o seu primeiro nome:');
  readln(a);
  randomize;
  b :=random (3)+1;
  case b of
     1:begin
            writeln('Olá ',a,'!');
            c:= random (2) +1;
            case c of
               1:begin
                 writeln('Como está ',a,'?');
                 writeln('Prazer em vê-lo ',a,'!');
                 end;
               2:begin
                 writeln('Prazer em vê-lo ',a,'!');
                 writeln('Como está ',a,'?');
                 end;
            end;
       end;
     2:begin
            writeln('Como está ',a,'?');
            c:= random (2) +1;
            case c of
               1:begin
                 writeln('Olá ',a,'!');
                 writeln('Prazer em vê-lo ',a,'!');
                 end;
               2:begin
                 writeln('Prazer em vê-lo ',a,'!');
                 writeln('Olá ',a,'!');
                 end;
            end;
       end;
     3:begin
            writeln('Prazer em vê-lo ',a,'!');
            c:= random (2) +1;
            case c of
               1:begin
                 writeln('Como está ',a,'?');
                 writeln('Olá ',a,'!');
                 end;
               2:begin
                 writeln('Olá ',a,'!');
                 writeln('Como está ',a,'?');
                 end;
            end;
       end;
  end;
readln();
end.     

 

TinyPortal © 2005-2018