Forum Pplware

Versão Completa: ajuda à resoluçao de exercicio em C
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
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
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 ..
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
mt obrigado, vou tentar isso, em breve publico se funcionou.
abraço
logo que possa posto um pequeno exercício para veres melhor como funciona.

Cumprimentos
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
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?
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...
Já tá resolvido isto?
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,
URL's de Referência