Ayuda con programa en C

bloodhound

Hola,

spoiler

Eso esta solucionado, sabeis que quiere decir

"main" is usually a function, cuando trato de compilar?

Kartalon
typedef struct mes
{
  int num;
  char nombre[10];
} MES;

typedef crea un alias entre "struct mes" y "MES" para que cada vez que quieras usar struct mes no tengas que escribir "struct mes"

struct mes, obviamente, genera una estructura de nombre mes

Define las estructuras como te haga falta y crea los alias con typedef para poder utilizarlas en las funciones posteriores.

Con la estructura definida anteriormente bastaria con:
MES m;
para crear una nueva estructura y luego con
m.num = 1;
podría definir los elementos de la estructura.

cabron

Por convención, las constantes van en mayúsculas, los tipos de datos no, por tanto es bastante probable que quieran que uses #define

No estoy diciendo que #define sea mejor que typedef para definir un tipo de datos (de hecho no lo es), pero tiene pinta de ser lo que te piden.

bloodhound

#2 no se... no me suena que me hayan explicado algo asi en clase.

Creo que tiene que ver con que, luego como tengo que usar estructuras de control, para que el codigo sea mejor legible, en vez de escribir el mes con numeros, lo haga con letras.

Kartalon

#3 tio, como va a ser en

void escribeMes(MES m, ANNO a);

MES una constante? :s

De todas formas yo para los alias de tipos de datos suelo usar primera mayúscula (y varias veces he visto todo mayúsculas).

#4 Tienes un cacao considerable, estudia xDD

bloodhound

Pues, la cosa es que si estudio, de hecho soy de los pocos que han asistido a todas las clases.
Entrego las practicas, pero las hago distintas de la forma que me piden, es decir sin usar el typedef, te podria hacer perfectamente esta practica, pero no se porque se emperran en que lo use...

Kartalon

A ver es que typedef no tiene ningún misterio, simplemente crea un "alias" un nuevo nombre para un tipo, así, por ejemplo, si pongo

typedef int nuevonombre;

luego podré usar nuevonombre exactamente igual que int y declarar un entero x con

nuevonombre x;

Te he puesto lo de structs por que es con lo que suele usarse (yo al menos) pero en este caso quizás ni te haga falta.

cabron

#5

#define AAAA int

AAAA a = 4;


#define BBBB kk

struct kk{

int a;
int b;};

BBBB u;

u.a = 5;

Kartalon

#8 Vale, te había entendido mal, te había entendido una constante (supongo que al leer el define) y no crear un alias con el define xD

Pero vamos, que para crear tipos de datos yo toda mi (corta) vida he usado typedef. include sólo lo he usado para las contadas veces que he querido usar constantes, ¿cual es la diferencia al usarlo para alias?

cabron

Sí, #define sustituye una cosa por otra antes de la compilación, pero ya te digo, el único motivo por el que creo que le piden que use #define, es por que cuasi universalmente, todo lo que se declara con #define va en mayúsculas.

Kartalon

Yo las pocas veces que lo he usado, (palo #define PI 3.14159 y poco mas) pues sip, pero vamos, que si el chaval dice que es typedef y teniendo en cuenta que es un tipo de datos... No se xD

Aunque tampoco es que haya usado typedef para mucho más que los structs... xD

Kartalon

dupe

bloodhound

Gracias por la ayuda, ya lo he resuelto.

Y al menos he conseguido enterarme de como funciona, que es lo que queria, porque si me lo hacen, luego llega el examen, y me joden. xD

Amazon

#13 puedes poner el codigo? que estoy estudiando estos royos y me mola mirar codigos :$

cabron

#11:

#define se puede usar para crear constantes (en C no existe const, fue añadido en C++), para crear alias para los tipos de datos (lo mismo que typedef), y para crear funciones macros, rollo

#define SUMA5(a) (a)+5

int main()
{
int b = 3;

SUMA5(b); // b vale 8 ahora

}

JuAn4k4

Menuda discusión , por mucho que vaya en mayusculas, ¿no lo ves un poco forzado?

Aunque si es verdad que el tipo Mes y el tipo Año pueden ser perfectamente enteros.

La ayuda que necesita #1 es conocer el google, buscas typedef en google y te salen ejemplos.

http://es.wikipedia.org/wiki/Typedef

Tambien los nombres de las variables que han puesto "m" y "a" ...

Lo dificil del programa y que raya un monton es : Saber en que dia de la semana empieza, y saber si ese año es bisiesto o no.

A partir de ahi, dibujar el mes es trivial.

LOc0

Lo dificil del programa y que raya un monton es : Saber en que dia de la semana empieza, y saber si ese año es bisiesto o no.

http://es.wikipedia.org/wiki/Algoritmo_Doomsday -> Muy curioso para vacilar y echarte unas risas.

http://es.wikipedia.org/wiki/Bisiesto -> "curtura" general , pero por si acaso.

Y cabron lleva razón en lo del convenio de las mayúsculas, pero en este caso me jugaría la mano izquierda a que esas mayúsculas vienen de un typedef (no es la primera vez que lo he visto).

Salu2 ;)

JuAn4k4

#17 A mi eso me raya MUCHISIMO, que no digo que sea dificil. Es verlo y se me quitan todas las ganas que pudiera tener de trabajar en ello.

B

Pues si un algoritmo simple de 2 variables te da dolor de cabeza apaga y vamonos. Es la típica practica de 1º

JuAn4k4

#19 ¬¬ He hecho cosas más complicadas, pero simplemente me aburre muchisimo hacer esas cosas, es como si no valiera para nada mi tiempo, no se.

Si el 1 de enero es lunes entonces el 1 del mes X será ... blblabl y joder, ¿ es o no es un coñazo ? y a mirar la formulita y nose que , y nose cuantas.

Cuando escribo una sentencia if lo suficientemente rara, me estalla la cabeza como este mal.

Narayan-Sama

Si es el mismo programa que tuve que hecer yo en clase tengo la solución. Te la paso. Pero si no puedes sacarlo por ti mismo, debes ponerte a estudiar asaco.

Te lo pego entero. Espero que te sirva.

spoiler

LOL salen malditas caritas por todos los lados xDDDDDDDDDDDDD

bloodhound

#1 He modificado la entrada. ¿alguna sugerencia?

cabron

#16:

No solo no es forzado, si no que además la diferencia entre usar typedef y #define para crear un alias de tipos de datos es diminuta (hay algunos casos especiales donde si importa usar uno u otro pero en la mayoría es indiferente). Aparte que no estaba discutiendo que typedef estuviese mal, simplemetne he dicho (y creo que lo he recalcado), que #define es lo más usual cuando se pone un identificador en mayúsculas.

#22

Puesto que no pones el código y no me sé de memoria todos los errores de todos los compiladores... no sé que decirte, pero me da que tienes algún error en paréntesis, llaves, o punto y coma, y no te está parseando bien el bloque de la función main, y te pilla main como una palabra por ahí suelta.

O eso o que has usado main para declarar algo que no sea la función main...

_rAiDeN_

comprueba { }

bloodhound
spoiler

He aqui el main, jeje. No se por mas que lo reviso, no veo errores. Y luego me dice que
syntax error before { token
y
syntax error before "do"

cabron

Quitando que en esta línea te falta el paréntesis y el ;

printf("\n\t\tQuiere introducir otro mes (S/n)?"

diría que tienes un error de sintáxis en el archivo prototipos.h que estás incluyendo, postea también el código de este archivo

bloodhound

Aqui el funciones.c

spoiler
cabron

En prototipo.h

_Bool esBisiesto(ANNO m)

Te falta el ;

Arreglalo y compila otra vez a ver si hay más, aunque aprezca que no tenga nada que ver, un error de parseo al principio, te acaba dando mil errores en líneas más abajo.

bloodhound

Ok, sep, era eso y un par de cosas mas, ahora estoy cargandome todos los errores. Gracias ^^

cabron

Otra cosa, al finalizar el bucle tienes esto:

siono = getchar();

}while (getchar!= 'n');

Has vuelto a poner getchar cuando tendrías que haber puesto la variable siono.