Sota Posted November 16, 2005 at 07:33 PM Report #6802 Posted November 16, 2005 at 07:33 PM BOas pessoal e a minha 1º vez neste forum sou da FCT e tou a dar pascal, e nao tou a perceber aquilo mto bem. tenho um trabalho pa fazer que passo amostrar: trabalho Pretende-se construir um programa, bem estruturado, que processe qualquer sequência de caracteres provenientes do teclado, tomando para análise todos aqueles que sejam encontrados até à primeira sequência de 5 caracteres '#' contíguos. O programa deverá calcular e afixar no ecrã · O maior número inteiro par, sem sinal, que será possível formar com todos os algarismos que figurem no conjunto dos caracteres analisados; · O menor número inteiro ímpar, sem sinal, que será possível formar com todos os algarismos que figurem no conjunto dos caracteres analisados. De notar que, como é habitual, só deverão ser afixados os algarismos significativos dos números inteiros obtidos. O número zero é considerado par. Todas as mensagens para o utilizador deverão ser frases completas em língua portuguesa e tão claras quanto possível, usando-se caracteres acentuados sempre que a ortografia assim o exija. As situações de impossibilidade de cálculo também deverão ser detectadas e geradas as respectivas mensagens para o utilizador, como, por exemplo: · Não existem algarismos para se poder formar números inteiros! · Não existem algarismos para se poder formar qualquer número par! · Não existem algarismos para se poder formar qualquer número ímpar! eu tenho mais ou menos uma ideia de como o fazer so que nao as base.. queria portanto saber como posso criar um vector(array) e meter la dentro todos os nº da sequencia e depois os ordenar como posso ler o ultimo valor do vector ver se e par ou impar e caso par por o ultimo par no fim.
deathseeker25 Posted November 16, 2005 at 08:44 PM Report #6806 Posted November 16, 2005 at 08:44 PM Boas, Em primeiro lugar bem-vindo á comunidade Sota. Acho que antes de mais deves apresentar o código que já elaboraste, ou o algoritmo de modo a que possamos dar as ajudas que necessitas. Cumps
GpL Posted November 16, 2005 at 09:03 PM Report #6809 Posted November 16, 2005 at 09:03 PM Ora aí esta um bom programa.. não percebi muito bem, se só se pode inserir numeros e quando é que se pára de inserir.. mas supondo que para de inserir quando carregar em 0 por exemplo.. isto por exemplo deveria funcionar.. a:=1; x:=3000 {dummy}; while x <> 0 do x:=readkey; array[a]=x; inc(a); para ordenar podes usar este metodo for i:=1 to n-1 do for j:= i+1 to n do if array[i]>array[j] THEN begin auxi:=num[i]; num[i]:=num[j]; num[j]:=auxi; end; end; quanto ao numero ser par é simples.. se (nr mod 2) = 0 então nr é par.
Sota Posted November 16, 2005 at 10:24 PM Author Report #6815 Posted November 16, 2005 at 10:24 PM eu ainda n consegui muita coisa :S mas vou por o que ja consegui. a indei do programa e por um sequencia e qd o utilizador puser 5#(#####) seguidos ele para de ler Isto e que eu tenho feito: program trab2; var x: char; c: array ['0'..'9'] of integer; function valorinteiro (b:char):integer; begin valorinteiro:= ord(b)-ord(0) end; procedure pede; writeln(' insira uma sequencia de numeros e termine com 5# seguidos') read(x) while x<># do begin c:= c + valorinteiro(x) (* add o valor inteiro do caracter lido ao vector*) read(x) end; nao sei se ta bem, agr faltame ordenar os numeros do array e fazer com que ele leia o ultimo valor do vector ate encontrar um par e por o par em ultimo e mais ou menos o mm po impar
GpL Posted November 17, 2005 at 07:31 AM Report #6828 Posted November 17, 2005 at 07:31 AM 1º na declaração do array não podes por ['0'..'9'] of integer, tem de ser [0..9] of integer; 2º Para que é essa função???! :shock: 3º esse while vai parar quando inserires um cardinal, e não 5 seguidos como tu tinhas dito.. 4º em vez de usares o readln(x) que o utilizador tem de carregar num caracter e depois carregar em enter,podias usas o x:=readkey; que não precisas carregar em enter,ele lê logo a tecla em que carregas para a variavel. 5º Já aí está como ordenar o array, não percebo qual é a tua dificuladade nesse assunto. Cumps.
Sota Posted November 17, 2005 at 05:04 PM Author Report #6845 Posted November 17, 2005 at 05:04 PM epah a minha dificuldade era nao percecer um cu de pascal e nao conhecer ainda mto bem os termos(array[perceber como funciona]mas ja consegui obrigado na mm fikei a conhecer readkey thx pessoal cump
will09 Posted November 17, 2005 at 10:53 PM Report #6874 Posted November 17, 2005 at 10:53 PM GPL diz-me so uma cena o readkey n lê so um caracter??? e que ja n me lembro mt bem... GPL disse:.... 4º em vez de usares o readln(x) que o utilizador tem de carregar num caracter e depois carregar em enter,podias usas o x:=readkey; que não precisas carregar em enter,ele lê logo a tecla em que carregas para a variavel. PEACE ;)
GpL Posted November 17, 2005 at 11:05 PM Report #6876 Posted November 17, 2005 at 11:05 PM Sim,lê só um! mas ia lendo um a um para determinada posição do array, da maneira que eu lhe tava a dizer.. não sei como ele fez.. ele tambem não se sabe explicar muito bem mas pronto.. 😛
Warrior Posted November 18, 2005 at 04:29 PM Report #6910 Posted November 18, 2005 at 04:29 PM O exercício é facil de se resolver. Só tenho uma duvida, os dados são inseridos todos numa linha (estilo "12564#55#####45") ou em linhas separadas? De qualquer das formas, é bastante simples. Fazes algo do genero: //A variavel S é do tipo string readln(S); //A função "pos" encontra a posição de uma substring numa string, vamos apagar na variavel s, a partir da posição inicial dos #####, o numero de caracteres certos (até ao fim da string, logo, comprimento de S menos Posição dos caracteres) delete(s,pos(s,'#####'),length(s)-pos(s,'#####')) //Percorrer toda a String e eliminar os caracteres que nao forem numeros for j:=1 to length(s) do if (not ((s[j]>=0) and (s[j]<=9))) then delete(s,j,1); //Passar a string para o vector; começamos por percorrer a string for j:=1 to length(s) do begin //Não esquecer de converter o caracter para o tipo inteiro com "val" val(s[j],x,erro); vector[j]:=x end; E é so fazer a ordenação do vector por ordem crescente e decrescente, para se ter o maior e o menor numero. PS: Não tenho a certeza se funciona porque 1º Não o testei, 2º Tenho duvidas quanto à sintaxe dos procedimentos "delete" e "val", nao me lembro ao certo do numero de parametros que eles pedem.
Spread Posted November 20, 2005 at 02:59 PM Report #7001 Posted November 20, 2005 at 02:59 PM Em que curso tás páh? Também tive que fazer este programa, mas tinha k finalizar com ***. Cumps 8) http://spread-pt.comDownload de Hiphop Português gratuito
GpL Posted November 20, 2005 at 05:35 PM Report #7030 Posted November 20, 2005 at 05:35 PM Isso do curso é um pouco offtopic não achas? já ouviste falar em PM ?
Sota Posted November 26, 2005 at 07:21 PM Author Report #7453 Posted November 26, 2005 at 07:21 PM o meu curso LEEC na nova
GpL Posted November 26, 2005 at 08:19 PM Report #7462 Posted November 26, 2005 at 08:19 PM Isso do curso é um pouco offtopic não achas? já ouviste falar em PM ? Que palavra não percebeste Sota ?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now