SoloCodigo
		Programación General => C/C++ => Mensaje iniciado por: eLPortaFrases en Domingo 18 de Noviembre de 2012, 21:01
		
			
			- 
				Saludos, soy muy nuevo en el ambito de la programacion, digamos que empeze anoche.
 Hay un ejemplo del Libro de Lenguaje C de Luis Joyages que no me compila en Turbo C.
 
 Me da: ERROR: DECLARATION SYNTAX ERROR
 
 Problema:
 Se desea obtener una tabla con las depreaciaciones acumuladas y los valores realdes de cada año, de un automóvil comprado en 1.800.000 pesetas en el año 1988, durante los seis años siguientes suponiendo un valor de recuperación o rescate de 120.000. Realizar el análisis del problema, conociendo la fórmula de
 depreciación anual constante D para cada año de vida útil.
 
 D = (coste - valor de recuperación) / vida útil
 D = (1.800.000 - 120.000) / 6 = 1.680.000 / 6 = 280.000
 
 La tabla siguiente muestra la salida solicitada.
 
 Año        Depreciación     Depreciación      Valor anual
 acumulada
 1 (1988)   280.000            280.000         1.520.000
 2 (1989)   280.000            560.000         1.240.000
 3 (1990)   280.000            840.000            960.000
 4 (1991)   280.000          1.120.000           680.000
 5 (1992)   280.000          1.400.000           400.000
 6 (1993)   280.000          1.680.000           120.000
 
 Pseudocódigo del programa 1.1
 =============================
 
 Previsiones de depreciación
 Introducir coste
 vida util
 valor final de rescate (recuperacion)
 imprimir cabeceras
 Establecer el valor inicial del Año
 Calcular depreciacion
 mientras valor año =< vida util hacer
 calcular depreciacion acumulada
 calcular valor actual
 imprimir una linea de la tabla
 incrementar el valor del año
 fin de mientras
 
 Y FINALMENTE HE AQUI LOS CODIGOS DEL LIBRO
 /*
 Este programa obtiene una tabla de depreciaciones acumuladas y valores reales de cada anio de un determinado producto
 */
 #include <stdio.h>
 Void main ()
 {
 Double Coste, Depreciacion,
 Valor_Recuperacion,
 Valor_actual,
 Acumulado,
 Valor_Anual;
 Int Anio, Vida_Util;
 Puts (“Introduzca coste, valor_Recuperacion y vida_util”);
 Scanf (“%lf %lf %lf”, &Coste, &Valor_Recuperacion, &Vida_Util);
 Puts (“Introduzca anio actual”);
 Scanf (“%d”, &Anio);
 Valor_Actual = Coste;
 Depreciacion = (Coste – Valor_Recuperacion) / Vidad_Util;
 Acumulado = 0;
 Puts  (“Añio Depreciacion Dep. Acumulada”);
 While (Anio < Vida_Util)
 {
 Acumulado = Acumulado + Depreciacion;
 Valor_Actual = ValorActual – Depreciacion;
 Printf (“Anio: %d, Depreciacion:%.21f, %.21f Acumulada”,
 Anio, Depreciacion, Acumulado);
 Anio = Anio + 1;
 }
 }
 
 ESTE MISMO TEMA DE ESTE MISMO PROBLEMA FUE RESUELTO EN EL SIGUIENTE LINK: http://solocodigo.com/39361/no-compila-problema-de-ejemplo-de-joyanes-aguilar/
 
 PERO EN EN ESA OCACION EL PROBLEMA ERA BASADO EN PASCAL.
 YO TENGO LO MISMO PERO PARA LENGUAJE C ...
 
 POR FAVOR SE LOS AGRADECERE MUCHO!!!!
 
- 
				Hola eLPortaFrases, bienvenido al foro.
 
 Antes que nada unos consejos:
 
 1. Por favor no escribas todo en mayusculas, ya que eso equivale a como si nos estuvieras gritando.
 2. Utiliza las etiquetas de code (hay un icono con un # que dice insertar codigo), cuando publiques un programa, ya que eso mejora su legibilidad
 
 Dicho eso, vamos al problema.
 
 Bueno, no tengo el libro de Luis Joyanes Aguilar, asi que no se si realmente el codigo esta exactamente igual que en el libro, o lo copiaste mal, pero si puedo decirte que hay varios errores.
 
 1. La funcion main() nunca se pone como void, el tipo siempre sera int, y es neecsario añadir un return 0 al final de la funcion main().
 
 2. Las siguientes palabras son palabras reservadas de C y funciones de C, y siempre se escriben todo con minusculas, nunca con mayusculas o mezcla de mayusculas/minusculas: double, int, puts, scanf, while, printf. Esas son algunas pero no son todas las palabras reservadas de C y funciones de C, deberas revisar siempre cuales son y escribirlas siempre en minusculas.
 
 3. Los simbolos “ y –, estan equivocados, deberas utilizar siempre " y - (signo de menos)
 
 4. La variable Valor_Actual la escribes de diferentes maneras, a veces en minusculas, a veces sin guion y a veces con guion, cuando defines una variable en C siempre debes utilizarla exactamente igual a como la defines en tu lista de variables, ya que si no te dara errores de sintaxis
 
 Dicho eso te dejo el codigo con las correcccones.
 /*
 Este programa obtiene una tabla de depreciaciones acumuladas y valores reales de cada anio de un determinado producto
 */
 #include <stdio.h>
 int main ()
 {
 double Coste, Depreciacion,
 Valor_Recuperacion,
 Valor_Actual,
 Acumulado,
 Valor_Anual;
 int Anio, Vida_Util;
 puts ("Introduzca coste, valor_Recuperacion y vida_util");
 scanf ("%lf %lf %lf", &Coste, &Valor_Recuperacion, &Vida_Util);
 puts ("Introduzca anio actual");
 scanf ("%d", &Anio);
 Valor_Actual = Coste;
 Depreciacion = (Coste - Valor_Recuperacion) / Vida_Util;
 Acumulado = 0;
 puts  ("Añio Depreciacion Dep. Acumulada");
 while (Anio < Vida_Util)
 {
 Acumulado = Acumulado + Depreciacion;
 Valor_Actual = Valor_Actual - Depreciacion;
 printf ("Anio: %d, Depreciacion:%.21f, %.21f Acumulada",
 Anio, Depreciacion, Acumulado);
 Anio = Anio + 1;
 }
 
 return 0;
 }
 
 Saludos :)
- 
				Muchas gracias, seguiré las reglas
 Gracias a usted ya pude compilar el el programa,
 pero hay un pequeño inconveniente:
 
 cuando inicio me dice Introduzca Coste, Valor_Recuperacion y Vida Util ... ahi vamos bien
 cuando introduzco esos 3 valores me dice que Introduzca el Año, para proseguir con el calculo
 
 y cuando introduzco el año ..
 por ejemplo
 2
 Me dice >
 Floating point error: divide by 0.
 y me saca del programa
 
 Que significa eso?
 
 Gracias por lo anterior, y gracias doy de antemano, ya que esto es muy importante para mi
 
- 
				El mismo error te lo esta diciendo:
 
 Floating point error: divide by 0.
 
 No es posible dividir por cero,
 
 http://es.wikipedia.org/wiki/Divisi%C3%B3n_por_cero
 (http://es.wikipedia.org/wiki/Divisi%C3%B3n_por_cero)
 el resultado de la divison por cero se considera intederminado, y por lo tanto el progama se aborta
 
 
 Revisa los valores que capturas y verifica que no dividas por cero, en este caso me parece que el valor que no puede ser cero es el de vida util.
 
 Saludos :)