iCl4w 0 Denunciar post Postado Novembro 25, 2009 E, o problema citado no post #17 foi resolvido! Usei: atof(); //Tão Simples! Putz! Vlw! ok _Isis_, dei um de Sheldon Cooper; esperei você levantar a placa sarcasmo! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 25, 2009 http://man.cx/atof%283%29/pt Veja: O comportamento desta função é semelhante ao da strtod(nptr, (char **)NULL); exceto que nenhum erro é detectado. Em Python, se eu fizer int('abcd'), se eu não me engano, retorna '0'. Na UFPR as matérias têm códigos como CI055, CM202...Então p/ esse caso, atof não serve porque não detecta erros de digitação caso o usuário cate milho no teclado. Você tem algumas opções: 1- percorrer a string inteira até o primeiro char e parar. 2- usar strtod (http://www.manpagez.com/man/3/strtod/) 3- usar expressões regulares (Se eu não me engano, um dos desafios do fórum era ler um arquivo de nomes e eu enviei um código que usava expressões regulares) Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 25, 2009 Olha não cheguei a ler todos os posts, + sua duvida foi resolvido, ow você ainda n consegui?? caso n pq n faz algo assim: int registros=0; int verifica(int codigo){ int i, retorno; i = retorno = 0; for(;i<registros;i++) if (!strcmp( 'as strings aki' )) retorno = 1; return retorno; } void cad_disciplina(){ int i; char codigodisc[50]; system("cls"); for(i=0; i<6; i++){ do { printf("Digite o Codigo: "); scanf("%s%*c",codigodisc); }while(!verifica(codigodis)==0); registros++; } scanf("%*c"); } Compartilhar este post Link para o post Compartilhar em outros sites
iCl4w 0 Denunciar post Postado Novembro 25, 2009 Great! Estava a pensar em uma maneira de usar uma função pra isso! Obrigado... Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 26, 2009 bom é q você está usando C, se fosse C++ a gente podia fazer algo + sofisticado. []s Compartilhar este post Link para o post Compartilhar em outros sites
iCl4w 0 Denunciar post Postado Novembro 26, 2009 KRA você é DEMAIS quitZAUMMM! Tava muito precisando disso!.... Fiquei muito feliz em não ter usado ponteiros http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif !!!!!! Muito obrigado mesmo! Enfim consegui! void cad_disciplina() { int i; char coddisc[50]; for(i=0;i<6;i++) { do { printf("Digite o Codigo da Disciplina: "); scanf("%s%*c",&coddisc); } while(!verificadisc(coddisc)==0); registros++; strcpy(tot_d[i].coddi,coddisc); } } int verificadisc(int coddisciplina) { int i, retorno; i = retorno = 0; for(; i<registros; i++) if (!strcmp(coddisciplina,tot_d[i].coddi)) retorno=1; return retorno; } No código que você postou, só faltou o strcpy(); Obrigado, valeu, thanks.... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 26, 2009 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
iCl4w 0 Denunciar post Postado Novembro 26, 2009 Kra! Na comparação das séries! do { printf("Digite a Serie: "); scanf("%s%*c",&serie); } while(!verifica_serie(serie)==0); registros_serie++; strcpy(tot_al[i].serie,serie); ------------ int verifica_serie(int al_serie) { int i, retorno; i = retorno = 0; for(; i<registros_serie; i++) if (al_serie>=5 && al_serie<=8) retorno=1; return retorno; } Por que isso não funciona? Como você compararia? Sabendo que a serie tem de estar entre 5 e 8? Por favor... Aguardo ajuda... Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 26, 2009 int main(){ char serie[50]; printf("Digite a Serie: "); scanf("%s%*c",&serie); if (atoi(serie)>=5 && atoi(serie)<=8) puts("1"); else puts("2"); return 0; } isso? Compartilhar este post Link para o post Compartilhar em outros sites
iCl4w 0 Denunciar post Postado Novembro 27, 2009 Ok, valeu de novo! O código tem só uma falhazinha! Eu corrigi: do { printf("Digite a Serie: "); scanf("%s%*c",serie); } while(atoi(serie)<5 || atoi(serie)>8); if (atoi(serie)<5 || atoi(serie)>8) strcpy(tot_al[i].serie,serie); ObrigadaÇO! Abçs... Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 27, 2009 + pra q esse if?? ele soh vai sair do laço se a condição do loop for respeitada, td bem o laço n esta errado, + ta fazendo coisa desnecessaria! []s Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 27, 2009 do { printf("Digite a Serie: "); scanf("%s%*c",serie); } while(atoi(serie)<5 || atoi(serie)>8); if (atoi(serie)<5 || atoi(serie)>8) strcpy(tot_al.serie,serie); O if nunca vai ser executado. Compartilhar este post Link para o post Compartilhar em outros sites
iCl4w 0 Denunciar post Postado Novembro 28, 2009 ok é só tirá-lo e deixar o strcpy();! Compartilhar este post Link para o post Compartilhar em outros sites