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?
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).
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
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
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!!!
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...
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"!
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.
|
|