ajuda à resoluçao de exercicio em C

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

ajuda à resoluçao de exercicio em C

Mensagempor stiba » Domingo Mar 21, 2010 20:36

boas, tou com muita dificuldade para resolver este execicio, seguindo as dicas de um forista elaborei o seguinte codigo, que diga-se ainda nem funciona. no entanto gostaria que alguem me pudesse esclarecer se estou no caminho certo ou longe disso..
obrigdo pela ajuda
abraços

execicio


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).

#include <stdio.h>
#include <string.h>
main(){

char string[13] = "0-000-00000-0";
int opcao,i;

printf("introduzir ISBN\n");
printf("exemplo: 0-987-18765-9\n");
scanf("%s",&i);


do{

printf("|__________________________Menu principal________________________|\n");
printf("| |\n");
printf("| 1-obter referencia da editora |\n");
printf("| 2-obter referencia do codigo |\n");
printf("| 0-sair |\n");
printf("|________________________________________________________________|\n");
scanf("%d",&opcao);

}

if(opcao==1){

for(i=2;i<5;i++){
printf("a referencia da editora e:%s",string[i]);
}

}else{

if (i<=9999 && i>19999){
printrf("ISBN esta errado");
}
}
}

if(opcao==2){

for(i=5;i<13;i++){
}
printf("a referencia de codigo e:%s\n",string[i];

}
while(opcao!=0);

getch("PAUSE");
stiba
Novato
Novato
 
Mensagens: 4
Registado: Domingo Mar 21, 2010 20:31

Mensagempor Bad_Cop » Domingo Mar 21, 2010 22:00

O código que mostras tem muita coisa que não faz sentido. Por exemplo:

Código: Seleccionar todos
if(opcao==1){

for(i=2;i<5;i++){
printf("a referencia da editora e:%s",string[i]);
}

}


Supondo que introduziste o ISBN 1-234-56789-0..
O código que apresentas (for) imprime isto:
Código: Seleccionar todos
a referencia da editora e:2a referencia da editora e:3a referencia da editora e:4

Não é isso que pretendes.. Tens de imprimir a referencia primeiro e depois então imprimir os dígitos um a um como estás a tentar fazer.

Código: Seleccionar todos
if(opcao==1){
...
}else{

if (i<=9999 && i>19999){
printrf("ISBN esta errado");
}
}
}

if(opcao==2){
...
}


Se a opção for diferente de 1 vais verificar se o numero do livro está errado porquê? Não tem nada a ver com isso. Tens de dar uma revisão aos ifs encadeados ou então usar um switch, provavelmente a melhor opção.
Não percebo também porque estás a comparar o i com 9999.. Não faz sentido nenhum, o i é a variável para os iteradores.
Depois, as verificações normalmente fazem-se ao introduzir os dados, não é depois ao consulta-los.

Código: Seleccionar todos
if(opcao==2){

for(i=5;i<13;i++){
}
printf("a referencia de codigo e:%s\n",string[i];

}


O for está a imprimir absolutamente nada, não tem nenhuma instrução no seu scope. Tens de fazer como de disse acima para a referência da editora.
Bad_Cop
Membro Vitalício
Membro Vitalício
 
Mensagens: 4042
Registado: Quinta Jul 28, 2005 11:19
Localização: Aveiro/Tondela

OBRIGADÃO

Mensagempor stiba » Segunda Mar 22, 2010 0:18

obrigado pela ajuda, isto ja me tava a confundir todo, é o reservo de recolher muita informaçao pouco fidedigna.

vou rectificar esses erros todos, como referi sou demasiado novo nisto, e para quem tem um mes de programaçao é um exercicio um pouco confuso.

mais uma vez obrigado, qlogo k acabe vou postar isso pa me dares o teu parecer, se poderes claro;)

abraço
stiba
Novato
Novato
 
Mensagens: 4
Registado: Domingo Mar 21, 2010 20:31

Mensagempor Bad_Cop » Terça Mar 23, 2010 0:52

Podes colocar.. Tenta é meter isso entre as tags "code" para ser apresentado como eu meti no meu tópico. Fica mais legível.

A única maneira de aprender a programar é praticar e compreender. Por isso tentei explicar os teus erros sem apresentar uma solução concreta, pois isso até podia resolver-te o problema, mas pouco conhecimento adquirias.

Qualquer dúvida coloca aqui.
Bad_Cop
Membro Vitalício
Membro Vitalício
 
Mensagens: 4042
Registado: Quinta Jul 28, 2005 11:19
Localização: Aveiro/Tondela

Mensagempor stiba » Quarta Mar 24, 2010 1:28

desclp so responder agora.
se se me poderes arranjar um link com informaçao sobre switch agradecia imenso, ainda nao sei como funciona pk o meu prof, ao que sei erradamente, nem nos ensinou o "caso":(.

quanto ao exercicio, eu resolvi de uma maneira mais facil, contudo, nao é akilo que eu kero, fikei "colado neste" e vou ter de o resolver direitinho :D

surgeres k eu guarde a o resultado do ciclo "i" numa variavel "int" ex:codigo, e depois é k imprimo para o ecrã? ou guardar uma a uma para depois verificar k o ISBN e valido?
stiba
Novato
Novato
 
Mensagens: 4
Registado: Domingo Mar 21, 2010 20:31

Mensagempor Bad_Cop » Quarta Mar 31, 2010 14:03

Desculpa, a demora..

Não percebi a questão, podes ser mais explícito?
Bad_Cop
Membro Vitalício
Membro Vitalício
 
Mensagens: 4042
Registado: Quinta Jul 28, 2005 11:19
Localização: Aveiro/Tondela


Voltar para Programação

Quem está ligado:

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

cron