Carcleo 4 Denunciar post Postado Agosto 16, 2012 Olá pessoal. Estou montando um codigo aqui em pascal´onde o usuario, através do teclado, digita dois numeros inteiros. Preciso saber se esses numeros foram de fato digitados ou se o usuario bateu enter sem digitar. Como fazer essa validaçao com inteiros? if((coordenada_x='') or (coordenada_y='')) then begin~ writeln('Você não digitou a coordenada corretamente!'); break; end; Não esta passadno assim. Compartilhar este post Link para o post Compartilhar em outros sites
Ismaeldm 5 Denunciar post Postado Agosto 17, 2012 Parece ser uma coisa simples... mas nem tanto... Eu fiz um exemplo aqui que funcionou tudo certinho, mas na boa, acho que é melhor você deixar com esse negócio normal mesmo shuashuahsu Aí se por acaso você quiser utilizar, é só adaptar. program exemplo; uses crt, sysutils; var x: integer; strx: string; fim: boolean; tecla: char; begin clrscr; x := 0; fim := false; writeln('Digite um numero...'); while fim=false do begin tecla := readkey; if tecla=#13 then begin writeln('O numero deve conter ao menos um algarismo...'); end else begin while tecla<>#13 do begin if tecla=#8 then begin strx := copy(strx, 1, length(strx)-1); write(tecla); write(' '); end else begin strx := strx + tecla; end; write(tecla); tecla := readkey; end; if length(strx)>0 then begin fim := true; writeln; end else begin writeln('O numero deve conter ao menos um algarismo...'); end; end; end; x := StrToInt(strx); writeln('O numero digitado foi: ', x); readln; end. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 17, 2012 Acho que o que eu preciso não é bem isso. Como faço para validar se um campo recebeu um integer? Tipo: if (variavel não recebeu valor inteiro) then pare o codigo Outra dificuldade que estou tendo é a seguinte: Tenho 4 variaveis: var1:= 5; var2:= 2; var3:= 8; var4:= 0; Quero saber qual tem valor maior e qual é esse valor. Como faço? Compartilhar este post Link para o post Compartilhar em outros sites
Ismaeldm 5 Denunciar post Postado Agosto 17, 2012 Você sabe utilizar array? Acho que o melhor a se fazer para ambas as coisas que você quer é utilizar array. Abaixo vou te passar outro programa que faz o seguinte... Temos 2 array, um para integer, e outro para boolean, dentro de um for iremos fazer as leituras do array para integer, e caso o usuario não queira informar um valor, então o valor do array para boolean fica "false", se não fica "true". E para pegar o numero maior utilizaremos um outro for, que irá repetir 3 vezes (tamanho do array -1), onde ele irá testar se o numero 2 é maior que o 1, se o numero 3 é maior que o 2 e se o numero 4 é maior que o 3. E depois temos mais um for para exibir os dados ao usuario. Caso tenha alguma duvida sobre alguma linha ou coisa parecida é só perguntar :thumbsup: program exemplo; uses crt; var n: array [1..4] of integer; altera: array [1..4] of boolean; maior: integer; declaradas: integer; cont: byte; //Variavel usada apenas para configura‡äes do for. begin clrscr; n[1] := 0; n[2] := 0; n[3] := 0; n[4] := 0; maior := 0; declaradas := 0; //Abaixo temos as leituras das variaveis for cont:=1 to 4 do begin writeln('Deseja informar o valor do ', cont, 'ø numero? (tecle ENTER para SIM ou outra para NAO)'); if readkey=#13 then begin write('Digite o numero: '); readln(n[cont]); altera[cont] := true; declaradas := declaradas+1; end else begin altera[cont] := false; end; writeln; //Linha em branco end; //Abaixo temos a defini‡Æo da maior if declaradas>0 then begin for cont:=1 to 3 do begin if n[cont+1] > n[cont] then maior := cont+1; if n[cont] > n[cont+1] then maior := cont; end; end; //Abaixo fica as exibi‡äes... writeln('Foram declaradas ', declaradas, ' variaveis...'); for cont:=1 to 4 do begin if altera[cont]=true then begin writeln('O numero ', cont, ' foi declarado'); end else begin writeln('O numero ', cont, ' nao foi declarado'); end; end; writeln; if maior>0 then begin writeln('O numero de maior valor ‚ o ', maior, ', que contem ', n[maior]); end else begin writeln('Nao foi possivel calcular o maior valor pois nenhum foi declarado') end; readln; end. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Agosto 17, 2012 Da uma olhada. Consegui fazer do jeito abaixo: Program Questao4 ; var tecla:char; var coordenada_y, coordenada_x, QuantasVoltas, i, quad_1, quad_2, quad_3, quad_4, quadrante, maior:integer; coordenadas: array[0..100,1..2] of integer; Begin QuantasVoltas:=100; quad_1:=0; quad_2:=0; quad_3:=0; quad_4:=0; for i:=0 to QuantasVoltas do begin writeln('Entre com a coordenadas X do ',i+1,'o par'); read (coordenada_x); if coordenada_x=0 then begin writeln('Você nao digitou a coordenada valida'); break; end; writeln('Entre com a coordenadas Y do ',i+1,'o par'); read (coordenada_y); if coordenada_y=0 then begin writeln('Você nao digitou a coordenada valida'); break; end; coordenadas[i][1]:=coordenada_x; coordenadas[i][2]:=coordenada_y; if ((coordenadas[i][1] >0)and(coordenadas[i][2] >0)) then begin writeln('O par de coordenadas cartezianas X,Y (',coordenadas[i][1],',',coordenadas[i][2],') esta no primeiro quadrante!'); quad_1:=quad_1+1; end; if ((coordenadas[i][1]< 0)and(coordenadas[i][2] >0)) then begin writeln('O par de coordenadas cartezianas X,Y (',coordenadas[i][1],',',coordenadas[i][2],') esta no segundo quadrante!'); quad_2:=quad_2+1; end; if ((coordenadas[i][1] < 0)and(coordenadas[i][2] < 0)) then begin writeln('O par de coordenadas cartezianas X,Y (',coordenadas[i][1],',',coordenadas[i][2],') esta no terceiro quadrante!'); quad_3:=quad_3+1; end; if ((coordenadas[i][1] >0)and(coordenadas[i][2] <0)) then begin writeln('O par de coordenadas cartezianas X,Y (',coordenadas[i][1],',',coordenadas[i][2],') esta no quarto quadrante!'); quad_4:=quad_1+4; end; if (quad_1 >= quad_2) and (quad_1 >= quad_3) and (quad_1 >= quad_4) then begin maior := quad_1; quadrante:=1; end; if (quad_2 >= quad_1) and (quad_2 >= quad_3) and (quad_2 >= quad_4) then begin maior := quad_2; quadrante:=2; end; if (quad_3 >= quad_1) and (quad_3 >= quad_2) and (quad_3 >= quad_4) then begin maior := quad_3; quadrante:=3; end; if (quad_4 >= quad_1) and (quad_4 >= quad_2) and (quad_4 >= quad_3) then begin maior := quad_4; quadrante:=4; end; end; writeln('O quadrante que caiu o maior numero de pontos e: ',quadrante); writeln('E a quantidade de pontos e: ',maior); writeln(' '); End. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Ismaeldm 5 Denunciar post Postado Agosto 18, 2012 ta funcionando ^^ só não entendi porque você quis salvar todas as cordenadas, em vez de fazer um array com TODAS elas, porque só não faz 2 integers? um com a cordenada X e outro com o Y, ja seria o suficiente pro seu programa rodar. E a variavel tecla não está sendo usada hehe. Cara, você tbm está aprendendo pascal né? Eu to fazendo um curso de Delphi e meu semestre passado foi todo de pascal xD Me add no msn aí: ismael.dullius.machado@hotmail.com Aí a gente vai trocando umas idéias e pah xD Compartilhar este post Link para o post Compartilhar em outros sites