Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

iCl4w

[Resolvido] Ver Se a Mesma Variável já foi digitada

Recommended Posts

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

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

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

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

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

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

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

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

+ 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

 

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.