Ir ao conteúdo
  • Cadastre-se

Ajuda com Programa de signo


ramon_c_barbosa

Posts recomendados

Ola pessoal.

To com um problema pra fazer um programa em C++ de signo onde o usuario entra com o dia e o mes, ai o programa da pra ele o signo. A logica acho que ta certa pois que usar o minimo de processamento, so to com duvida quanto a matriz dos signos. Como incluir todos os signos em uma matriz?

Ta ai o codigo.Help ai!

#include <stdio.h>
#include <math.h>
#include<string>

// Programa de Signos
// Ramon Barbosa 03.04.2012


int main()
{
int dia,mes,
dias[13]={0,21,20,21,21,21,21,22,23,23,23,22,22};

([COLOR="Red"]Aqui ta o problema[/COLOR] string signos[13]={Capricornio, Aquario, Peixes, Aries, Touro, Gemeos, Cancer, Leao, virgem, libra, Escorpiao, Sagitario, Capricornio};

While(dia = 0 or mes = 0){
printf("Este programa dira qual o seu signo de acordo com sua data de nascimento\n\n");
printf("Qual o dia do seu nascimento\n");
scanf("%i",&dia);
system("cls");
printf("Qual o mes do seu nascimento\n");
scanf("%i",&mes);
system("cls");

if dia < dias[mes];
mes = mes--;

printf("Seu signo é %c"signos[mes];
}
system("PAUSE");
return(0);
}

Link para o comentário
Compartilhar em outros sites

Amigo, C++ NÃO É PASCAL!

Seus erros são simples e amadores, mas tenha mais atenção ao programar.

Você iniciou sua string signos sem colocar os nomes dos signos entre aspas. No CodBlocks programando em C++, deve incluir <iostream> para usar o tipo de dados STRING.

Nao usou parenteses no "if dia < dias[mes];" e ainda colocou um ponto e virgula no final

Comparação em c++ usa-se dois simbolos de igual '=='. No while você esta tentando comparar se o valor é igual a zero, mas você não leu nenhum valor DARA ERRO! Use um do while para isso.

No printf, use %s para indicar o tipo string. %c é para caracter, e separe por virgula a variavel.

C++ É CASE SENSE! 'While' não existe, mas 'while' sim.

Não testei sua lógica e nem irei, aprenda a consertar esses erros primeiro. E sinceramente, nao pense em "usar o minimo de processamento" agora. Esse exercício é mais didático, e pelos seus erros percebo você ainda está começando... deixe para criar aplicações de alto desempenho para o futuro.

Abç

Link para o comentário
Compartilhar em outros sites

Corigido, rodando liso.Pode encerrar o topico moderação.Valeu

#include <stdio.h>
#include <math.h>
#include<string>

// Programa de Signos
// Ramon Barbosa 03.04.2012


int main()
{
int dia,mes,
dias[13]={0,21,20,21,21,21,21,22,23,23,23,22,22};

char signos[13][12]={"Capricornio", "Aquario", "Peixes", "Aries", "Touro", "Gemeos", "Cancer", "Leao", "virgem", "libra", "Escorpiao", "Sagitario", "Capricornio"};

do{
printf("Este programa dira qual o seu signo de acordo com sua data de nascimento\n\n");
printf("Qual o dia do seu nascimento\n");
scanf("%i",&dia);
system("cls");
printf("Qual o mes do seu nascimento\n");
scanf("%i",&mes);
system("cls");

if (dia < dias[mes])
mes = mes-1;

printf("Seu signo e %s\n\n",signos[mes]);
}while(dia != 0 || mes != 0);
system("cls");
printf("Programa fializado\n\n");
system("PAUSE");
return(0);
}

Link para o comentário
Compartilhar em outros sites

Amigo, acabei fazendo esse exercício em Java. Acredito que não terá muitos problemas em entender, pois apenas escrevo no console e leio dados, não uso nenhuma função avançada da linguagem (até porque sou iniciante em java).

Dê uma olhada se lhe ajuda:



package exe301;

import java.util.Scanner;

/**
*
* @author DAYBSON
*/
public class Exe301
{
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
int dia, mes;
Scanner in = new Scanner(System.in);
boolean erro;
//Enquanto não digitar um mês válido
do
{
System.out.print("Digite seu mês de aniversário: ");
mes = in.nextInt();
} while (mes < 1 || mes > 12);

//Enquanto não digitar um dia válido e erro=true
do
{
System.out.print("Digite seu dia de aniversário: ");
dia = in.nextInt();

//Se Fevereiro, então devo ter no máximo 28 dias
//Obs: não trato anos bissextos
if (mes == 2 && dia > 28 )
erro = true;

//Se Abril, Junho, Setembro, Novembro, então devo ter no máximo 30 dias
else if ( (mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia > 30)
erro = true;

else erro = false;

} while (dia < 1 || dia > 31 || erro);

switch (mes)
{
case 1:
{
if (dia <= 20)
System.out.print("Capricórnio");
else System.out.print("Aquário");
};break;

case 2:
{
if (dia <= 19)
System.out.print("Aquário");
else System.out.print("Peixes");
};break;

case 3:
{
if (dia <= 20)
System.out.print("Peixes");
else System.out.print("Áries");
};break;

case 4:
{
if (dia <= 20)
System.out.print("Áries");
else System.out.print("Touro");
};break;

case 5:
{
if (dia <= 20)
System.out.print("Touro");
else System.out.print("Gêmeos");
};break;

case 6:
{
if (dia <= 20)
System.out.print("Gêmeos");
else System.out.print("Câncer");
};break;

case 7:
{
if (dia <= 21)
System.out.print("Câncer");
else System.out.print("Leão");
};break;

case 8:
{
if (dia <= 22)
System.out.print("Leão");
else System.out.print("Virgem");
};break;

case 9:
{
if (dia <= 22)
System.out.print("Virgem");
else System.out.print("Libra");
};break;

case 10:
{
if (dia <= 22)
System.out.print("Libra");
else System.out.print("Escorpião");
};break;

case 11:
{
if (dia <= 21 )
System.out.print("Escorpião");
else System.out.print("Sagitário");
};break;

case 12:
{
if (dia <= 21)
System.out.print("Sagitário");
else System.out.print("Capricórnio");
};break;

default: System.out.print("Informações incorretas!");
}
}
}

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

e ai galera, sou novo no site, e to estudando C++

Gostaria que dessem uma olhada nesse meu codigo aqui, aproveitando o exercicio do Daybson, so que usando apenas If. Obrigado galera!!

#include<stdio.h>

#include<stdlib.h>

int main ()

{

char nome[10];

int mes,dia;

printf("Digite seu nome: ");

scanf("%s",&nome);

printf("digite o dia: ");

scanf("%d",&dia);

if (dia < 0 || dia >31){

printf("dia invalido\n");

}else{

printf("mes de nascimento: ");

printf("\n\n1-Janeiro\n2-Fevereiro\n3-Marco\n4-Abril\n5-Maio\n6-Junho\n7-Julho\n8-Agosto\n9-Setembro\n10-Outubro\n11-Novembro\n12-Dezembro\nDigite: ");

scanf("%d",&mes);

if (mes < 1 || mes> 12){

printf ("Esse mes não existe!!");

}else{

if (mes==2 && dia >28 || mes==4 && dia>30 || mes==6 && dia >30 || mes==9 && dia >30 || mes==11 && dia >30 ){

printf("data invalida");}else{

if (mes == 3 && dia>=20 || mes ==4 && dia<=20)

printf("%s seu signo e Aries",nome);

if (mes == 4 && dia>=21 || mes ==5 && dia<=20)

printf("%s seu signo e Touro",nome);

if (mes == 5 && dia>=21 || mes ==6 && dia<=20)

printf("%s seu signo e Gemeos",nome);

if (mes == 6 && dia>=21 || mes ==7 && dia<=21)

printf("%s seu signo e Cancer",nome);

if (mes == 7 && dia>=22 || mes ==8 && dia<=22)

printf("%s seu signo e Leao",nome);

if (mes == 8 && dia>=23 || mes ==9 && dia<=22)

printf("%s seu signo e Virgem",nome);

if (mes == 9 && dia>=23 || mes ==10 && dia<=22)

printf("%s seu signo e Libra",nome);

if (mes == 10 && dia>=23 || mes ==11 && dia<=21)

printf("%s seu signo e Escorpiao",nome);

if (mes == 11 && dia>=22 || mes ==12 && dia<=21)

printf("%s seu signo e Sagitario",nome);

if (mes == 12 && dia>=22 || mes ==1 && dia<=20)

printf("%s seu signo e Capricornio",nome);

if (mes == 1 && dia>=21 || mes ==2 && dia<=18)

printf("%s seu signo e Aquario",nome);

if (mes == 2 && dia>=19 || mes ==3 && dia<=19)

printf("%s seu signo e Peixes",nome);

}

}

}

system("pause");

return (0);

}

Link para o comentário
Compartilhar em outros sites

Arquivado

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

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