Forum Pplware
ajuda à resoluçao de exercicio em C - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: ajuda à resoluçao de exercicio em C (/showthread.php?tid=5360)



ajuda à resoluçao de exercicio em C - stb_airlines - 17-03-2010 21:06

Sou ainda muitissimo "verde" no universo da programação, nesse sentido precisava da vossa ajuda para tentar resolver um exercício em C no qual estou a ter bastantes dificuldades, apesar de estudar bastante.

foi-me dado o seguinte exercicio:

Os livros são identificados pelo número ISBN (International Standard Book Number), por exemplo: 0-393-16945-2. O primeiro número designa a língua em que o livro foi escrito (por exemplo, 0 – inglês, 2 – português, …). O segundo número designa a editora (393 refere-se à W. W. Norton), o terceiro é um número dado pela editora que identifica o livro (sempre 5 números e começa sempre por 1) e o quarto é um “check digit” destinado a comprovar a validade do número. Construa um programa em C que dado um ISBN separe os seus diferentes números, por exemplo:

Insira o ISBN: 0-393-16945-2
Editora: 393
Código: 16945

É necessário implementar o seguinte menu com as seguintes opções:
1 – Obter Referencia da Editora
2 – Obter Referencia do Código
0 – Sair
O menu deverá aparecer enquanto o utilizador não inserir a opção 0 (Sair).


a minha dificuldade está principalmente em conseguir separar o numero e atribuir o mesmo às referentes opções, contudo, e não querendo abusar da vossa ajuda, se tiverem alguma dica para ajudar a resolver o exercicio, agradecia imenso.

grande abraço


RE: ajuda à resoluçao de exercicio em C - aucrun - 18-03-2010 02:43

Epá, se fosse em C# terias o Método Split, que te permite dividir uma String por caracteres, ou seja, farias o Split pelo símbolo "-".
Se ISBN for uma constante melhor ainda ...
Se as línguas fossem constante e não pudessem ser alteradas podias criar um enumerador, senão podes ter num ficheiro editável, bem como as editoras.

Por exemplo:
Tendo em consideração que ISBN é uma constante, tens de apanhar o valor "0-393-16945-2" numa variável (string) e depois fazes o Split por "-", que te devolve uma Array de strings de 4 dimensões:
String 1 = "0"
String 2 = "393
String 3= "16945"
String 4 = "2"

A partir daí tens a informação toda ... para trabalhar com as Línguas e editoras (estejam elas em Enumerador, Ficheiro, Base de Dados, whatever)

Mas isto seria em C# ... em C nem sei se existem estes comandos sequer ..


RE: ajuda à resoluçao de exercicio em C - zee - 18-03-2010 12:50

boas.
tens de trabalhar com índices.
tens o isbn guardado num char string[13] (exemplo). declaras uma variável do tipo int (int i, por ex). se quiseres escrever para o ecra o numero do isbn "393" fazes:
for(i=2;i<5;i++)
{
printf("%s",string[i]);
}

espero ter ajudado.
qualquer erro avisa Wink


RE: ajuda à resoluçao de exercicio em C - stb_airlines - 18-03-2010 21:04

mt obrigado, vou tentar isso, em breve publico se funcionou.
abraço


RE: ajuda à resoluçao de exercicio em C - zee - 19-03-2010 13:11

logo que possa posto um pequeno exercício para veres melhor como funciona.

Cumprimentos


RE: ajuda à resoluçao de exercicio em C - stb_airlines - 19-03-2010 16:08

tou comm alguma duvidas, mandei te uma PM para me esclareceres uma parte.
espero k nao te importesTongue
mt obrigado, fico a aguardarWink
abraço


RE: ajuda à resoluçao de exercicio em C - stb_airlines - 21-03-2010 18:37

mesmo com a dica que o zee me deu, ainda nao consegui resolver isso. de tanto pesquisar e tentar, axo k me estou a confundir ainda mais.
será que alguem me pode ajudar com algum exemplo, ou algo assim?


RE: ajuda à resoluçao de exercicio em C - crazyman - 22-03-2010 14:12

calma moço...

Posta o que já tens feito para ver onde esta o erro...

Este exercicio é simples...

Fazes o menu e duas funções uma void editora e outra void codigo.

Dentro do menu, na opção 1 fazes a chamada da editora e na opção 2 fazes a chamada da funçao codigo.

Depois basta fazeres a validação do menu para q apresente sempre o mesmo menu quando for digitado um numero diferente de 1 ou 2.

as funções sao praticamente iguais:

void editora (int string [])
{
int i;
for(i=2;i<5;i++)
{
printf("%s",string[i]);
}
}


Isto é sem testar, é provavel que de erro...

publica o teu codigo que logo a noite ja te coloco ai mais alguma ajuda...


RE: ajuda à resoluçao de exercicio em C - sLUGo - 15-04-2010 10:39

Já tá resolvido isto?


RE: ajuda à resoluçao de exercicio em C - WebDevXtream - 15-04-2010 11:45

Olá,

Experimenta qualquer coisa deste género:

Código:
int main(){

   int valores[4];  
   char *token = NULL;

   printf("Escreva o ISBN\n");
   gets(isbn);

   token= strtok( isbn, "-" );
   int i = 0;
    while( token )
    {
        valores[i] = token;
        token = strtok( NULL, "-" );  
        i++;                        
    }
}

Pesquisei na net várias opções e ajustei as mesmas a uma possível solução.

Se estiver tudo correcto e sem erros no fim ficas com um array de inteiros (valores) com os valores indexados, desta forma (usando o teu exemplo):

valores[0] = 0
valores[1] = 393
valores[2] = 16945
valores[3] = 2

Espero ter-te ajudado.

Um abraço,