Ir ao conteúdo
  • Cadastre-se

NomeUnderground

Membro Júnior
  • Posts

    12
  • Cadastrado em

  • Última visita

posts postados por NomeUnderground

  1. Use aspas dentro dos printf(), use aspas nos scanf(), exemplo: 

    // Não use:
    scanf(%s, variavel);
    // Use: 
    scanf("%s", variavel);

    Outro erro que notei, se quiser receber mais de uma palavra numa entrada, não use scanf, nem gets( Não é recomendado usar gets), use fgets, no seu caso fica da seguinte maneira: 

    fgets(nome[i], 100, stdin);

    No final, não use 

    // No seu caso, não use:
    printf("%c", nome[i]);
    // Tem dois erros, o certo era sair como %s, e coloque uma saída formatada, com o & antes da variável, assim:
    printf("%s", &nome[i]);

    Fora outros errinhos que não me lembro se teve, só sei que corrigi:

    
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main(void)
    {
            char nome[3][100];
            int tam[3], i,j;
            for(i=0;i<3;i++)
            {
                    printf("Informe os nome :\n");
                    fgets(nome[i], 100, stdin);
                    tam[i] = strlen(nome[i]);
            }
            for(i = 0; i < tam[i]; i++)
            {
                    printf("%s", &nome[i]);
            }
    }

     

  2. Consertei os erros, na verdade você esqueceu de colocar as aspas, para os meses e dias da semana. Também colocou vários printf sem colocar as aspas entre %s.

    Não use

    printf(%s, ....)

    Use:

    printf("s%", ....);

    E você estava declarando strings sem colocar as aspas nela, aí quando isso acontece, ele vai buscar uma variável com o nome da string, ao invés de declarar a string com o nome colocado.

    Agora só falta colocar o main()

    #include<time.h>
    
    struct data
    {
        char dia;
        char mes;
        short ano;
    };
    typedef struct data TData;
    
    int e_bissexto(int ano)
    {
        return (ano%4==0 && ano%100 != 0) || ano%400 == 0;
    }
    
    TData gere_data()
    {
        TData d;
        int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    //   d.ano = 2016+rand()%2;
        d.ano = 2017;
        if(e_bissexto(d.ano))
            ndm[2] = 29;
    //    if(d.ano == 2016)
    //        d.mes = 1+rand()%12;
    //    else
    //        d.mes = 1+rand()%10;
        d.mes = 11 + rand()%2;
        d.dia = 1 + rand()%ndm[(int) d.mes];
        return d;
    }
    
    void mostre_data(TData a)
    {
        printf("%02d/%02d/%d", a.dia, a.mes, a.ano);
    }
    
    void mostre_data_ext(TData d)
    {
        char nm[13][10] = {"janeiro","fevereiro","marx87o",
                     "abril","maio","junho","julho","agosto",
                     "setembro","outubro","novembro","dezembro"};
        printf("%02d de %s de %d", d.dia, nm[(int)d.mes], d.ano);
    }
    
    TData passa_um_dia(TData d)
    {
        int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
        if(e_bissexto(d.ano))
            ndm[2] = 29;
        d.dia++;
        if(d.dia > ndm[(int)d.mes])
        {
            d.dia = 1;
            d.mes++;
            if(d.mes > 12)
            {
                d.mes = 1;
                d.ano++;
            }
        }
        return d;
    }
    
    void passa_um_dia_ref(TData *d)
    {
        int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
        if(e_bissexto(d->ano))
            ndm[2] = 29;
        d->dia++;
        if(d->dia > ndm[(int)d->mes])
        {
            d->dia = 1;
            d->mes++;
            if(d->mes > 12)
            {
                d->mes = 1;
                d->ano++;
            }
        }
    }
    
    int cmp_data(const void *a, const void *b)
    {
        TData *da = (TData *) a;
        TData *db = (TData *) b;
    
        if(da->ano != db->ano)
            return da->ano - db->ano;
        else
            if(da->mes != db->mes)
                return da->mes - db->mes;
            else
                return da->dia - db->dia;
    }
    
    TData le_data()
    {
        TData res;
        int d, m , a;
        scanf("%d/%d/%d", &d, &m, &a);
        res.dia = d;
        res.mes = m;
        res.ano = a;
        return res;
    }
    
    TData dat_sis()
    {
        TData res;
        time_t tempo = time(NULL);
        struct tm data = *localtime(&tempo);
        res.dia = data.tm_mday;
        res.mes = data.tm_mon+1;
        res.ano = data.tm_year+1900;
        return res;
    }
    
    unsigned desde_1_1_1990(TData dat)
    {
        int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
        if(e_bissexto(dat.ano))
            ndm[2] = 29;
        unsigned res = 0;
        short ano = 1900;
        char mes = 1;
        while(ano < dat.ano)
        {
            if (e_bissexto(ano))
                res += 366;
            else
                res += 365;
            ano++;
        }
        while(mes < dat.mes)
        {
            res += ndm[(int) mes];
            mes++;
        }
        return res + dat.dia;
    }
    
    int dia_semana(TData dat)
    {
        return desde_1_1_1990(dat) % 7;
    }
    
    void dia_sem_ext(TData dat)
    {
        char dse[7][16] = {"domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"};
        printf("%s", dse[dia_semana(dat)]);
    }

    Na verdade está ok, só depois que vi, que quando copiei foi sem os parênteses, mas só falta o main.

  3. Sobre o B, eu sei que nem sempre vai ser negativo, pois se for negativo, quando fizer o cálculo vai ficar positivo, quanto aos comentários, alguns estão errados, pois fiz rapidamente, para dar o retorno o mais rápido possível.

    Muito obrigado, na verdade só usei o termo "letra", pois me pediram para explicar as variáveis. Quanto a que nem sempre o X vai ter um negativo e um positivo, também sei, só coloquei isso pois me veio na cabeça na hora. 

    Ok, vou recolocar o if para ver se a é 0.

    Obrigado por me avisar do erro do 2*a, nem me liguei nisso, afinal comecei no Pascal faz um pouco mais de um dia. Vou editar o código. Muito obrigado e funcionou com esta correção do 2*a para (2*a), nem me liguei que isso não faria o que eu queria.

    program bhaskara;
    
    var a {  constante "a" }, b{ a constante "b"}, c { a constante "c"}, delta{ o delta }, x { o valor de x }, bn{ usei para transformar o valor simétrico do b }, x1{ o primeiro x}, x2 { o segundo x} : real;
    
    begin
            write('Digite o valor de a: ');
            readln(a); { recebe o valor de a }
            if a = 0 then
            begin
                    writeln('A não pode ser 0');
                    exit;
            end;
            write('Digite o valor de b: ');
            readln(b); { recebe o valor de b }
            write('Digite o valor de c: ');
            readln(c); { recebe o valor de c }
            writeln('Indo calcular delta');
            delta := (b*b)-(4*a*c); { calcula o delta }
            writeln(delta:0:6); { mostrei o delta só por teste }
            writeln('Indo calcular b negativo');
            bn := (-1)*b; { aqui transforma o b em negativo para calcular o bhaskara }
            writeln('Indo calcular x negativo');
            x2 := (bn - sqrt(delta))/(2*a); { calcula um dos valores do x, no caso o negativo }
            writeln('Indo calcular x positivo');
            x1 := (bn + sqrt(delta))/(2*a); { calcula o valor positivo do x }
            writeln('Duas raízes foram achadas: ', x1:0:6, ' ', x2:0:6);
    end.
    

     

    • Curtir 1
  4. Ok, vou retirar esta parte, e explicar as variáveis em comentários: 

    program bhaskara;
    
    var a { a letra "a" }, b{ a letra "b"}, c { a letra "c"}, delta{ o delta }, x { o valor de x }, bn{ usei para transformar o b em um número negativo }, xp{ o x pode ter dois valores, este é do x positivo }, xn { x negativo} : real;
    
    begin
            write('Digite o valor de a: ');
            readln(a); { recebe o valor de a }
            write('Digite o valor de b: ');
            readln(b); { recebe o valor de b }
            write('Digite o valor de c: ');
            readln(c); { recebe o valor de c }
            writeln('Indo calcular delta');
            delta := (b*b)-(4*a*c); { calcula o delta }
            writeln(delta:0:6); { mostrei o delta só por teste }
            writeln('Indo calcular b negativo');
            bn := (-1)*b; { aqui transforma o b em negativo para calcular o bhaskara }
            writeln('Indo calcular x negativo');
            xn := (bn - sqrt(delta))/2*a; { calcula um dos valores do x, no caso o negativo }
            writeln('Indo calcular x positivo');
            xp := (bn + sqrt(delta))/2*a; { calcula o valor positivo do x }
            writeln('Duas raízes foram achadas: ', xp:0:6, ' ', xn:0:6);
    end.
    

     

    adicionado 1 minuto depois

    Só depois que percebi que nem usei a variável x, desculpe.

    adicionado 2 minutos depois

    O erro é este: sempre que tento, por exemplo o 2,3,-5 dá errado, diz que é 4,-10.

    Mas só funciona com 1,1,-1 e alguns outros.

  5. Ok, não tem problemas, todo mundo começa sem saber muita coisa. Eu não sou também um expert em C, na verdade eu não gosto de C, prefiro outras linguagens, mas nessa vida se quisermos futura na programação, tem que saber de tudo, não é toda linguagem que dá emprego!

     

    Saberia me dizer que erro é esse? Tente copiar o erro que aparece.

    Tente tirar os acentos. Não sei porque sempre que colo o código aqui está indo com acento. Tipo ao invés de usar "fácil", use "fácil"

    "fácil" sem acento. O fórum coloca acento em tudo!

    adicionado 5 minutos depois

    Vou botar o código no hastebin, copie de lá, pois no fórum está colocando acento: https://hastebin.com/eyikucidir.cpp

  6. Compilei no Linux com GCC e acusou alguns erros, entre eles na linha 10 está reclamando que as variáveis estão com acentos, evite usar acentos nas variáveis, isso não é uma boa prática. A função gets não é recomendada, prefira usar fgets(variavel, tamanhodavariavel, stdin);

    E talvez seja melhor usar 

    int main(void)

    Invés de main() sozinho.

    Vou ver se consigo resolver o outro erro.

    O código ficou: 

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void)
    {
        char resp,inicio;
        char cert='s';
        char nome[40];
        int medio=0,fácil=0,difícil=0,cont=0,nivel;
        int certo_1=0,errado_1=0,contp_1=1,totp_1=1;
        int certo_2=0,errado_2=0,contp_2=1,totp_2=1;
        int certo_3=0,errado_3=0,contp_3=1,totp_3=1;
    
        printf("\t\nOla Jogador Por favor informe seu nome e a seguir pressione \"Enter\".\n\n");
        printf("Nome do Participante: ");
        fgets(nome, 40, stdin);
        system("cls");
        dificuldade:
    
        printf("\t*==========================================================================================================*\n");
        printf("\t|                     Seja bem-vindo \%s\ ao meu primeiro jogo espero que goste!                         |\n",nome);
        printf("\t|  Este e um jogo divertido de perguntas e respostas.Em que o jogador poderá escolher o assunto desejado.  |\n");
        printf("\t*==========================================================================================================*\n");
        printf("\t|              Escolha o Assunto desejado e em seguida aperte enter.                                       |\n");
        printf("\t|  1: Anime: Tudo sobre o mundo dos animes.                                                                |\n");
        printf("\t|  2: Series: 3 series especificas The Walking Dead, Grey's Anatomy e Supernatural.                        |\n");
        printf("\t|  3: Games: Tudo sobre o universo Gamer.                                                                  |\n");
        printf("\t*==========================================================================================================*\n\n");
        printf("\t QUAL E O SEU ASSUNTO DESEJADO? \n");
        scanf("%d", &nivel);
        system("cls");
    
        switch (nivel)
        {
            case 1:
                {
                    system("cls");
                    time_t tempo; struct tm*data;time(&tempo);
                    data =localtime(&tempo);
                    printf("\t*===================================================================*\n");
                    printf("\t|       _________ ___   ___ ___ ____     ____ __________            |\n");
                    printf("\t|       XXXXXXXXX XXX_  XXX XXX XXXX_   _XXXX XXXXXXXXXX            |\n");
                    printf("\t|       XXXXXXXXX XXXX_ XXX XXX XXXXX_ _XXXXX XXXXXXXXXX            |\n");
                    printf("\t|       XXX___XXX XXXXX_XXX XXX XXXXXX_XXXXXX XXX_____              |\n");
                    printf("\t|       XXXXXXXXX XXXXXXXXX XXX XXXXXXXXXXXXX XXXXXXXX              |\n");
                    printf("\t|       XXXXXXXXX XXX XXXXX XXX XXXXX X XXXXX XXX_______            |\n");
                    printf("\t|       XXX   XXX XXX  XXXX XXX XXXXX   XXXXX XXXXXXXXXX            |\n");
                    printf("\t|       XXX   XXX XXX   XXX XXX XXXX    XXXXX XXXXXXXXXX            |\n");
                    printf("\t|                                                                   |\n");
                    printf("\t*===================================================================*\n\n");
                    printf("\t AS PERGUNTAS SOBRE \"ANIME\" VALEM 2 PONTOS CADA\n\n");
    
                    getchar();printf("Pecione \"Enter\" para continuar...");
                    getchar();system("cls");
    
                    printf("\t*================================*\n");
                    printf("\t| Pergunta de N. %.2d --- Anime    |\n", contp_1++);
                    printf("\t*================================*\n\n");
                    printf("\t Naruto e filho de qual dos Hokages?\n\n");
                    printf(" A) Sarutobi Hiruzen\n");
                    printf(" B) Namikaze Minato\n");
                    printf(" C) Senju Hashirama\n");
                    printf(" D) Senju Tobirama\n\n");
                    printf("\t QUAL E A ALTERNATIVA CORRETA: \n\n");
                    scanf (" %s " ,&resp);
                     if ((resp=='B')||(resp='b'))
                   {
                    printf ("Resposta correta\n");
                    certo_1++;
                   }
                    else
                   {
                    printf ("Resposta errada\n");
                    printf ("Resposta correta: Letra \"B\"\n");
                    errado_1++;
                   }
                   printf("*==================================================*");
                   getchar(); printf("Precione a telca Enter para continuar...");
                   getchar(); system("cls");
                   printf("\t*==================================================*\n");
                   printf("\t|            Pergunta de N. %.2d --- Anime          |\n", contp_1++);
                   printf("\t*==================================================*\n\n");
                   printf("\t Em Dragon Ball Z as esferas do dragao do planeta\n");
                   printf("\t namejuseikin consedem quantos desejos ?\n");
                   printf("A) 1 DESEJO\n");
                   printf("B) 4 DESEJO\n");
                   printf("C) 2 DESEJO\n");
                   printf("D) 3 DESEJO\n\n");
                   printf("\t QUAL E A ALTERNATIVA CORRETA?\n");
                   scanf(" %s " , &resp );
    
                   if ((resp=='D')||(resp=='d'))
                   {
                       printf("\tSUA RESPOSTA ESTA CORRETA...\n");
                       certo_1++;
                   }
                   else
                   {
                       printf("\tSUA RESPOSTA ESTA ERRADA\n...");
                       printf("\tA ALTERNATIVA CORRETA ERA A LETRA \"D\"\n");
                       errado_1++;
                   }
    
                }
    
    
    }
    }

     

    adicionado 1 minuto depois

    Eu não sei porque quando eu colei continuaram os acentos, mas retire-os.

    adicionado 6 minutos depois

    Pronto, achei o erro.

    Não use espaços no scanf, tipo:

    scanf(" %s ", &variavel);

    Use nenhum espaço no scanf.

    scanf("%s", &variavel);

    O código ficou assim: 

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void)
    {
        char resp,inicio;
        char cert='s';
        char nome[40];
        int medio=0,fácil=0,difícil=0,cont=0,nivel;
        int certo_1=0,errado_1=0,contp_1=1,totp_1=1;
        int certo_2=0,errado_2=0,contp_2=1,totp_2=1;
        int certo_3=0,errado_3=0,contp_3=1,totp_3=1;
    
        printf("\t\nOla Jogador Por favor informe seu nome e a seguir pressione \"Enter\".\n\n");
        printf("Nome do Participante: ");
        fgets(nome, 40, stdin);
        system("cls");
        dificuldade:
    
        printf("\t*==========================================================================================================*\n");
        printf("\t|                     Seja bem-vindo \%s\ ao meu primeiro jogo espero que goste!                         |\n",nome);
        printf("\t|  Este e um jogo divertido de perguntas e respostas.Em que o jogador poderá escolher o assunto desejado.  |\n");
        printf("\t*==========================================================================================================*\n");
        printf("\t|              Escolha o Assunto desejado e em seguida aperte enter.                                       |\n");
        printf("\t|  1: Anime: Tudo sobre o mundo dos animes.                                                                |\n");
        printf("\t|  2: Series: 3 series especificas The Walking Dead, Grey's Anatomy e Supernatural.                        |\n");
        printf("\t|  3: Games: Tudo sobre o universo Gamer.                                                                  |\n");
        printf("\t*==========================================================================================================*\n\n");
        printf("\t QUAL E O SEU ASSUNTO DESEJADO? \n");
        scanf("%d", &nivel);
        system("cls");
    
        switch (nivel)
        {
            case 1:
                {
                    system("cls");
                    time_t tempo; struct tm*data;time(&tempo);
                    data =localtime(&tempo);
                    printf("\t*===================================================================*\n");
                    printf("\t|       _________ ___   ___ ___ ____     ____ __________            |\n");
                    printf("\t|       XXXXXXXXX XXX_  XXX XXX XXXX_   _XXXX XXXXXXXXXX            |\n");
                    printf("\t|       XXXXXXXXX XXXX_ XXX XXX XXXXX_ _XXXXX XXXXXXXXXX            |\n");
                    printf("\t|       XXX___XXX XXXXX_XXX XXX XXXXXX_XXXXXX XXX_____              |\n");
                    printf("\t|       XXXXXXXXX XXXXXXXXX XXX XXXXXXXXXXXXX XXXXXXXX              |\n");
                    printf("\t|       XXXXXXXXX XXX XXXXX XXX XXXXX X XXXXX XXX_______            |\n");
                    printf("\t|       XXX   XXX XXX  XXXX XXX XXXXX   XXXXX XXXXXXXXXX            |\n");
                    printf("\t|       XXX   XXX XXX   XXX XXX XXXX    XXXXX XXXXXXXXXX            |\n");
                    printf("\t|                                                                   |\n");
                    printf("\t*===================================================================*\n\n");
                    printf("\t AS PERGUNTAS SOBRE \"ANIME\" VALEM 2 PONTOS CADA\n\n");
    
                    getchar();printf("Pecione \"Enter\" para continuar...");
                    getchar();system("cls");
    
                    printf("\t*================================*\n");
                    printf("\t| Pergunta de N. %.2d --- Anime    |\n", contp_1++);
                    printf("\t*================================*\n\n");
                    printf("\t Naruto e filho de qual dos Hokages?\n\n");
                    printf(" A) Sarutobi Hiruzen\n");
                    printf(" B) Namikaze Minato\n");
                    printf(" C) Senju Hashirama\n");
                    printf(" D) Senju Tobirama\n\n");
                    printf("\t QUAL E A ALTERNATIVA CORRETA: \n\n");
                    scanf("%s" ,&resp);
                     if ((resp=='B')||(resp='b'))
                   {
                    printf ("Resposta correta\n");
                    certo_1++;
                   }
                    else
                   {
                    printf ("Resposta errada\n");
                    printf ("Resposta correta: Letra \"B\"\n");
                    errado_1++;
                   }
                   printf("*==================================================*");
                   getchar(); printf("Precione a telca Enter para continuar...");
                   getchar(); system("cls");
                   printf("\t*==================================================*\n");
                   printf("\t|            Pergunta de N. %.2d --- Anime          |\n", contp_1++);
                   printf("\t*==================================================*\n\n");
                   printf("\t Em Dragon Ball Z as esferas do dragao do planeta\n");
                   printf("\t namejuseikin consedem quantos desejos ?\n");
                   printf("A) 1 DESEJO\n");
                   printf("B) 4 DESEJO\n");
                   printf("C) 2 DESEJO\n");
                   printf("D) 3 DESEJO\n\n");
                   printf("\t QUAL E A ALTERNATIVA CORRETA?\n");
                   scanf("%s" , &resp );
    
                   if ((resp=='D')||(resp=='d'))
                   {
                       printf("\tSUA RESPOSTA ESTA CORRETA...\n");
                       certo_1++;
                   }
                   else
                   {
                       printf("\tSUA RESPOSTA ESTA ERRADA\n...");
                       printf("\tA ALTERNATIVA CORRETA ERA A LETRA \"D\"\n");
                       errado_1++;
                   }
    
                }
    
    
    }
    }

     

  7. Boa noite,

     

    Fiz uma calculadora para equações de segundo grau, para resolver a clássica:

    ax²+bx+c=0

    Usando a fórmula de Bhaskara para encontrar o "x".

    Porém quando uso valores como:

    a = 1
    b = 1
    c = -1

    , funciona muito bem dando o resultado correto, porém quando uso por exemplo:

    a=2
    b=3
    c=-5

    , o resultado fica: 4 e -10, que está errado.

    O código que fiz foi este( Compilei com o Free Pascal no Linux ):

    program bhaskara;
    
    var a, b, c, delta, x, bn, xp, xn : real;
    
    begin
            write('Digite o valor de a: ');
            readln(a);
            if a = 0 then
            begin
                    writeln('A não pode ser 0');
                    exit;
            end
            else
            begin
                    writeln('Valor de a está ok');
            end;
            write('Digite o valor de b: ');
            readln(b);
            write('Digite o valor de c: ');
            readln(c);
            writeln('Indo calcular delta');
            delta := (b*b)-(4*a*c);
            writeln(delta:0:6);
            writeln('Indo calcular b negativo');
            bn := (-1)*b;
            writeln('Indo calcular x negativo');
            xn := (bn - sqrt(delta))/2*a;
            writeln('Indo calcular x positivo');
            xp := (bn + sqrt(delta))/2*a;
            writeln('Duas raízes foram achadas: ', xp:0:6, ' ', xn:0:6);
    end.

     

     

    Grato desde já.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!