Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Necesito ayuda por favor

Estas en el tema de Necesito ayuda por favor en el foro de C/C++ en Foros del Web. Bueno primero q todo reciban un cordial saludo de mi parte. lo q sucede es esto debo hacer un programa q averigue la edad de ...
  #1 (permalink)  
Antiguo 10/03/2007, 12:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 2
Antigüedad: 17 años, 1 mes
Puntos: 0
Necesito ayuda por favor

Bueno primero q todo reciban un cordial saludo de mi parte.
lo q sucede es esto debo hacer un programa q averigue la edad de la persona conociendo el año de nacimiento, pero nada de instrucciones complicadas solo hemos visto estas:

inicio,fin,sea,lea,imprima,si-entonces.

y esto es lo q he hecho, pero tengo un error y no me dice la edad, solo me dice q es 0 ayudenme por favor.

esto es lo q tengo:

#include<conio.h>
#include<stdio.h>
#define actual 2007

void main ()
{
int edad1;
int edad2;
int edad3;
int edad4;
int suma;
int edad;
printf ("digite su ano de nacimiento");
edad1 = getche();
edad2 = getche();
edad3 = getche();
edad4 = getche();
if (edad1< 1)printf ("fecha no valida");
else
(edad1 = edad1*1000);
if (edad2< 9)printf ("fecha no valida");
else
(edad2 = edad2*100);
if (edad3< 8)printf ("fecha no valida");
else
(edad3 = edad3*10);
if (edad4< 2)printf ("fecha no valida");
else
(edad4 = edad4*1);
suma = 0;
suma=edad4+edad3+edad2+edad1;
edad = 0;
edad=actual-suma;
printf ("su edad es:%d",edad);
getche();
clrscr();
}


gracias por la atencion prestada.
  #2 (permalink)  
Antiguo 10/03/2007, 12:48
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Necesito ayuda por favor

Perdon pero el codigo es horrible y especialmente no standard ... el problema es que getche te devuelve un numero ASCII y no un numero decimal asi que empeza por restarle el valor de '0' (48) para transformalo en decimal, tambien deberias comprobar que es realmente un numero ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 10/03/2007, 13:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 2
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Necesito ayuda por favor

tranquilo, no tienes por q disculparte ( total no es el fuerte de mi carrera ) y no estudio para se ing informantico, pero voy a intentar lo q me dices y mil gracias.

ya probé y si me funcionó, mil gracias!!!!!!

Última edición por Die_Role; 10/03/2007 a las 13:26
  #4 (permalink)  
Antiguo 11/03/2007, 11:10
 
Fecha de Ingreso: diciembre-2006
Mensajes: 13
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Necesito ayuda por favor

A modo de ejemplo te dejo una posible solución a la problematica planteada:
Código:
//#include<conio.h> obsoleta...
#include<stdio.h>
#include<stdlib.h>// libreria que define a la funcion system()

#define ACTUAL 2007
#define N 4 // la cantidad de cifras 

#define win32
#define linux	// en el foro se dio a conocer la utilidad de system 
#ifdef win32	// en este caso particular como un buen reemplazo de 
#define clrscr() system( "cls" );	//clrscr() de conio.
#else
#define clrscr() system( "clear" );
#endif

void CargarEdad(int edad[N])
{
	int i,mult=1000;

	for(i=0;i<N;i++)
	{
		edad[i]=getchar();// getchar lee caracteres - uno por vez
		edad[i]=(edad[i]-'0')*mult;
		mult/=10;
		if(i>0)
			edad[0]+=edad[i];
	}
	getchar();//elimina el enter
}

int main (void)
{
	int edad[N]; // arreglo-- por asi decirlo es un grupo de variables contiguas en memoria
				 // se accede a cada una de elllas con un indice encerrado entre [0] a [N-1]. -entre otras formas
	printf("Digite su anio de nacimiento ");
	CargarEdad(edad);// procedimiento de carga

	printf("anio de nacimiento= %i\n",edad[0]);


	while((edad[0] < 1982)||(edad[0] > ACTUAL)) // validacion
	{
		printf ("Fecha no valida (>=1982 y <= al anio actual) ");
		CargarEdad(edad);
	}

	
	edad[0]=ACTUAL-edad[0];
	printf ("Su edad es: %d\n",edad[0]);

	clrscr();
	return 0;
}

Última edición por Aprendiz-DAO; 11/03/2007 a las 11:17
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:56.