Veo interesante , crear un apartado dedicado a la programación en C en el blog.
No solo por su utilidad a la hora de crear aplicaciones, sino también como foro de debate a la hora de plantear ejercicios y su debida resolución, para el entendimiento del lenguaje.
Para programa en C es necesario tener conocimiento sobre la sintaxis de este lenguaje , pero esta característica no es lo único necesario.
1º Necesitaremos un Compilador y un Linkeador, cualidades que emplean diferentes programas en una sola aplicación , ademas … muchas disponibles gratuitamente y son validas para lenguaje C y C++.
Os recomiendo este Dev-C++. cuya pagina web es http://www.bloodshed.net/
2º Un libro sobre programación C, o un manual en pdf /ebook.
Os recomiendo este: http://www.sisoft.ucm.es/Manuales/Lenguaje_C.pdf
Que distribuye los servicios informaticos de la UCM
(Universidad Complutense de Madrid)
*Yo utilizo el libro de Luis Joyanes
«C, algoritmos ,programación y estructuras de datos»de la editorial SCHAUM (muy recomendado).
3º Lápiz , Papel y paciencia.
Ejercicio: (Calcular edad):
Escribir un programa que recibiendo como entrada 2 datos de fecha en formato dia (1 a 31) , mes (1 a 12) , y año (entero de cuatro dígitos) siendo fecha de nacimiento y fecha actual dichos datos ,calcule la edad en formato «Años» , siendo el calculo para una edad adulta, y en «Meses / Días» si tuviera menos de 1 año ,en caso de calcular la edad de un bebé.
==========================================================
Propongo el mio, como ejercicio resuelto:
#include (stdio.h)
#include (stdlib.h)
#include (conio2.h)//crear tabla datos "fecha"
typedef struct {
int dia;
int mes;
int anyo;
}fecha;
int main(int argc, char *argv[])
{
//variables
int Edad;
int error=0;
fecha Fnacimiento;
fecha Factual;
fecha Fedad;
//pantalla presentacion
//ESTRUCTURA VISIBLE - PEDIR FECHAS
clrscr ();
gotoxy (2,2);
printf ("Introducir - Fecha de Nacimiento :");
gotoxy (2,4);
printf ("Introducir - Fecha Actual : \n\n\n\n\n\n");
//Pedir fecha de nacimiento en Fecha de Nacimiento
gotoxy (37,2);
scanf (" %d" ,&Fnacimiento.dia);
gotoxy (39,2);
printf ("/");
gotoxy (40,2);
scanf (" %d" ,&Fnacimiento.mes);
gotoxy (42,2);
printf ("/");
gotoxy (43,2);
scanf (" %d" ,&Fnacimiento.anyo);
//comprobar que este sea correcta la introduccion
if (Fnacimiento.mes12)
error=1;
else if (Fnacimiento.dia31)
error=1;
else
//comprobar dia en mes de 30 dias
switch (Fnacimiento.mes) {
case 4:
case 6:
case 9:
case 11:
if (Fnacimiento.dia>30)
error=1;
break;
//comprobar Febrero
case 2:
if (Fnacimiento.dia>28)
error=1;
break;
}
//Pedir fecha de actual en Fecha de Actual
gotoxy (30,4);
scanf (" %d" ,&Factual.dia);
gotoxy (32,4);
printf ("/");
gotoxy (33,4);
scanf (" %d" ,&Factual.mes);
gotoxy (35,4);
printf ("/");
gotoxy (36,4);
scanf (" %d" ,&Factual.anyo);
//comprobar que este sea correcta la introduccion
if (Factual.mes12)
error=1;
else if (Factual.dia31)
error=1;
else
//comprobar dia en mes de 30 dias
switch (Factual.mes) {
case 4:
case 6:
case 9:
case 11:
if (Factual.dia>30)
error=1;
break;
//comprobar Febrero
case 2:
if (Factual.dia>28)
error=1;
break;
}
//FIN ESTRUCTURA VISIBLE PEDIR FECHAS
Fedad.dia=Factual.dia-Fnacimiento.dia;
Fedad.mes=Factual.mes-Fnacimiento.mes;
Fedad.anyo=Factual.anyo-Fnacimiento.anyo;
//si es un Bebe ...años menor1
if (Factual.anyo-Fnacimiento.anyo==0) {
if (Factual.dia-Fnacimiento.dia<0);
switch (Fnacimiento.mes){
case '4':
case '6':
case '9':
case '11':
Fedad.mes--,Fedad.dia=Fedad.dia+30;
break;
case '2':
Fedad.mes--,Fedad.dia=Fedad.dia+28;
break;
}
(Fedad.mes--,(Fedad.dia=Fedad.dia+31));
printf ("\n La edad es ...: %d Meses / %d Dias \n" ,Fedad.mes,Fedad.dia);
}else
printf ("\n La edad es ...: %d Anyos \n ",Factual.anyo-Fnacimiento.anyo);
system("PAUSE");
return 0;
}