vsilvanf Posted September 27, 2013 at 12:48 AM Report #526217 Posted September 27, 2013 at 12:48 AM Galera existe alguma forma Pascal, trabalhando com ponteiros, que eu consiga gerar aleatoriamente um inteiro longo com dez dígitos do tipo de um ponteiro. Se existir poderiam me dar uma ideia da lógica a ser usada?
passarito Posted September 27, 2013 at 07:28 AM Report #526220 Posted September 27, 2013 at 07:28 AM Ou não estou a entender ou não estou a entender o objectivo! Arranjas um ponteiro do tipo LongInt e depois aplicas-lhe um Random! Mas duvido que sejá só isto. Explica-te melhor.
thoga31 Posted September 27, 2013 at 01:05 PM Report #526297 Posted September 27, 2013 at 01:05 PM um inteiro longo com dez dígitos do tipo de um ponteiro. Desconheço a existência de tal coisa em Pascal. Assino por baixo o post do @passarito. Knowledge is free!
vsilvanf Posted September 27, 2013 at 05:51 PM Author Report #526381 Posted September 27, 2013 at 05:51 PM (edited) Boa tarde enfim galera. Estou cursando a faculdade de tecnologia, e tem um trabalho para ser entregue. Tem uma materia que é a respeito dos ponteiros em Pascal, e nessa questão no enunciado fala para usar a matéria de ponteiros. Também não entendi, já utilizei o Random mas sem ponteiros. No enunciado pede para criar um Type ponteiro apontando para um record, e no record ter um campo para a informação do número e outro campo que seria o ponteiro criado acima (Recursividade). E logo em seguida no enunciado pede para gerar aleatoriamente um inteiro longo com dez dígitos do tipo desse ponteiro criado. Não consegui entender também, pq a lógica do ponteiros não seria só para criação de listas e arvores binárias? Edited September 27, 2013 at 05:52 PM by vsilvanf
pwseo Posted September 27, 2013 at 06:02 PM Report #526382 Posted September 27, 2013 at 06:02 PM (edited) De que forma está isso escrito no enunciado? Aqui ninguém te vai resolver o exercício nem fazer o trabalho, mas pode ser que te ajudem a compreender o que é pretendido. Continua a parecer-me que algo está a ser confundido aí. Além disso, parece-me que a estrutura de dados que acabaste de descrever é uma lista ligada simples... Talvez cada nó da mesma seja considerado um dígito (e seja para gerar 10 dígitos ao acaso). Já agora acrescento que a explicação que deste agora não tem nada a ver com a que deste no post de abertura da thread. Uma vez mais: algo está muito confuso aí. Edited September 27, 2013 at 06:05 PM by pwseo
passarito Posted September 27, 2013 at 06:09 PM Report #526383 Posted September 27, 2013 at 06:09 PM Que confusão que vai para aí..... Estou cursando a faculdade de tecnologia, e tem um trabalho para ser entregue. Tem uma materia que é a respeito dos ponteiros em Pascal, e nessa questão no enunciado fala para usar a matéria de ponteiros. Também não entendi, já utilizei o Random mas sem ponteiros. Assim, sim! Tem toda a lógica, mas deixa-me que te diga tu não estás cursando coisa nenhuma, pelas confusões que apresentas deixa-me que te pergunte 2 coisas: Tens ido às aulas? Tens estudado a matéria? No enunciado pede para criar um Type ponteiro apontando para um record, e no record ter um campo para a informação do número e outro campo que seria o ponteiro criado acima (Recursividade). Isto não tem nada a haver com recursividade mas sim com listas ligadas! E logo em seguida no enunciado pede para gerar aleatoriamente um inteiro longo com dez dígitos do tipo desse ponteiro criado. Cheira-me que não é nada disso, mas.... Não consegui entender também, pq a lógica do ponteiros não seria só para criação de listas e arvores binárias? E é isso mesmo que é pedido! Talvez cada nó da mesma seja considerado um dígito (e seja para gerar 10 dígitos ao acaso). Acho que o problema é simples, não chega a essa complexidadedo. É o que dizes ao inicio parece-me que a estrutura de dados que acabaste de descrever é uma lista ligada simples...
thoga31 Posted September 27, 2013 at 07:58 PM Report #526392 Posted September 27, 2013 at 07:58 PM (edited) No enunciado pede para criar um Type ponteiro apontando para um record, e no record ter um campo para a informação do número e outro campo que seria o ponteiro criado acima (Recursividade). (...) Não consegui entender também, pq a lógica do ponteiros não seria só para criação de listas e arvores binárias? O que descreveste é uma lista ligada. A recursividade vem da tua imaginação. A única parte que fiquei sem entender foi a do número de 10 dígitos. Cada nó contém um número destes, ou cada um dos 10 nós contém um dígito? A explicação do enunciado está extremamente confusa, o que denota uma séria falta de conhecimentos de conceitos básicos que permitam estruturar minimamente um discurso coerente. O meu conselho é consolidar o mais depressa possível estes conceitos, porque não entender que se está perante um pedido de uma lista ligada quando se tem noção de que os ponteiros são úteis na sua criação é, no mínimo, grave. Edited September 27, 2013 at 08:08 PM by thoga31 1 Report Knowledge is free!
Suelen Passos Posted November 10, 2013 at 12:02 PM Report #532699 Posted November 10, 2013 at 12:02 PM (edited) program GeraAleatorios(input{teclado}, output{tela}); type TDigito = 0..9; InteiroLongo = ^NoDigito; NoDigito = Record Digito: TDigito; Prox: InteiroLongo; End; procedure mostrar(a{e}: InteiroLongo; tabulacao{e}: integer); begin write(output, '':tabulacao); while a<>nil do begin write(output, a^.Digito); a:= a^.Prox; end; writeln(output); end; procedure produzAleatorio(var a{s}: InteiroLongo; tamanho{e}: integer); var posicao: integer; novo: InteiroLongo; begin a:= nil; for posicao:= 1 to tamanho do begin new(novo); novo^.Digito:= random(10); novo^.prox:= a; a:= novo; {produz o inteiro do digito menos significativo para o mais significativo} end; end; function inverter(inteirao{e}: InteiroLongo): InteiroLongo; var res, auxiliar: InteiroLongo; begin res:= nil; while inteirao<>nil do begin new(auxiliar); auxiliar^.Digito:= inteirao^.Digito; auxiliar^.Prox:= res; res:= auxiliar; inteirao:= inteirao^.Prox; end; inverter:= res; end; procedure produzSoma(prim{e},seg{e}: InteiroLongo; var resultado{s}: InteiroLongo); var x, y, auxiliar: InteiroLongo; propagar: integer; begin x:= inverter(prim); y:= inverter(seg); propagar:= 0; resultado:= nil; while (x<>nil) and (y<>nil) do begin new(auxiliar); auxiliar^.Digito:= (x^.Digito+y^.Digito+propagar) mod 10; propagar:= (x^.Digito+y^.Digito+propagar) div 10; auxiliar^.Prox:= resultado; resultado:= auxiliar; x:= x^.Prox; y:= y^.Prox; end; if (x=nil) then begin while y<>nil do begin new(auxiliar); auxiliar^.Digito:= (y^.Digito+propagar) mod 10; propagar:= (y^.Digito+propagar) div 10; auxiliar^.Prox:= resultado; resultado:= auxiliar; y:= y^.Prox; end; end else if (y=nil) then begin new(auxiliar); auxiliar^.Digito:= (x^.Digito+propagar) mod 10; propagar:= (x^.Digito+propagar) div 10; auxiliar^.Prox:= resultado; resultado:= auxiliar; x:= x^.Prox; end; if propagar<>0 then begin new(auxiliar); auxiliar^.Digito:= propagar; auxiliar^.Prox:= resultado; resultado:= auxiliar; end end; var primeiro, segundo, soma: InteiroLongo; begin randomize; produzAleatorio(primeiro, 10); produzAleatorio(segundo, 20); mostrar(primeiro, 11); mostrar(segundo, 1); produzSoma(primeiro, segundo, soma); writeln(output, '----------------------'); mostrar(soma, 1); readln(input); end. Edited November 10, 2013 at 03:04 PM by thoga31 GeSHi
thoga31 Posted November 10, 2013 at 03:08 PM Report #532707 Posted November 10, 2013 at 03:08 PM @Suelen Passos, para além do tópico já ter alguma idade e o membro @vsilvanf não voltar cá desde o dia 30 de Setembro, no P@P não se resolvem as questões para os outros. Nós ensinamos a pescar e nunca, mas nunca, damos o peixe pronto-a-comer. Assim os membros nunca aprendem e começam a servir-se do P@P como um centro de resolução de trabalhos de casa gratuito. Somos uma comunidade de programadores com o intuito de partilhar conhecimentos e não de fazer o trabalho dos outros. Cumprimentos. Knowledge is free!
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