Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Questões resolvidas sobre IF ELSE

Propomos, no artigo passado, uma série de questões e desafios em linguagem C para você resolver usando os conceitos que você aprendeu sobre o teste condicional IF ELSE.

Tente ao máximo resolver! Pense, raciocine, pense mais uma vez...só assim você será um bom programador C.




Clique aqui e saiba como obter seu certificado de programação C! Entre já no Mercado de Trabalho!

Exercícios resolvidos sobre IF ELSE em C



0. Faça um programa que peça dois números ao usuário e mostre qual o maior e qual o menor

Vamos declarar dois números inteiros: x e y
Pedimos para o usuário preencher o valor de x, em seguida o de y.

Primeiro vamos checar se x é maior que y através do operador maior igual que, como teste para o teste condicional IF. Caso seja verdade, dizemos que x é maior. Caso seja falso, o teste cai no ELSE e diz que y é maior.
Código C:
#include <stdio.h>

int main()
{
    int x, y;
    printf("Digite o numero 1: ");
    scanf("%d", &x);

    printf("Digite o numero 2: ");
    scanf("%d", &y);

    if(x > y)
        printf("Maior: x = %d", x);
    else
        printf("Maior: y = %d", y);

}

Note que, na linha abaixo do IF e na linha abaixo do ELSE nós não colocamos o código entre chaves {}.
Só podemos fazer isso se o código abaixo do IF ou do ELSE possuam SOMENTE UMA LINHA.
Isso mesmo, o C só irá interpretar a linha imediatamente abaixo do IF ou do ELSE como fazendo parte desses testes condicionais.

Ou técnica muito importante, que ensinaremos aqui nesse tutorial de C, é o uso de uma terceira variável que irá receber o valor do maior número entre x e y.
Vejam só:


#include <stdio.h>

int main()
{
    int x,
        y,
        maior;
    printf("Digite o numero 1: ");
    scanf("%d", &x);

    printf("Digite o numero 2: ");
    scanf("%d", &y);

    if(x > y)
        maior = x;
    else
        maior = y;

    printf("O maior numero eh: %d", maior);


}




1. Faça um programa que receba três inteiros e diga qual deles é o maior e qual o menor. Consegue criar mais de uma solução?

Vamos declarar três variáveis: num1, num2 e num3.
Primeiro vamos checar se num1 é maior que num2. Se for, dentro do IF fazemos outro teste pra saber se num1 é maior que num3 também, se for, é porque num1 é o número maior.

Aqui notamos um detalhe importante e muitíssimo usado em programação: if else aninhados.
Ou seja, aninhar é colocar um dentro do outro. No caso, colocamos outro teste if-else dentro de um teste if.

No caso, primeiro testamos se num1 é maior que num2. Somente se num1 for maior que num2 é que vamos testar se num1 é maior que num3.
Se num1 não for maior que num2, o teste pra saber se num1 é maior que num3 nem acontece.

É importante você identar tudo, para saber a qual IF cada ELSE pertence. É extremamente importante que você tenha essa organização para não criar confusão.

Pois bem, testamos para saber se num1 é maior que num2.
Aqui, outro caso pode acontecer: num1 é maior que num2, mas num1 não é maior que num3.
Raciocine comigo: se num1 é maior que num2 e num3 é maior que num1, então num3 também é maior que num2 e num3 é o maior número.
Pronto, aqui terminamos o primeiro IF, em que num1 é sempre maior que num2.

Agora, pode ser que num2 seja maior que num1. Isso cai no ELSE maior.
Ok, aqui sabemos que num2 é maior que num1. Fazemos outro teste condicional IF ELSE dentro desse else maior para saber se num2 é maior que num3 também, se for, mostramos que num3 é o maior.

Porém, se num2 não for maior que num3, é óbvio que num3 é maior que num2. 
Como num2 é maior que num1 e se num3 é maior que num2, obviamente num3 também é maior que num1, e mostramos que num3 é o maior número.

O raciocínio para descobrir o menor número é parecido, porém, ao invés de usar o operador maior que (>), se usa o operador menor que (<). Tente!
Código C:
#include <stdio.h>

int main()
{
    int num1,
        num2,
        num3;

    printf("Digite o numero 1: ");
    scanf("%d", &num1);

    printf("Digite o numero 2: ");
    scanf("%d", &num2);

    printf("Digite o numero 3: ");
    scanf("%d", &num3);


    // Lógica para descobrir o maior número
    if (num1 > num2)
    {
        if(num1 > num3)
        {
            printf("O maior numero e: %d\n", num1);
        }
        else
        {
            printf("O maior numero e: %d\n", num3);
        }
    }
    else
    {
        if(num2 > num3)
        {
            printf("O maior numero e: %d\n", num2);
        }
        else
        {
            printf("O maior numero e: %d\n", num3);
        }
    }

    // Lógica para descobrir o menor número
    if(num1 < num2)
    {
        if(num1 < num3)
        {
            printf("O menor numero e: %d", num1);
        }
        else
        {
            printf("O menor numero e: %d", num3);
        }
    }
    else
    {
        if(num2 < num3)
        {
            printf("O menor numero e: %d", num2);
        }
        else
        {
            printf("O menor numero e: %d\n", num3);
        }
    }


}


Uma outra maneira de fazer seria usando duas outras variáveis para armazenar o maior e o menor número: 'menor' e 'maior'.
Ao final, exibimos apenas um printf mostrando o valor dessas variáveis.
Veja como ficou nosso código em C:

Código C:
#include <stdio.h>

int main()
{
    int num1,
        num2,
        num3,
        maior,
        menor;

    printf("Digite o numero 1: ");
    scanf("%d", &num1);

    printf("Digite o numero 2: ");
    scanf("%d", &num2);

    printf("Digite o numero 3: ");
    scanf("%d", &num3);


    // Lógica para descobrir o maior número
    if (num1 > num2)
    {
        if(num1 > num3)
            maior = num1;
        else
            maior = num3;
    }
    else
    {
        if(num2 > num3)
            maior = num2;
        else
            maior = num3;
    }

    // Lógica para descobrir o menor número
    if(num1 < num2)
    {
        if(num1 < num3)
            menor = num1;
        else
            menor = num3;
    }
    else
    {
        if(num2 < num3)
            menor = num2;
        else
            menor = num3;
    }

    printf("O maior numero e: %d\n", maior);
    printf("O menor numero e: %d\n", menor);

}


2. Escreva um programa em C que recebe um inteiro e diga se é par ou ímpar.
Use o operador matemático % (resto da divisão ou módulo) e o teste condicional if.

Essa questão é bem simples e já foi resolvida de uma maneira em nosso artigo sobre operadores de comparação e teste em C.
http://www.cprogressivo.net/2013/02/Fazendotestesecomparacoes-operadordeigualdademaiormenormaiorigualmenorigualdediferencaedemoduloourestodadivisao.html

Lá mostramos que o IF identifica se o número é par, se não for, vai pro ELSE.
Vamos fazer o contrário aqui: se cair no IF é porque o número é ímpar. Se cair no ELSE, é porque é par.

Pra saber se um número é par, é só testar se o o resto da divisão desse número por 2 é 0.
É fácil ver que, para checar se um número é ímpar, basta testar se o resto da divisão desse número por 2 é 1.  Assim, nosso simples aplicativo em C fica:
Código C:
#include <stdio.h>

int main()
{
    int num;

    printf("Digite um numero: ");
    scanf("%d", &num);

    if( num%2 == 1 )
        printf("%d e ímpar\n", num);
    else
        printf("%d e par\n", num);
}



3. Escreva um programa que pergunte o raio de uma circunferência, e sem seguida mostre o diâmetro, comprimento e área da circunferência.

Nas outras questões vínhamos usando apenas números inteiros em nossas aplicaçõe em C. Porém, nada impede você de usar float ou double, irá funcionar do mesmo jeito.

Mas nessa questão temos que usar float, pois vamos tratar de números com casas decimais, como o pi.
Fora isso, a questão é bem óbvia e simples. Basta aplicar as fórmulas matemáticas:

Código C:
#include <stdio.h>

int main()
{
    float raio,
          pi = 3.14,
          diametro,
          comprimento,
          area;

    printf("Digite o raio: ");
    scanf("%f", &raio);

    diametro = 2 * raio;
    comprimento = 2 * pi * raio;
    area = pi * raio * raio;

    printf("Diametro %.2f\n", diametro);
    printf("Comprimento %.2f\n", comprimento);
    printf("Area %.2f\n", area);
}

Deixamos para você o exercício de criar um programa em C, igual ao passado, porém usando somente a variável 'raio'.



4. Para doar sangue é necessário ter entre 18 e 67 anos. Faça um aplicativo na linguagem C que pergunte a idade de uma pessoa e diga se ela pode doar sangue ou não. Use alguns dos operadores lógicos OU (||) e E (&&).

Vamos agora aliar nossos conhecimentos sobre o teste condicional IF ELSE com os operadores lógicos, tudo já foi devidamente ensinado aqui em nossa apostila online de C.

Note que, para doar sangue é necessário ter 18 anos ou mais, E TAMBÉM é necessário ter 67 anos ou menos.
Ou seja, podemos fazer usando o operador lógico &&: (ter 18 anos ou mais) && (ter 67 anos ou menos).
Código C:
#include <stdio.h>

int main()
{
    int idade;

    printf("Digite sua idade: ");
    scanf("%d", &idade);

    if( (idade >= 18) && (idade <=67))
        printf("Voce pode doar sangue\n");
    else
        printf("Voce nao pode doar sangue\n");
}


No código passado mostramos o que era necessário para doar sangue e cair no IF.
Agora vamos fazer o contrário: vamos fazer o teste no IF para mostrar a mensagem de que o usuário NÃO pode doar sangue.

Para NÃO PODER doar sangue o usuário deve ter menos de 18 anos OU mais de 67 anos, concorda?
Então, usaremos o operador lógico ||: (ter menos de 18 anos) || (ter mais de 67 anos)
Código C:
#include <stdio.h>

int main()
{
    int idade;

    printf("Digite sua idade: ");
    scanf("%d", &idade);

    if( (idade < 18) || (idade > 67))
        printf("Voce nao pode doar sangue\n");
    else
        printf("Voce pode doar sangue\n");
}



5. Escreva um programa que pergunte o dia, mês e ano do aniversário de uma pessoa e diga se a data é válida ou não. Caso não seja, diga o motivo. Suponha que todos os meses tem 31 dias e que estejamos no ano de 2013.

Um dia válido é aquele que está entre 1 e 31. Um número abaixo de 1 ou acima de 31 será considerado inválido.
Um mês válido é aquele que está entre 1 e 12. Um número abaixo de 1 ou acima de 12 será considerado inválido.
Um ano de nascimento válido é aquele que está abaixo do ano atual. Como estamos em 2013, se alguém fornecer dados de ano 2014 ou outro ano acima disso, será considerado inválido.

Vamos mostrar, mais uma vez, nesse tutorial mais um exemplo de if-else aninhados.

Primeiro fazemos o teste para saber se a idade é inválida.
Se for, o IF roda e acaba o programa.

Caso a idade seja válida, nosso programa em C vai para o ELSE.
No ELSE, testamos se o mês é inválido. Se for, mostra a mensagem de erro e programa acaba aí.
Se o mês for válido, testamos se o ano é invalido. Se for, mostra a mensagem de erro do ano e o programa em C acaba.
Se o ano for inválido, mostra a mensagem que o ano é inválido.
Porém, se o ano também for válido, mostra a mensagem que a data é válida e se encerra nossa aplicação C.

Note que a data só é válida se o dia for válido. Dentro dessa condição, o mês deve ser válido também.
E dentro da condição de verdadeiro do mes, o ano deve ser válido também. Assim, a mensagem de data correta só é exibida se os 3 testes (dia, mes e ano) validarem a data.
Código C:
#include <stdio.h>

int main()
{
    int dia,
        mes,
        ano;

    printf("Dia: ");
    scanf("%d", &dia);

    printf("Mes: ");
    scanf("%d", &mes);

    printf("Ano: ");
    scanf("%d", &ano);


    if((dia < 1) || (dia > 31))
        printf("Dia invalido\n");
    else //se o dia for válido
        if( (mes < 1) || (mes > 12) )
            printf("Mes invalido\n");
        else // além do dia, o mês for válido
            if( ano > 2013 )
                printf("Ano invalido\n");
            else //se além do dia e mês, o ano for válido
                printf("Data valida\n");


}



Desafio 1. Crie um programa em C que peça um número ao usuário e armazene ele na variável x. Depois peça outro número e armazene na variável y.
Mostre esses números. Em seguida, faça com que x passe a ter o valor de y, e que y passe a ter o valor de x.
Dica: você vai precisar usar outra variável.

O que vamos fazer é aqui é simplesmente trocar os valores de duas variáveis: x e y
Parece simples e bobo, mas não é óbvio e esse algoritmo é muito importante, e você verá ele aqui no curso C Progressivo várias vezes, e durante sua carreira como programador C.

Se queremos trocar o valor de x pelo valor de y, basta fazermos:
x = y;

Agora, queremos fazer com que y receba o valor de x:
y = x;

Correto? Não, errado.
y não terá o valor antigo de x, pois agora x tem um novo valor (y). Então, como resolver?

Vamos usar uma variável de apoio, também chamada de variável temporária.
Ela servirá para armazenar o valor antigo de x. Assim, y pode pegar o valor antigo de x.
Código C:
#include <stdio.h>

int main()
{
    int x,
        y,
        tmp;

    printf("x =  ");
    scanf("%d", &x);

    printf("y =  ");
    scanf("%d", &y);

    printf("\nTrocando os valores de x e y...\n");

    // É importante que entenda e decore as seguintes linhas
    // Elas são muito importantes e usadas em programação C
    tmp = x;
    x = y ;
    y = tmp;

    printf("\nx = %d \ny = %d\n",x,y);

}


27 comentários:

Anônimo disse...

Exércicio 0 o meu ficou assim

#include

int main(void){

int x, y;

printf("Digite um número: ");
scanf("%d", &x);

printf("Digite outro número: ");
scanf("%d", &y);

if(x > y){
printf(" %d é o Maior e %d é o Menor!\n", x, y);
}
else{
printf("%d é o Menor e %d é o Maior!\n", x, y);
}

return 0;
}

Anônimo disse...

Ola a todos, primeiramente gostei muito da didatica e a preocupacao de ajudar o proximo passando esses conhecimentos a outros interessados em aprender C. Faco engenharia eletrica e aprendi muito por aqui também.

No exercicio 0, foi solicitado tanto o maior numero como o menor numero tambem para mostrar na tela, entao eu fiz assim:

#include

/*Desafio 3. Crie um programa em C que recebe uma nota (entre 0.0 e 10.0) e checa se você passou direto, ficou de recuperação ou foi reprovado na matéria.
A regra é a seguinte:
Nota 7 ou mais: passou direto
Entre 4 e 7: tem direito de fazer uma prova de recuperação
Abaixo de 4: reprovado direto*/

int main()
{
float nota;

printf("Digite a nota do aluno: ");
scanf(" %f", &nota);

if(nota >= 7)
{
printf("\nParabens, voce passou direto\n\n");
}
else
{
if(nota >= 4)
{
printf("\nVoce esta de recuperacao, ainda tem chance de passar, entao estude.\n");
}
else
{
printf("\nSinto muito, voce perdao, sera necessario repetir a materia, deveria estudar mais.\n");
}
}
return 0;
}

Unknown disse...

ja o exercicio 1 eu fiz assim:

#include
#include
#include

//Faça um programa que receba três inteiros e diga qual deles é o maior e qual o menor. Consegue criar mais de uma solução?


int main()
{
int x, y, z;

printf("Digite o primeiro numero: ");
scanf(" %d", &x);

printf("\n\nDigite o segundo numero: ");
scanf(" %d", &y);

printf("\n\nDigite o terceiro numero: ");
scanf(" %d", &z);

if(x > y & x > z)
{
printf("\n\nO maior numero eh %d", x);
}
if(y > x & y > z)
{
printf("\n\nO maior numero eh %d", y);
}
if(z > x & z > y)
{
printf("\n\nO maior numero eh %d", z);
}

if(x < y & x < z)
{
printf("\n\nO menor numero eh %d", x);
}
if(y < x & y < z)
{
printf("\n\nO menor numero eh %d", y);
}
if(z < x & z < y)
{
printf("\n\nO menor numero eh %d", z);
}

return 0;
}

Unknown disse...

a minha numero 1 ficou assim.. mas acho que ficou grande demais...


// Faça um programa que receba três inteiros e diga qual deles é o maior e qual o menor. Consegue criar mais de uma solução?

#include

int main(void)

{
int num1, num2, num3, maior, menor;

printf("escreva 3 numeros:\n\n");
scanf("%d" "%d" "%d", &num1, &num2, &num3);

if (num1>num2)
{
maior = num1;
}
else
{
maior = num2;
}

if (maior>num3)
{
printf("o numero %d é maior \n\n\n", maior);
}
else
{
printf("o numero maior é o %d\n\n", num3);
}

if (num1<num2)
{
menor = num1;
}
else
{
menor = num2;
}
if (menor<num3)
{
printf("o numero %d é menor\n\n", menor);
}
else
{
printf("o numero menor é o %d\n\n", num3);
}

}

Hagliberto disse...

/*Desafio 1. Crie um programa em C que peça um número ao usuário e armazene ele na variável x.
Depois peça outro número e armazene na variável y.
Mostre esses números. Em seguida, faça com que x passe a ter o valor de y, e que y passe a ter o valor de x.
Dica: você vai precisar usar outra variável.*/
#include
#include
int main (void){
int x, y, aux;
printf("Digite um numero:\n");
scanf("%i", &x);
printf("Digite outro numero:\n");
scanf("%i", &y);

aux = x;
x = y;
y = aux;

printf("Os numeros que eram: %i e %i\t agora sao: %i e %i que bonitinhu!\n", y, x, x, y);

return 0;
}

Unknown disse...

um programa que valide um numero fornecido pelo usuario. este numero devera obrigatoriamente ser entre 50 e 70 ou ser superior a 100 para qualquer outro valor fornecido pelo usuario devera aparecer essa msg "este numero nao é valido. digite novamente" o programa so pode terminar quando o usuario digitar 10 valores

Unknown disse...

Estarei passando uma informação, pra quem esta se batendo para achar o símbolo barra vertical "|":
é só apertar as teclas:
shift + \= |

MAC disse...

//5. Escreva um programa que pergunte o dia, mês e ano do aniversário de uma pessoa
// e diga se a data é válida ou não. Caso não seja, diga o motivo.
// Suponha que todos os meses tem 31 dias e que estejamos no ano de 2013.

//MAC

#include
int main()
{
int dia,mes,ano;
printf("Qual dia voce nasceu\n");
scanf("%d",&dia);
if ((dia<1)||(dia>31))
{
printf("dia invalido");
return 0;
}

printf("Qual mes voce nasceu\n");
scanf("%d",&mes);
if ((mes<1)||(mes>12))
{
printf("mes invalido");
return 0;
}
printf("Qual ano voce nasceu\n");
scanf("%d",&ano);
if ((ano<1900)||(ano>2013))
{
printf("ano invalido");
return 0;
}
printf("%d/%d/%d data valida",dia,mes,ano);
}

Anônimo disse...

tem algum problema com essa minha logica?? favor me ajudar nessa pequena duda.

#include

int main()
{
int x,y,w,z;

printf("Insira um numero: ");
scanf("%d",&x);

printf("Insira outro numero: ");
scanf("%d",&y);

printf("%d equivale a x e %d equivale a y.\n",x,y);

w=y;
z=x;

printf("Agr %d equivale a x e %d equivale a y.\n",w,z);
}

dicas de tudo e mais um pouco... disse...

No exercício 5 diz que se errar a data ele para na hora, mas não, se errar data e o mês ele só avisa sobre o dia errado. Da mesma forma que se errar o dia, mes e ano ele só avisa do dia, ou seja, ele sempre pega o nível da linha superior e mostra o erro. O resto ele ignora.

Anônimo disse...

Muito Bom!!

Anônimo disse...

Excelente curso! Muito obrigado pelo trabalho muito competente!!!

Unknown disse...

//O MEU PRIMEIRO FICOU ASSIM JA QUE SE PEDE O MENOR E O MENOR

/*Faça um programa que peça dois números ao usuário e mostre qual o maior e qual o menor*/
#include
main()
{
int n1, n2, maior, menor;

printf ("digite o primeiro numero : ");
scanf ("%d", &n1);
printf ("digite o primeiro numero : ");
scanf ("%d", &n2);

if (n1>n2)
{

maior=n1;
menor=n2;
printf ("maior %d menor %d", maior, menor);
}
else
{
maior=n2;
menor=n1;
printf ("maior %d menor %d", maior, menor);
}

}

joao disse...

A minha quinta questão ficou assim:


#include

int main(void) {

int dia, mes, ano, resultado, soma;

printf(" Informe o dia. \n");
scanf("%d",&dia);
printf(" Informe o mes. \n");
scanf("%d",&mes);
printf(" Informe o ano. \n");
scanf("%d",&ano);
if (dia>=1 || dia<=31) {
resultado = 1;
}
else {
resultado = 0;
}
if (mes>=1 || mes<=12) {
resultado = 1 + 1;
soma = resultado;
}
else {
resultado = 0;
}
if (ano<=2014){
resultado = 1+soma;
}
else {
resultado = 0;
}
if (resultado == 3){
printf(" A DATA EH VALIDA! \n");
}
else {
printf(" A DATA EH INVALIDA! \n");
}
return 0;
}

Unknown disse...

A minha questão 0 ficou assim:

Scanner x = new Scanner (System.in);
int a,b;
System.out.println("Digite um número: ");
a = x.nextInt();
System.out.println("Digite outro número: ");
b = x.nextInt();
if(a>b){
System.out.println("O número A é o maior");
} else {

System.out.println("O número B é o maior");
}
}



}

Anônimo disse...

Bom dia!
No primeiro exercicio é necessario fazer a comparacao do num2 com num3.

A+
EO

Ana disse...

o meu exercício 1 ficou assim:
#include
main()
{
int a, b, c;
printf("digite 3 numeros:");
scanf("%d%d%d",a,b,c);

if (a>b)
if(a>c)
printf("maior:%d\nmenor:%d",a,b);
else
printf("maior:%d\nmenor:%d",c,b);
else
printf("maior:%d\nmenor:%d",c,a);

if (b>a)
if(b>c)
printf("maior:%d\nmenor:%d",b,a);
else
printf("maior:%d\nmenor:%d",c,a);
else
printf("maior:%d\nmenor:%d",c,b);

if(c>a)
if(c>b)
printf("maior:%d\nmenor:%d",c,a);
else
printf("maior:%d\nmenor:%d",b,a);
else
printf("maior:%d\nmenor:%d",b,c);

Unknown disse...

criar um, codigo computacional original de até 80 linhas de instruções o programa deve ser uma aplicação rica e eficiente trabalhos com traços de falta de originalidade.

utilizar no minimo 3 bibliotecas de funções do c++ e algumas de sua funções.
alguém poderia me ajudar desse programa


alguém poderia me ajudar desse programa.

Anônimo disse...

"Me ajude Por Favor"

1-Faça um programa em C que receba três números quaisquer digitados pelo
usuário e crie funções, nesse programa, que recebam esses três números
por parâmetros e apresente:
(a) Qual desses números é o menor.
(b) Qual desses números é o maior.
(c) Os números ordenados de forma crescente

Anônimo disse...

#include
#include
int main(){
setlocale(LC_ALL,"Portuguese");
int x,h;
printf("Digite um número: ");
scanf("%d",&x);
printf("Digite o segundo número: ");
scanf("%d",&h);
if(x==h){
printf("São iguais, por isso não satisfaz à questão\n");}

if (x>h){
printf("O valor de x= %d é maior do que h= %d.\n",x,h);}
if(x
#include
int main(){
setlocale(LC_ALL,"Portuguese");
int x,h;
printf("Digite um número: ");
scanf("%d",&x);
printf("Digite o segundo número: ");
scanf("%d",&h);

if (x>h){
printf("O valor de x= %d é maior do que h= %d.\n",x,h);}
else
if(x<h){
printf("O valor de x= %d é menor do que h= %d.\n",x,h);}
else
if(x==h){
printf("São iguais, por isso não satisfaz à questão\n");}

system("pause");
return 0;}

Unknown disse...

/* 5. Escreva um programa que pergunte o dia, mês e ano do aniversário de uma pessoa e diga se a data é válida ou não. Caso não seja, diga o motivo. Suponha que todos os meses tem 31 dias e que estejamos no ano de 2013. */

#include
#include
#include

int main()
{
setlocale(LC_ALL,"");
system("color e0");

int dia, mes, ano;

printf("\n\t\Digite a seguir o DIA, o MÊS e o ANO do seu aniversário:\n");

printf("\n\t\Digite o DIA: ");
scanf("%d", &dia);

printf("\n\t\Digite o MÊS: ");
scanf("%d", &mes);

printf("\n\t\Digite o ANO: ");
scanf("%d", &ano);

if((dia < 1) || (dia > 31))
printf("\n\t\Dia INVÁLIDO!");

if((mes < 1) || (mes > 12))
printf("\n\t\Mês INVÁLIDO!");

if(ano > 2013)
printf("\n\t\Ano INVÁLIDO!");

else
printf("\n\t\Data VÁLIDA. A DATA do seu aniversário é %d/%d/%d !", dia, mes, ano);
}

Unknown disse...

meu programa ta sempre imprimindo o mês como "0", onde está o erro?


#include

int main()
{
int dia,mes,ano;
printf("por favor insira sua data de aniverśario no formato dd/mm/aa");
scanf(" %d", &dia);
scanf(" %d", &mes);
scanf(" %d", &ano);


if(ano>2018||ano<1900){printf("ano inválido!");}//anos inválidos

else{if(mes>12||mes<1){printf("mês inválido!");}//meses inválidos

else{if(dia<1){printf("dia inválido!");}else{
if((mes==4||mes==6||mes==9||mes==11)&&(dia>30)){printf("dia inválido!");/*meses terminados em 30*/ }
else{if(mes=2&dia<28){printf("dia inválido");}/*fevereiro*/
else{if(dia>31){printf("dia inválido");}
else{printf("sua data de nascimento é %d %d %d",dia,mes,ano);}}}}}}}

Unknown disse...

Escreva um programa que pede para o usuário entra um número correspondente ao dia da semana e que então apresente na tela o nome do dia utilizando o comando if else

Anônimo disse...

Alguem me ajuda com esses 4 programas por favor

QUESTÃO 01 – Quantidade de Algarismos
Faça um programa que receba como entrada um número N (0 < N <= 100) representando a
quantidade de casos de testes. Para cada caso de teste, um número M (0 <= M <=
100.000.000.000) deve ser lido. Seu programa deve calcular e imprimir a quantidade X de
algarismos que o número M digitado em cada caso de teste possui.
QUESTÃO 02 – Números Consecutivos
Este programa deve receber inicialmente como entrada um número inteiro N (0 < N <= 100)
correspondente a quantidade de casos de teste. Para cada caso de teste seu programa deve ser
capaz de receber um número inteiro NUM (0 <= NUM <= 10.000.000). Após a leitura de NUM,
seu programa deve calcular se existe dois algarismos iguais consecutivos neste número. Casos
exista, seu programa deve exibir a mensagem “Sim, existem algarismos consecutivos”, se não
existir, imprimir “O numero digitado não possui algarismos iguais consecutivos”.
QUESTÃO 03 – Primeiro e Último
Este programa deve receber como entrada um número inteiro N (0 < N <= 100) que representa
a quantidade de casos de testes que serão executados. Para cada caso de teste seu programa
deve receber um número inteiro X (0 <= X <= 10.000.000). Para cada número X lido, você deve
verificar se o seu primeiro e o último dígitos são iguais. Caso sejam iguais, imprima “SIM”, se não
forem iguais, imprimir “NÃO”.
QUESTÃO 04 – Gado Demais
Escreva um programa que receba um número inteiro N correspondente ao código de
identificação de um boi e após isto, um número real PESO correspondente ao mesmo animal.
Seu programa deve efetuar leituras até que um código N menor que 0, seja digitado.
No final, seu programa deve calcular e imprimir os seguintes campos:
A) A média do peso dos bois.
B) O boi mais pesado, bem como a quantidade de bois com o maior peso.
C) O segundo boi mais pesado, bem como a quantidade de bois com o segundo maior peso.
D) O boi mais leve, bem como a quantidade de bois com o menor peso.
E) O segundo boi mais leve e a quantidade de bois com o segundo menor peso.

Wesley disse...

Uma dúvida em relação a resposta do Exercício 0:
O if só será executado se a condição X>Y for verdadeira, caso contrário será o else. No entanto , e se X for igual a Y? O C interpretará a condição como falsa e executará o else, ainda mostrando Y como maior. Eu usei a seguinte solução.

#include
#include
int main(void)
{
float n1,n2;
setlocale(LC_ALL,"Portuguese");
printf("\n Digite dois números: ");
scanf("%f%f",&n1,&n2);
if(n1>n2)
{
printf("\n %.3f é maior que %.3f.",n1,n2);
}
if(n1==n2)
{
printf("\n %.3f = %.3f.",n1,n2);
}
if(n1<n2)
{
printf("\n %.3f é maior que %.3f.",n2,n1);
}
return 0;
}

Wesley disse...
Este comentário foi removido pelo autor.
Wesley disse...

Minha solução para o desafio 1:

#include
#include
int main(void)
{
int x,y,i;
setlocale(LC_ALL,"Portuguese");
printf("\n Digite um número: ");
scanf("%d",&x);
printf("\n Digite outro número: ");
scanf("%d",&y);
printf("\n Número 1: %d Número 2: %d",x,y);
if(x!=y)
{
printf("\n NÚMEROS TROCADOS.");
i=x;
x=y;
y=i;
printf("\n Número 1: %d Número 2: %d",x,y);
}
else
{
printf("\n %d é igual a %d",x,y);
}
return 0;
}