Ir para conteúdo

POWERED BY:

Arquivado

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

DifusioN

Problema com o Switch(deveria funcionar xD)

Recommended Posts

Fala Gente, seguinte...

Tava eu aqui nas minhas horas vagas de vagabundo universitário e dai pensei em modificar um programinha de um livro...

 

Dai eu modifiquei só que não está fazendo o que deveria fazer, tipo, parece que o Case não está modificando o valor de "mes"...

 

Vejam vocês mesmo e tentem me falar o que está acontecendo...

A...lembrando que o Dev está mostrando esse erro em cada linha dos cases:

"28 [Warning] assignment makes integer from pointer without a cast "

 

/* Página 50 exercicio 9 - Modificado
Escreva um programa que solicite uma data e mostre como dd/mm/aaaa (Aqui é como o exercicio pedia)

Modificado:
A pessoa digita 15/11/1989 e aparece 15 de novembro de 1989.

*/

#include <stdio.h>
#include <stdlib.h>
#include "conio.h"


int main()
{ 
int dd, mm, aaaa;
char mes;//[80];
	printf("Digite um dia: ");
	
	scanf("%d", &dd);
	printf("Digite o numero equivalente ao mes: ");
	scanf("%d", &mm);
	switch (mm)
	{
		   case 1 : mes="JANEIRO"; break;
		   case 2 : mes="FEVEREIRO"; break;
		   case 3 : mes="MARCO"; break;
		   case 4 : mes="ABRIL"; break;
		   case 5 : mes="MAIO"; break;
		   case 6 : mes="JUNHO"; break;
		   case 7 : mes="JULHO"; break;
		   case 8 : mes="AGOSTO"; break;
		   case 9 : mes="SETEMBRO"; break;
		   case 10 : mes="OUTUBRO"; break;
		   case 11 : mes="NOVEMBRO"; break;
		   case 12 : mes="DEZEMBRO"; break;
		   default : printf("Mes invalido!!!");
	}
	printf("Digite o ano: ");
	scanf("%d", &aaaa);
	printf("Data digitada: %d/ de %s de %d", dd, mes, aaaa);

	getch();
	return 0;
}

 

Abraçoss....falowsss

Compartilhar este post


Link para o post
Compartilhar em outros sites

mude somente aki e veja:

char *mes;
ow c for fazer char mes[80], use o strcpy ao invez do '='

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

quitZAUMMM

 

ele não pode declarar um ponteiro sem inicializar e alocar espaço para essa variável, pode?

 

diffusion

 

você não está lendo a data no formato "dd/mm/aaaa", pq você não usa um:

scanf("%d/%d/%d", &dia, &mes, &ano);

Compartilhar este post


Link para o post
Compartilhar em outros sites

bommmmmmmmmmmmm. HFDUASHFUAH..

geralmente eu faço essas 'pogs' (coisa feia neh =´[ ). de fazer tipo char *var, e naum alocar espaço...

naum deveria ..

+ como eu sempre digo: "passo no compilador?? entaum beleza" HFJDUASHFUA zuera ;p

 

 

e Victor acho q ele ta fazendo desse jeito pq ta seguindo uma apostila..

eu como disse faria um char mes[10]; e usaria o strcpy ;D

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão é que eu não sei se é pog ou não....

pq por exemplo,

se fizermos algo do tipo:

char buff[20];

strcpy(buff, "minha_string");

O computador sabe que "minha_string" é um ponteiro para char. entendeu a minha dúvida?

Depois eu pergunto la no orkut, a galera la deve saber. :P :P

 

Se ele ta seguindo a apostila, então não está mais que quem falou... hahaahah

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa Genteeee......valew pela força ai...nem pensei que teria respostas tão rápido...xD

 

Bom, vamos lá:

 

 

mude somente aki e veja:

char *mes;
ow c for fazer char mes[80], use o strcpy ao invez do '='

[]s

O que acontece ao fazer isso? de usar um ponteiro(ainda não tenho mta noção sobre ponteiro...mas ja li a respeito e deu um branco agora xD)......

Sobre o strcpy, tipo, ele serve apenas para copiar uma string d um lugar e levar para outro...certo?

Como eu fazeria nesse caso então?..fikei na duvida...tipo..xD..sei la.xD

 

 

quitZAUMMM

 

ele não pode declarar um ponteiro sem inicializar e alocar espaço para essa variável, pode?

 

diffusion

 

você não está lendo a data no formato "dd/mm/aaaa", pq você não usa um:

scanf("%d/%d/%d", &dia, &mes, &ano);
(é DifusioN xD....)...Não faz diferença...é apenas economia de linha...no meu caso estou fuçando qualquer coisa mesmo para aprender...xD

 

Sobre a apostila... eu usei a apostila apenas para pegar a idéia, que era para a pessoa digitar os dados de uma data e mostrar eles normalmente na tela....sem nada de switch e tal....dai eu ke quis colocar isso de mudar o numero pela frase em meses e tal....xD...(fuçando e aprendendo xD)....

 

 

Outra coisa.....o que quer dizer Pog?

 

E tipo.....

 

Eu ainda quero entender o porque de não estar funcionando o código anterior...mas eu inverti um pouco aki e fikou assim o código:

int main()
{ 
int dd, mm, aaaa;
char mes;//[80];
	printf("Digite um dia: ");
	
	scanf("%d", &dd);
	printf("Digite o numero equivalente ao mes: ");
	scanf("%d", &mm);
	
	printf("Digite o ano: ");
	scanf("%d", &aaaa);
	
	switch (mm)
	{
		   case 1 : printf("Data digitada: %d de Janeiro de %d", dd, aaaa); break;
		   case 2 : printf("Data digitada: %d de Fevereiro de %d", dd, aaaa); break;
		   case 3 : printf("Data digitada: %d de Marco de %d", dd, aaaa); break;
		   case 4 : printf("Data digitada: %d de Abril de %d", dd, aaaa); break;
		   case 5 : printf("Data digitada: %d de Maio de %d", dd, aaaa); break;
		   case 6 : printf("Data digitada: %d de Junho de %d", dd, aaaa); break;
		   case 7 : printf("Data digitada: %d de Julho de %d", dd, aaaa); break;
		   case 8 : printf("Data digitada: %d de Agosto de %d", dd, aaaa); break;
		   case 9 : printf("Data digitada: %d de Setembro de %d", dd, aaaa); break;
		   case 10 : printf("Data digitada: %d de Outubro de %d", dd, aaaa); break;
		   case 11 : printf("Data digitada: %d de Novembro de %d", dd, aaaa); break;
		   case 12 : printf("Data digitada: %d de Dezembro de %d", dd, aaaa); break;
		   default : printf("Mes invalido!!!");
	}
	
	getch();
	return 0;
}

Mtuuuu maiorrr em caracteres...mass......funciona do jeito que quero....

Então...me ajudem a arrumar o anterior......é só curiosidade mesmo...xD...

 

Abraços e valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não está funcionando porque mes é apenas um char. Uma string é uma array de chars, logo você precisa de um ponteiro. Ou declarar mes como uma array (que é quase a mesma coisa): char mes[15];

Compartilhar este post


Link para o post
Compartilhar em outros sites

(é DifusioN xD....)

Ahhh... ninguém mandou misturar letras maiusculas e minusculas... uahhuaeaehuaeh :P :P :P

 

Outra coisa.....o que quer dizer Pog?

aeuheahuaehaeuhuaehaue

Pog é mais ou menos o que você fez para arrumar o seu problema.

POG = Programação Orientada a Gambiarra

 

É quando os programadores encontram maneiras erradas, mas que funcionam para resolver os seus problemas.

 

O que você não está entendendo é o conceito de string. você ja programava em alguma linguagem antes?

As strings em C são MUITO diferentes das strings em outras linguagens. C é uma lingaguem de relativo baixo nivel.

 

Aconselho dar uma lida:

http://pt.wikibooks.org/wiki/Programar_em_C/Strings

http://br.geocities.com/sdiasneto/c_int/strings.htm

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

--------------------------------------

EDIT:

O strcpy:

é uma função que faz o mesmo papel que o operador ':=' em Pascal.

por exemplo:

//pascal
var
minhaString: String;
begin

minhaString = "looooool";

end
//em C
char minhaString[20];

	strcpy(minhastring, "loooooool");

//ou...

char minhaOutraString[20];

	strcpy(minhaOutraString, minhaString);

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ta..eu tinha tentado utilizar aqui o char sendo declarado como char mes[80] mas não lembro...mas sei que deu outro erro tbm...UAuha....por isso ele até ta como //[80]....pq tbm tinha utilizado assim e tinha dado outro erro....

 

 

Sobre o Pog....UAHuhaU....putzz...adorei...xD...dei mta risada aki.....

 

 

Sobre as strings....tipo....eu não programo ainda em outras linguagens(posso dizer que ja programo em C++, em Java..isso e aquilo, ke é tudo a mesma coisa pelo que ja vi...UAHuh)......mas pelo que sei string é um Vetor de chars!....certo?.....

 

Sobre o strcpy, agora entendi...é que no exemplo que eu tinha visto só estava como strcpy (outra string, nova string), algo assim .,......e não tinha visto nenhum com a declaração de variavel antes e depois o arquivo.........(ops...arquivo nada...putz sono da poha....e ainda vou ter ke acordar 4 da madruga pra ir para a facul....xD)...*a string...

 

UAHUHA

 

Abraços ai gente....vou tentar fazer utilizando o strcpy depois e posto aki o resultado...agora vou dormir...pq to quase babando aki..xD

Valew e falows.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa c ainda eram 22:40 e você estava babando FHUDSHAU..

da proxima vz vo fazer uma facu q acaba + cedo ;D

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.