programa em C,alguem tem umas dicas?

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

programa em C,alguem tem umas dicas?

Mensagempor Sousa » Terça Nov 16, 2004 15:12

Boas,keria fazer um programa em C que consistia no seguinte,ao se introduzir um numero na prompt,o resultado impresso seria o numero por extenso,por exemplo:


o utilizador inseria 423,50 e o resultado seria quatrocentos e vinte e tres euros e cinquenta centimos.
Alguem tem algumas dicas para fazer isto?
:?:
Sousa
Novato
Novato
 
Mensagens: 18
Registado: Quarta Out 06, 2004 16:03

Mensagempor ig37055 » Terça Nov 16, 2004 15:17

isso tem haver com a posição de cada numero. metes cada algarismo num array depois associas a cada posição do array a uma string. por exemplo à posição 3 associas o quatrocentos s o conteudo for um 4 ou quinhentos s o conteudo for 5. era assim k eu faria... percebeste?

saudações
LG LW65 Express with Ubuntu 7.10

http://desciclo.pedia.ws/wiki/Chuck_norris
ig37055
Membro de Ouro
Membro de Ouro
 
Mensagens: 738
Registado: Terça Mar 02, 2004 21:44
Localização: Porto

Mensagempor Taxus » Terça Nov 16, 2004 17:03

Esse programa é mais complicado de fazer do que parece à primeira vista pois "a lingua portuguesa é muito traiçoeira".
Se o quiseres fazer em Inglês é extremamente simples

De qq maneira faz como o ig37055 disse.
Lês o numero para um array de ints.
Depois varres o array da esquerda para a direita e para cada posicao/numero associas uma string.
Qq coisa do genero

Para numeros de 4 algarismos
switch int[3]
case '1', printf("Mil");
case '2', printf("Dois Mil");
....
case '9', printf("Nove Mil")
switch int[2]
case '1', printf("Cento");
case '2', printf("Duzentos");
....
case '9', printf("Novecentos")
swith int[1]
case '2', printf("Vinte");
....
case '9', printf("Noventa")
switch int[0]
case '1', printf("Um")
case '9', printf("Nove")

Para as dezenas tens que fazer à parte uma funçaõ qualquer pois tens o Onze, Doze, Treze, Catorze, q nao se inserem em nenhum caso geral.

Se precisares de mais dicas avisa (nao sei ao certo o q sabes de C)
KaoS Contingency UT2k4 clan
http://www.kaos-eu.com/
Msn Taxus@netvisao.pt
Taxus
Membro de Ouro
Membro de Ouro
 
Mensagens: 946
Registado: Quarta Set 11, 2002 3:33

Mensagempor Taxus » Terça Nov 16, 2004 18:18

Código: Seleccionar todos
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char numero[50];
int i,n;

int main (void)
{

printf("Insira o numero\n");
scanf("%s",numero);

n = strlen(numero);
n--;

switch (numero[n-3]) {
   case '1':
      printf("Mil ");
      break;
   case '2':
      printf("Dois mil ");
      break;
   case '3':
      printf("Tres Mil ");
      break;
   case '4':
      printf("Quatro mil ");
      break;
   case '5':
      printf("Cinco Mil ");
      break;
   case '6':
      printf("Seis mil ");
      break;
   case '7':
      printf("Sete Mil ");
      break;
   case '8':
      printf("Oito mil ");
      break;
   case '9':
      printf("Nove mil ");
      break;
   case '0':
      break;
}

switch (numero[n-2]) {
   case '1':
      printf("Cento ");
      break;
   case '2':
      printf("Duzentos ");
      break;
   case '3':
      printf("Trezentos ");
      break;
   case '4':
      printf("Quatrocentos ");
      break;
   case '5':
      printf("Quinhentos ");
      break;
   case '6':
      printf("Seiscentos ");
      break;
   case '7':
      printf("Setecentos ");
      break;
   case '8':
      printf("Oitocentos ");
      break;
   case '9':
      printf("Novecentos ");
      break;
   case '0':
      break;
}

switch (numero[n-1]) {
   case '1':
      printf("dez... ");
      break;
   case '2':
      printf("Vinte ");
      break;
   case '3':
      printf("Trinta ");
      break;
   case '4':
      printf("Quarenta ");
      break;
   case '5':
      printf("Cinquenta ");
      break;
   case '6':
      printf("Sessenta ");
      break;
   case '7':
      printf("Setenta ");
      break;
   case '8':
      printf("Oitenta ");
      break;
   case '9':
      printf("Noventa ");
      break;
   case '0':
      break;
}

switch (numero[n]) {
   case '1':
      printf("Um ");
      break;
   case '2':
      printf("Dois ");
      break;
   case '3':
      printf("Tres ");
      break;
   case '4':
      printf("Quatro ");
      break;
   case '5':
      printf("Cinco ");
      break;
   case '6':
      printf("Seis ");
      break;
   case '7':
      printf("Sete ");
      break;
   case '8':
      printf("Oito ");
      break;
   case '9':
      printf("Nove ");
      break;
   case '0':
      break;
}

//for(n;n>=0;n--)
//printf("\nnumero[%d] - %c",n,numero[n]);

getchar(); // Por causa do enter
getchar(); // Para o programa nao sair

}


É mais ou menos isto que queres...
Ta com as dezenas, centenas e milhares...
Agora adiciona milhoes, bilioes, trilioes..... é sempre a mesma coisa
Nao tive paciencia para fazer o 11, 12, ..., 19. Mas é simples.
Finalmente, é so adicionares o caso de existir virgula
case','
printf(",");
E repetires o processo para os numeros à direita da virgula.

Se tiveres duvidas diz qq coisa.
KaoS Contingency UT2k4 clan
http://www.kaos-eu.com/
Msn Taxus@netvisao.pt
Taxus
Membro de Ouro
Membro de Ouro
 
Mensagens: 946
Registado: Quarta Set 11, 2002 3:33

Mensagempor ig37055 » Terça Nov 16, 2004 18:32

tu tas lá taxus!!! :D qdo precisar d pedaços d código já sei a kem pedir :P
LG LW65 Express with Ubuntu 7.10

http://desciclo.pedia.ws/wiki/Chuck_norris
ig37055
Membro de Ouro
Membro de Ouro
 
Mensagens: 738
Registado: Terça Mar 02, 2004 21:44
Localização: Porto

Mensagempor metralha761 » Terça Nov 16, 2004 21:19

Taxus por acaso nao tens ai nada tipo inteligencia artificial de path finder (encontrar o melhor caminho) :D
Passei por uma loja (Worten) vi la um samsung 171s tao lindinho e bonitinho :) a sorrir pa mim :D e não resisti .....

www.metralha761.net

Malta toca a ir po irc.ptnet.org po canal #HCP
Avatar do Utilizador
metralha761
Membro Vitalício
Membro Vitalício
 
Mensagens: 2155
Registado: Sábado Jul 12, 2003 17:18
Localização: Patopolis

Mensagempor Taxus » Terça Nov 16, 2004 22:18

Hmmm
Nem sei o q é isso
:p
KaoS Contingency UT2k4 clan
http://www.kaos-eu.com/
Msn Taxus@netvisao.pt
Taxus
Membro de Ouro
Membro de Ouro
 
Mensagens: 946
Registado: Quarta Set 11, 2002 3:33

Mensagempor Sniper PT » Terça Nov 16, 2004 22:45

Isso do path finder, a melhor forma é através de árvores e grafos....
Sniper PT
Membro de Prata
Membro de Prata
 
Mensagens: 414
Registado: Terça Jul 08, 2003 12:07

Mensagempor metralha761 » Quarta Nov 17, 2004 5:26

taxus imagina k crias um mapa de uma cidade, agora pedes ao computador pa te seleccionar o melhor caminho.

é isto k kero :D
Passei por uma loja (Worten) vi la um samsung 171s tao lindinho e bonitinho :) a sorrir pa mim :D e não resisti .....

www.metralha761.net

Malta toca a ir po irc.ptnet.org po canal #HCP
Avatar do Utilizador
metralha761
Membro Vitalício
Membro Vitalício
 
Mensagens: 2155
Registado: Sábado Jul 12, 2003 17:18
Localização: Patopolis

Mensagempor Taxus » Quarta Nov 17, 2004 12:21

metralha761 Escreveu:taxus imagina k crias um mapa de uma cidade, agora pedes ao computador pa te seleccionar o melhor caminho.

é isto k kero :D


Areia demais para a minha camioneta! 8O
Talvez daqui a uns (muitos) anos
KaoS Contingency UT2k4 clan
http://www.kaos-eu.com/
Msn Taxus@netvisao.pt
Taxus
Membro de Ouro
Membro de Ouro
 
Mensagens: 946
Registado: Quarta Set 11, 2002 3:33

Obrigadão a todos

Mensagempor Sousa » Quarta Nov 17, 2004 15:15

Obrigado a todos,já fikei com umas dicas bacanas de como fazer,tinha ideia dos cases,agora é fazer uma função para as dezenas.


PS: Para quem quer um programa de itenários experimente o Route66 tem para toda a Europa.

:lol:
Sousa
Novato
Novato
 
Mensagens: 18
Registado: Quarta Out 06, 2004 16:03

Mensagempor biscoita » Quarta Nov 17, 2004 17:22

metralha761 Escreveu:imagina k crias um mapa de uma cidade, agora pedes ao computador pa te seleccionar o melhor caminho.

é isto k kero :D


Já deste uma olhada nos algoritmos dos grafos? Há vários para o melhor caminho...
Acer TravelMate 4001 WLMi
biscoita
Membro de Prata
Membro de Prata
 
Mensagens: 111
Registado: Terça Set 30, 2003 22:40
Localização: Almada, FCT-UNL

Mensagempor Andre_Oliveira » Quarta Nov 17, 2004 17:38

Este post faz me lembrar as noitadas que passei a fazer um trabalho para a cadeira de programação em C... ainda bem que já tá feita!


Cumprimentos.
Imagem
Andre_Oliveira
Membro de Ouro
Membro de Ouro
 
Mensagens: 638
Registado: Terça Abr 20, 2004 4:09
Localização: Açores/LX

preciso de uma oequena ajuda

Mensagempor Lígia pINTO » Sábado Nov 20, 2004 23:41

:D Oi como vai? Acabei de me associar, estava fazendo uma pesquisa sobre grafos, estou precisando urgentemente de umas funções em C para manipular caminho em grafo, por exemplo, menor e maior caminho ente 2 vertíces. Será q alguém tem algo p mandar? :wink:
[/b]

Taxus Escreveu:
Código: Seleccionar todos
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char numero[50];
int i,n;

int main (void)
{

printf("Insira o numero\n");
scanf("%s",numero);

n = strlen(numero);
n--;

switch (numero[n-3]) {
   case '1':
      printf("Mil ");
      break;
   case '2':
      printf("Dois mil ");
      break;
   case '3':
      printf("Tres Mil ");
      break;
   case '4':
      printf("Quatro mil ");
      break;
   case '5':
      printf("Cinco Mil ");
      break;
   case '6':
      printf("Seis mil ");
      break;
   case '7':
      printf("Sete Mil ");
      break;
   case '8':
      printf("Oito mil ");
      break;
   case '9':
      printf("Nove mil ");
      break;
   case '0':
      break;
}

switch (numero[n-2]) {
   case '1':
      printf("Cento ");
      break;
   case '2':
      printf("Duzentos ");
      break;
   case '3':
      printf("Trezentos ");
      break;
   case '4':
      printf("Quatrocentos ");
      break;
   case '5':
      printf("Quinhentos ");
      break;
   case '6':
      printf("Seiscentos ");
      break;
   case '7':
      printf("Setecentos ");
      break;
   case '8':
      printf("Oitocentos ");
      break;
   case '9':
      printf("Novecentos ");
      break;
   case '0':
      break;
}

switch (numero[n-1]) {
   case '1':
      printf("dez... ");
      break;
   case '2':
      printf("Vinte ");
      break;
   case '3':
      printf("Trinta ");
      break;
   case '4':
      printf("Quarenta ");
      break;
   case '5':
      printf("Cinquenta ");
      break;
   case '6':
      printf("Sessenta ");
      break;
   case '7':
      printf("Setenta ");
      break;
   case '8':
      printf("Oitenta ");
      break;
   case '9':
      printf("Noventa ");
      break;
   case '0':
      break;
}

switch (numero[n]) {
   case '1':
      printf("Um ");
      break;
   case '2':
      printf("Dois ");
      break;
   case '3':
      printf("Tres ");
      break;
   case '4':
      printf("Quatro ");
      break;
   case '5':
      printf("Cinco ");
      break;
   case '6':
      printf("Seis ");
      break;
   case '7':
      printf("Sete ");
      break;
   case '8':
      printf("Oito ");
      break;
   case '9':
      printf("Nove ");
      break;
   case '0':
      break;
}

//for(n;n>=0;n--)
//printf("\nnumero[%d] - %c",n,numero[n]);

getchar(); // Por causa do enter
getchar(); // Para o programa nao sair

}


É mais ou menos isto que queres...
Ta com as dezenas, centenas e milhares...
Agora adiciona milhoes, bilioes, trilioes..... é sempre a mesma coisa
Nao tive paciencia para fazer o 11, 12, ..., 19. Mas é simples.
Finalmente, é so adicionares o caso de existir virgula
case','
printf(",");
E repetires o processo para os numeros à direita da virgula.

Se tiveres duvidas diz qq coisa.
:D :D :D :) :)
Ame como se não houvesse amanhã
Lígia pINTO
Novato
Novato
 
Mensagens: 2
Registado: Sábado Nov 20, 2004 23:12
Localização: Salvador

preciso de uma pequena ajuda

Mensagempor Lígia pINTO » Sábado Nov 20, 2004 23:41

:D Oi como vai? Acabei de me associar, estava fazendo uma pesquisa sobre grafos, estou precisando urgentemente de umas funções em C para manipular caminho em grafo, por exemplo, menor e maior caminho ente 2 vertíces. Será q alguém tem algo p mandar? :wink:
[/b]
Ame como se não houvesse amanhã
Lígia pINTO
Novato
Novato
 
Mensagens: 2
Registado: Sábado Nov 20, 2004 23:12
Localização: Salvador

Próximo

Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 0 visitantes

cron