Autor
|
Tema: Problema ejercicio básico. Lenguaje C. (Leído 2,783 veces)
|
Healsy
Desconectado
Mensajes: 3
|
¡Buenos días a todos! Tengo como consigna este ejercicio:ingresar un conjunto de 20 personas y solamente contabilizar aquellos que tengan edad comprendida entre 18 y 45. Recién estoy empezando en esto ayer empece a investigar así que perdonen. La verdad no se que hago mal, hay veces que me pide 5 datos cuando ingreso numeros muy altos, y cuando ingreso bajos solo me pide 4. Código (lo realice con 4 personas para no tener que estar ingresando tantos datos). #include<stdio.h>
int main (){ int ed=0,i=0,cont=0;
printf ("Ingrese la edad de 4 personas (el programa contabilizara solo las que esten comprendidas entre 18 y 45):\n");
for (i=0;i<4;i++) {scanf ("%i",&ed);
if (ed>=18 && ed<=45) { cont++; scanf ("%i",&ed); } } printf ("La cantidad de personas comprendidas en el rango pedido es de: %d",cont);
return 0; }
|
|
|
En línea
|
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
No funcionaba porque o tienes que inicializar una cantidad de variables igual a la cantidad de datos que ingresas, o creas una colección de posiciones en las cuales guardaras esos valores, de igual manera, con una cantidad de posiciones igual a los valores que necesitas guardar. Para ello, se puede usar arreglos, vectores, punteros...aquí un ejemplo sencillo con arreglos, como estoy usando esa basura de dev c++, tengo que usar el estandar c11, pero igual sirve. #include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { int edad[4]; // Arreglo de cuatro posiciones --> Edad [ valorEdad1, valorEdad2, valorEdad3, valorEdad4 ] int edadEscaneada; // variable temporal para grabar las edades, luego comprobar si esta en el rango int contador=0; printf ("Ingrese la edad de 4 personas:\n"); printf ("Digite solo edades entre 18 y 45 años:\n"); int i; for (i=0;i<4;i++) { scanf ("%d", &edadEscaneada ); if (edadEscaneada>=18 && edadEscaneada<=45) { edad[i] = edadEscaneada; contador++; } } printf ("La cantidad de personas comprendidas en el rango pedido es de: %d \n\n", contador ); for (i=0;i<4;i++) { if (edad[i] >=18 && edad[i] <=45) { printf ("Edad %d:\n", edad [i ]); } } return 0; }
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
for(i=0; i<4; i++) { if(ed>=18 && ed<=45) { cont++; scanf ("%i",&ed ); // <-- Te sobra esta instrucción } }
Cuando entres en el if al dar una edad que cumpla la condición, además de contabilizar, vas a pedir un dato que no se va a tener en cuenta porque al salir del if e iterar otra vez el bucle, vas a llegar al scanf del inicio que te machacará lo que hubiera puesto en el anterior en ed. Si sigues el flujo del programa verás que el segundo scanf no tiene razón de ser. Sobra. Por eso te pedía datos de más.
|
|
|
En línea
|
|
|
|
Healsy
Desconectado
Mensajes: 3
|
Muchisimas gracias a los dos, cualquier duda que me surga con el ejercicio la pondré aquí. A la noche tendre la computadora para compilar.
Me dieron para que lo resuelva con los temas que se, y no llegamos a la parte de vectores de todas formas voy a investigar ese tema.
|
|
« Última modificación: 5 Octubre 2016, 20:28 pm por Healsy »
|
En línea
|
|
|
|
Healsy
Desconectado
Mensajes: 3
|
Ya logre compilar y efectivamente ese era el error lo imagine como si fuese un while por eso agregue un scanf adentro. Tengo otra duda no entiendo el siguiente ejercicio. Escriba un programa que informe la cantidad de bytes que utiliza la PC para almacenar cada uno de los distintos tipos de variables: int, float, char, doublé, long. El programa debe tener una salida aceptable con las aclaraciones correspondientes y buena presentación. Busque en internet y encontré esto pero no logro relacionarlo (no creo que el ejercicio sea mostrar en un printf estos datos). int Cantidad entera 2 bytes o una palabra (varía según compilador). char Carácter 1 byte. float Almacena valores reales en punto flotante. 1 palabra (4 bytes). double Almacena valores reales en doble precisión. 2 palabras (8 bytes).
Gracias de antemano por la ayuda.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Busca sobre el operador sizeof, es lo que necesitas.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ejercicios básicos C#
« 1 2 3 »
.NET (C#, VB.NET, ASP)
|
~~
|
25
|
169,423
|
4 Marzo 2016, 01:50 am
por nosky
|
|
|
Ejercicios Basicos en C#
Ejercicios
|
Choclito
|
2
|
65,787
|
17 Octubre 2012, 22:14 pm
por jac88
|
|
|
Ejercicios Básicos
« 1 2 »
Ejercicios
|
Myth.ck
|
16
|
18,568
|
28 Mayo 2009, 09:27 am
por Eliptico
|
|
|
ejercicios basicos .net
« 1 2 »
.NET (C#, VB.NET, ASP)
|
leliCabello
|
12
|
12,562
|
24 Marzo 2010, 23:14 pm
por Shell Root
|
|
|
EJERCICIOS BASICOS C++
« 1 2 »
Ejercicios
|
WiseHidden
|
13
|
41,942
|
27 Mayo 2011, 05:26 am
por civans89
|
|