View Full Version : Sequencia de numeros!


P4rthen0n
08-11-2004, 11:24
Processamento de caracteres

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 ocorrência de um determinado símbolo, escolhido prévia e interactivamente pelo utilizador final, ao qual será exigida a confirmação desse mesmo símbolo.

Do processamento deverão resultar as seguintes informações, a afixar no ecrã:

* O maior número inteiro que será possível formar com todos os algarismos que figurem na sequência de caracteres introduzida e o respectivo número de algarismos significativos, ou, conforme o caso, outras indicações apropriadas;

* O menor número inteiro que será possível formar com todos os algarismos que figurem na sequência de caracteres introduzida e o respectivo número de algarismos significativos, ou, conforme o caso, outras indicações apropriadas.

Todas as mensagens para o utilizador, incluindo as da afixação dos resultados, deverão ser frases completas e tão claras quanto possível, não pressupondo, da parte do utilizador, qualquer conhecimento prévio do enunciado do problema.



Mais um trabalho que não sabemos como fazer!! :(

Dicas ou sugestões?

greven
08-11-2004, 11:48
E qual é a linguagem? Bem, mas pelo enunciado, tens que pensar primeiro antes de tentar programar, porque o programa implica alguma matemática, também tive uns assim em Programação em C.

Lancaster
08-11-2004, 19:08
Heyas all....

Bem se eu percebi isto como deve ser...acho o enunciado uma beca para o confuso...mas pronto...

* O maior número inteiro que será possível formar com todos os algarismos que figurem na sequência de caracteres introduzida e o respectivo número de algarismos significativos, ou, conforme o caso, outras indicações apropriadas;

Isto é fácil...pegam num vector com todos os números que leram...fazem-lhe um sort do maior para o menor (ordenam já devem ter dado os algoritmos quicksort e bubblesort) e esse é o vosso maior inteiro...em relação aos algarismos significativos...essa é que eu não percebi....mas como o maior número inteiro nunca começa por zero...portanto o número de algarismos nesse número é o número de algarismos significativos...(espero que tenham percebido...)


* O menor número inteiro que será possível formar com todos os algarismos que figurem na sequência de caracteres introduzida e o respectivo número de algarismos significativos, ou, conforme o caso, outras indicações apropriadas.

Este aqui é precisamente o contrário..ordenam por ordem crescente o vector....e tá a andar...agora já sabem que o número 0 não é algarismo significativo....espero que saibam isto...

Em relação às outra "indicações apropriadas" não faço a mínima ideia...já parece o asdwq dw utya do meu prof de física 3, quer que expliquemos porque é que 1+1 = 2....mas pronto...

Espero ter ajudado..hasta all [[]]

PS: A linguagem é Pascal...

SwimmerBoy
08-11-2004, 20:40
A linguagem é PASCAL!!

Andr0m3da
09-11-2004, 00:32
Heyas all....

Bem se eu percebi isto como deve ser...acho o enunciado uma beca para o confuso...mas pronto...



Isto é fácil...pegam num vector com todos os números que leram...fazem-lhe um sort do maior para o menor (ordenam já devem ter dado os algoritmos quicksort e bubblesort) e esse é o vosso maior inteiro...em relação aos algarismos significativos...essa é que eu não percebi....mas como o maior número inteiro nunca começa por zero...portanto o número de algarismos nesse número é o número de algarismos significativos...(espero que tenham percebido...)




Este aqui é precisamente o contrário..ordenam por ordem crescente o vector....e tá a andar...agora já sabem que o número 0 não é algarismo significativo....espero que saibam isto...

Em relação às outra "indicações apropriadas" não faço a mínima ideia...já parece o asdwq dw utya do meu prof de física 3, quer que expliquemos porque é que 1+1 = 2....mas pronto...

Espero ter ajudado..hasta all [[]]

PS: A linguagem é Pascal...

antes precisam de separar para uma string auxiliar os algarismos... para ignorarem os caracteres... ou terei percebido mal o enunciado?

SwimmerBoy
09-11-2004, 01:01
Vamos precisar de pedir ao utilizador por um caracter que sirva como limite da sequencia de caracteres!!

do tipo

tatata99*fshjfduisfhlsj123*

ou seja, ele só lê o k está entre os ** e o maior numero será 321, o menor será 123 e serão 3 algarismos significativos!!!

[[]]

Andr0m3da
09-11-2004, 01:07
eu faria da seguinte maneira.

num ciclo
1 - avaliava o primeir caracter da string.
2- metia na string dos numeros caso fosse algarismo.
3 - saia caso fosse o simbolo escolhido.

depois ordenava os caracteres da string algarismos, dos dois modos necessarios para obter o maior numero e menor numero.

nota: para ordenar... usem o valor ASCII

Feiticeiro
09-11-2004, 10:59
Vamos precisar de pedir ao utilizador por um caracter que sirva como limite da sequencia de caracteres!!

do tipo



ou seja, ele só lê o k está entre os ** e o maior numero será 321, o menor será 123 e serão 3 algarismos significativos!!!

[[]]
Penso que não estejas a ler bem o enunciado.
O utilizador apenas irá introduzir uma vez o "*", se o o caracter escolhido pelo utilizador como o delimitador.
Ou seja, se o caracter delimitador for o "*", então temos por exemplo:

"ocaganamata1eu2mgr3anderabao*", e termina a introdução dos dados ao introduzir o "*".
Depois tens que procurar na string os caracteres do tipo number e guarda-los numa variável, do tipo string. Ordenas essa string em 2 variáveis distintas, onde uma terá a ordem crescente, e a outra terá a ordem decrescente.
Depois apresentas ao utilizador uma frase pipi a indicar a mensagem que ele introduziu; da mensagem que introduziu os algarismos encontrados foram xxx; o maior nº inteiro é o x, e o menor nº inteiro é o y.

Só não percebi: "o respectivo número de algarismos significativos". :(

P4rthen0n
09-11-2004, 11:12
Penso que não estejas a ler bem o enunciado.
O utilizador apenas irá introduzir uma vez o "*", se o o caracter escolhido pelo utilizador como o delimitador.
Ou seja, se o caracter delimitador for o "*", então temos por exemplo:

"ocaganamata1eu2mgr3anderabao*", e termina a introdução dos dados ao introduzir o "*".
Depois tens que procurar na string os caracteres do tipo number e guarda-los numa variável, do tipo string. Ordenas essa string em 2 variáveis distintas, onde uma terá a ordem crescente, e a outra terá a ordem decrescente.
Depois apresentas ao utilizador uma frase pipi a indicar a mensagem que ele introduziu; da mensagem que introduziu os algarismos encontrados foram xxx; o maior nº inteiro é o x, e o menor nº inteiro é o y.

Só não percebi: "o respectivo número de algarismos significativos". :(
Isso é apra o caso de teres posto algo como "o0caganamata1eu20mgr3anderabao*", neste caso o primeiro zer não conta, visto que não é um algarismo significativo.
Ou seja, quando tivessemos que dizer o número de algarismos significativos, diriamos que era o 1, o 2, o 0 e o 3 (4 no total).

Zeppel
09-11-2004, 17:33
A minha contribuição, já que o Swimmerboy foi o tipo q me vendeu a anterior palca grafica (lembras-te da MX440? - ainda funciona lol) e deu-me a ideia que ja q sabes a linguagem é pq tb tas a fazer esse trabalho :) :

O que é um algarismo significativo:
é o número de digitos de um número MEDIDO EXPERIMENTALMENTE sobre os quais temos a certeza... por exemplo: tipo temos uma balança digital, pesamo-nos e temos 76,0 kilos, no mostrador... temos 3 algarismos significativos.. ok...MAS pode ser 76,045657 e não sabemos pq a balança não tem divisões no mostrador q nos indiquem isso... ok continuando:


mas um número não medido experimentalmente é.. infinitamente preciso: 3 É 3 aqui ou na china, não é 3,00000000000000011

Um numero por si só é o número... algarismos significativos INFINITOS!! Logo, o teu professor não percebe grande coisa de algortitmos significativos e não tinha nada q fazer essa pergunta a menos que indicasse EXPLICITAMENTE que eram numeros assim ou assado medidos numa experiencia com esta ou aquela precisão...

peço desculpa ao senhor se estiver a ler isto, mas é a verdade...

PS: Lol editei e pus mais suave :P

Baía
09-11-2004, 18:15
eu faria da seguinte maneira.

num ciclo
1 - avaliava o primeir caracter da string.
2- metia na string dos numeros caso fosse algarismo.
3 - saia caso fosse o simbolo escolhido.

depois ordenava os caracteres da string algarismos, dos dois modos necessarios para obter o maior numero e menor numero.

nota: para ordenar... usem o valor ASCII
é isto...



0123456789

AwakE
09-11-2004, 20:09
peço desculpa ao senhor se estiver a ler isto, mas é a verdade...


Realmente o prof foi um bocado bronco....quis se armar em esperto e saiu-se mal....de resto já foi tudo dito. Boa sorte a bater codigo que isso em pascal tem de se fazer tudo à lá pata né?

Há libraries em pascal? Ja nem me lembro...

SwimmerBoy
09-11-2004, 22:06
O problema é k o programa não foi pedido por um professor mas por um conjunto de professores!!!

hmf
09-11-2004, 22:52
eu faria da seguinte maneira.

num ciclo
1 - avaliava o primeir caracter da string.
2- metia na string dos numeros caso fosse algarismo.
3 - saia caso fosse o simbolo escolhido.

depois ordenava os caracteres da string algarismos, dos dois modos necessarios para obter o maior numero e menor numero.

nota: para ordenar... usem o valor ASCII

Exactamente, apenas com a excepção que se pode evitar a ordenação no fim, caso a inserção seja ordenada ...

Andr0m3da
09-11-2004, 23:11
olha acertei ;)

depois mostra o codigo disso q ja n vejo pascal á "resmas" de tempo

SwimmerBoy
11-11-2004, 15:33
Ppl....mas como fazem para contar os numeros a subir (1234) e os numeros a descer (4321)?!

Alguem tem coragem para colocar uma parte do programa em vez de dar ideias de estrutura?! É k estrutura já tá mais k feita...o pior de tudo é mm o código!!!

[[]]

Andr0m3da
12-11-2004, 13:26
epa, primeiro eu pessoalmente n sou adepto dos outros fazerem as coisas por ti, uma coisa é ajudar outra é fazer pelos outros.

tens a estrutura, tens como fazer...

alem disso já te disse como ordenas os numeros... q queres mais?

Lancaster
12-11-2004, 13:52
Ppl....mas como fazem para contar os numeros a subir (1234) e os numeros a descer (4321)?!

Alguem tem coragem para colocar uma parte do programa em vez de dar ideias de estrutura?! É k estrutura já tá mais k feita...o pior de tudo é mm o código!!!

[[]]

Tu supostamente tens os números num vector(array) certo? O delphi não tem uma função para ver o tamanho do vector?? Se tem é fácil...

Outra maneira de o fazeres...é contares quando os lês...quando os estás a separar das letras...tb dá por aí...

Hasta all [[]]

PS: E como disse o Andr0m3da acho muito bem que não ponham o código porque se o puserem...tens o trabalho feito. Não aprendes nada...
PS2: Não deve ser a estrutura...deves querer dizer que é o algoritmo quejá está feito..

SwimmerBoy
12-11-2004, 14:09
epa, primeiro eu pessoalmente n sou adepto dos outros fazerem as coisas por ti, uma coisa é ajudar outra é fazer pelos outros.

tens a estrutura, tens como fazer...

alem disso já te disse como ordenas os numeros... q queres mais?

Há disseste?? Onde??

[[]]

PS-o programa tá +/- a avançar.... mas ainda falta umas coisitas!!!

Andr0m3da
12-11-2004, 17:09
eu num post anterior escrevi.

"nota: para ordenar... usem o valor ASCII"

n leste... azar...pa um gajo pedir ajuda, ter a ajuda...e nao a ler como deve de ser...

Baía
12-11-2004, 17:31
Hmmm... assim de repente:

tens um array de algarismos por exemplo:

[2 3 5 4 1 8 0 3 6]

Sacas a primeira posição do array -> 2
comparas com a segunda -> 3
3 > 2 ? (esta comparação deve ser feita com o código ASCII como o Andromeda disse)
Sim... então guardas o 3...
passas para a terceira posição do array -> 5
5 > 3?
Sim... então guardas o 5...
quarta posição do array -> 4
4 > 5?
Não... ficas com o 5
quinta posição-> 1
1 > 5?
Não... ficas com o 5
sexta posição -> 8
8 > 5?
Sim... ficas com o 8
sétima posição -> 0
...
bla bla bla

Chegas ao fim do array com o 8 guardado... uma vez que é o maior algarismo...

Então descartas o 8 do array e copias para a primeira posição de um novo array que declaras com o mesmo tamanho do array original

[8 ... ... ... ... ... ... ... ...]

Aplicas novamente o algoritmo mas desta vez ao 1º array sem o 8, uma vez que o descartaste... e irás deduzir que o maior número será o 6... descartas o 6 do array e copias para o novo array

[8 6 ... ... ... ... ... ... ...]

e por aí adiante... até preencheres o array final com os números todos os números do array original... neste caso eram 9...

Agora tens é que ter cuidado com os casos de igualdade... pq podes ter 2 ou mais algarismos idênticos num array...

Creio que este algoritmo já está definido... e é um algoritmo de sort já conhecido... Não sei se será o mais eficiente... mas é uma ideia

NOTA: eu acho que isto funciona... não tenho a certeza pq nunca implementei!

Andr0m3da
12-11-2004, 18:24
epa, desculpem la, mas para ordenar a porra de uma string... buble sort chega perfeitamente nem é preciso mais nada.

ordena de uma maneira, e de outra e tem os dois resultados...

claro que por exemplo em C, para ir buscar todos os algarismos de uma string...strpbrk( VariavelString, "0123456789" )
já só faltava ordenar... q era tanto ou mais simples ainda...

o que eu noto aqui é q n ha mta vontade em RTFM ;)

SwimmerBoy
12-11-2004, 19:57
O programa tá a ser feito com a ajuda de vectores! è mais ou menos como o baia disse mas não se faz caso a caso, senão isso era suicidio!!!

utiliza-se vector e conjuga-se com o comando to e downto de maneira a ordenar de forma crescente ou decescente o valor dos algarismos que aparecem!

[[]]

PS-baia, não era o maior algarismo, mas sim construir o maior algarismo com todos os numeros k se introduzissem no "texto"!

Baía
15-11-2004, 02:17
O programa tá a ser feito com a ajuda de vectores! è mais ou menos como o baia disse mas não se faz caso a caso, senão isso era suicidio!!!

utiliza-se vector e conjuga-se com o comando to e downto de maneira a ordenar de forma crescente ou decescente o valor dos algarismos que aparecem!
Nunca utilizei Pascal... mas pelos vistos essas funções já fazem grande parte do trabalho então... sorte a vossa!
Existem no entanto algoritmos de ordenamento como Quicksort ou o Bubblesort que vos orderam vectores de inteiros... e encontram-se pela Net facilmente! Aqui têm o Bubble... que me parece ser o mais simples de entender: http://www.comp.ufscar.br/~fmendes/metodos/bubble/bubble.html e aqui o Quick: http://www.inf.ufsc.br/~awangenh/Analise/Analise-Quick.html

No entanto eu admiti que não conhecessem tais algoritmos e como tal propus 1...

PS-baia, não era o maior algarismo, mas sim construir o maior algarismo com todos os numeros k se introduzissem no "texto"!
Não compreendi... :?

Andr0m3da
15-11-2004, 13:45
o que ele está a dizer é: construir o maior numero possivel, usando todos os algarismos introduzidos na string.

ele está a chamar algarismo a um numero. 0->9 algarismo 193487324<- numero constituido por X algarismos.