Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[AYUDA] Ejercicio 31 Algoritmos y Estructura de datos en c++
Autor Mensaje
agustinjb Sin conexión
Profesor del Modulo A
Con estado :)
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 272
Agradecimientos dados: 69
Agradecimientos: 10 en 3 posts
Registro en: Aug 2012
Mensaje: #1
[AYUDA] Ejercicio 31 Algoritmos y Estructura de datos en c++ Otro Algoritmos y Estructuras de Datos
Buenas, tengo el ejercico 31 que entregar en c++ y me encuentro con un problema. primero que estoy usando vectores y nose si se puede (anteriormente me dijo el profesor que no), pero para este caso no veo forma de resolver un punto sin crear un vector, e aqui la ayuda que ando buscando, sin contar que nose porque hay una parte que no me funciona como espero y no se porque.


ejercicio 31:
El gobierno de la Ciudad de Buenos Aires realiza una encuesta en casas de familia. De cada familia conoce: domicilio, tipo de vivienda ('C':casa, 'D':departamento), y cantidad de integrantes.
De cada integrante de la familia se conoce: nombre y apellido, edad, sexo ('F', 'M'), nivel de estudios alcanzados ('N': no posee, 'P': primario, 'S': secundario, 'T': terciario, 'U': universitario), y un indicador ('I': incompleto, 'C': completo) que se refiere al ítem anterior.
Los datos finalizan cuando la cantidad de integrantes sea igual a cero.
Se pide emitir un listado con los resultados:
a) los datos de los encuestados que hayan completado los estudios primarios //Este es el que no veo como hacer sin usar un vector para almacenar todos los datos de las personas con estudios primarios, porque no pide el numero de gente, sino sus datos (nombre, apellido, domicilio, tipo de vivienda)
b) el porcentaje de analfabetismo en la ciudad (se considera analfabetos a los mayores de 10 años que no posean estudios)
c) el domicilio de la familia con mayor cantidad de integrantes que viven en departamento
d) edad promedio de cada familia y de la ciudad
e) cantidad de encuestados en cada tipo de nivel de estudios alcanzados incompletos.
f) porcentaje de encuestados de sexo femenino y masculino.


aca va el codigo



#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdio.h>
using namespace std;

int main() {

int f = 9999;
int familias[f];
int n = 1;
int integrantes[n]; //integrantes
int C = 0;//casa
int D = 0;//departamento
char nombre[20];
char apellido[30];
int edad = 0;
int sFem = 0;//Sexo Femenino
int sMas = 0;//Sexo Masculinto
int estN = 0;//estudios no posee
int estP = 0;//estudios primario
int estS = 0;//estudios secundario
int estT = 0;//estudios terciario
int estU = 0;//estudios universitario
char estCompletos[10];
char estincompletos[10];
int selector = 0;
int i;
int j;

while(n!=0){//while mientras los integrantes sean distinto que 0

for(i =0; i<f; i++){//recorre el array familias

cout<<"Ingrese el/los Apellido/s de la famillia"<<"\n"; //Pregunta el apellido del a familia
gets(apellido);//Almacena el apellido para luego informar la familia "apellido"
cout<<"Cuantos integrantes tiene la familia "<<apellido<<" ?"<<"\n";//pregunta la cantidad de ingresantes de la familia "apellido"
cin>>n;//asigna los integrantes para cortar o no el while y recorrer el array

for(j=0; j<n; j++){//llena los datos de cada integrante
cout<<"Nombre del integrnate?"<<"\n";
gets(nombre);
cout<<"Sexo del integrante? (ingrese el indice)"<<"\n";//pregunta el sexo
cout<<"1. Masculino"<<"\n";
cout<<"2. Femenino"<<"\n";
cin>>selector;//contador de masculno y femenenino
if(selector = 1){
sMas++;//contador de masculinos
}else if (selector = 2){
sFem++;//contador de femeninos
}else if (selector!=1 || selector!=2){//valida indice invalido
cout<<"Ingrese un indice valido"<<"\n";
}
}
}
}
}


El problema que tengo con el codigo, es que cuando pido ingresar el apellido y usa el gets, almacena correctamente el apellido ingresado en "apellido"

luego pregunta cuantos integrantes hay, luego de dar una entrada distinta de 0, sino el programa es terminado por el while,

me deberia de preguntar el nombre del primer integrante y capturar el nombre con el gets en la variable "nombre"
pero sucede que dice

"Nombre del integrante?" -y sin esperar a ingresar el nombre tira el texto de seleccion de sexo-

Porque? no deberia esperar ingresar algo, capturarlo con el gets y luego pedir el sexo como hizo con el apellido?,

al codigo le falta casi todo pero ya con ese minimo problema no puedo seguir, ademas del tema con los vectores.

gracias!
26-05-2016 12:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
missmetal Sin conexión
Profesor del Modulo A
GG IZI
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 215
Agradecimientos dados: 146
Agradecimientos: 59 en 27 posts
Registro en: Mar 2011
Mensaje: #2
RE: [AYUDA] Ejercicio 31 Algoritmos y Estructura de datos en c++
Hola! estuve mirando tu código y lo que podría aportar es esto:
- El ejercicio no entra en arrays así que no tendrías que usarlos.
En la parte de mostrar los datos de los que terminaron los estudios, a la hora de hacer la validación, antes de que pase al siguiente integrante, mostras por pantalla los datos.
- ¿Por qué pedís el sexo como un valor numérico? Tenés que declarar un char sexo y validarlo con un case, es más fácil



char sexo;
cout << "ingrese sexo"<< endl;
cin >> sexo;
switch(sexo)
{
case 'F': case 'f':
sFem++;
break;
case 'M': case 'm':
sMas++;
break;
default:
cout<<"Ingrese un indice valido"<<endl;
}



Antes de pedir el nombre pasale un cin.ignore() para que borre lo que esta dentro de cin
y después ahí sí pasas cin>>nombre

Espero haberte ayudado
Saludos!

26-05-2016 15:47
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
agustinjb Sin conexión
Profesor del Modulo A
Con estado :)
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 272
Agradecimientos dados: 69
Agradecimientos: 10 en 3 posts
Registro en: Aug 2012
Mensaje: #3
RE: [AYUDA] Ejercicio 31 Algoritmos y Estructura de datos en c++
(26-05-2016 15:47)missmetal escribió:  Hola! estuve mirando tu código y lo que podría aportar es esto:
- El ejercicio no entra en arrays así que no tendrías que usarlos.
En la parte de mostrar los datos de los que terminaron los estudios, a la hora de hacer la validación, antes de que pase al siguiente integrante, mostras por pantalla los datos.
- ¿Por qué pedís el sexo como un valor numérico? Tenés que declarar un char sexo y validarlo con un case, es más fácil



char sexo;
cout << "ingrese sexo"<< endl;
cin >> sexo;
switch(sexo)
{
case 'F': case 'f':
sFem++;
break;
case 'M': case 'm':
sMas++;
break;
default:
cout<<"Ingrese un indice valido"<<endl;
}



Antes de pedir el nombre pasale un cin.ignore() para que borre lo que esta dentro de cin
y después ahí sí pasas cin>>nombre

Espero haberte ayudado
Saludos!

Si justo ayer vi eso, se puede mejorar con eso y vi como resolver los otros puntos, con contadores y almacenando maximos.. pero sigo con el problema de mostrar todos los datos de los analfabetos, porque de algun modo hay que almacenarlo pero sin un array no veo como... encima el profe no deja usar metodos orientados a objetos ni nada fuera de lo super basico y me la complica el doble jaja
27-05-2016 08:55
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
viktorxD Sin conexión
Profesor del Modulo A
bit.ly/viktorclases
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 354
Agradecimientos dados: 92
Agradecimientos: 559 en 121 posts
Registro en: May 2013
Mensaje: #4
RE: [AYUDA] Ejercicio 31 Algoritmos y Estructura de datos en c++
tenes que usar listas seguramente.

Porque no sabes de antemano cuantos datos vas a tener que guardar.
Para que armar un vector de 1000 posiciones si por ahi solo vas a guardar 2 registros.
armas una lista dinámica, que según el caso si solo van a ser 2 o 1000 se va creando.

Cursos Ingreso UTN, Análisis Matemático I
Contacto: viktorclases
Grupos de CONSULTAS
LinksGruposDeFacebook
LinksGruposDeTelegram
27-05-2016 20:08
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
agustinjb Sin conexión
Profesor del Modulo A
Con estado :)
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 272
Agradecimientos dados: 69
Agradecimientos: 10 en 3 posts
Registro en: Aug 2012
Mensaje: #5
RE: [AYUDA] Ejercicio 31 Algoritmos y Estructura de datos en c++
(27-05-2016 20:08)viktorxD escribió:  tenes que usar listas seguramente.

Porque no sabes de antemano cuantos datos vas a tener que guardar.
Para que armar un vector de 1000 posiciones si por ahi solo vas a guardar 2 registros.
armas una lista dinámica, que según el caso si solo van a ser 2 o 1000 se va creando.

me podrias tirar un ejemplo de com oseria? la verdad nunca vi algo asi jaja ni mucho entiendo tampoco.. yo no entiendo usan un lenguaje orientado a objetos y no podes usar cosas orientadas a objetos...
30-05-2016 08:08
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
matias.d Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: May 2016
Mensaje: #6
RE: [AYUDA] Ejercicio 31 Algoritmos y Estructura de datos en c++
me parece que algo asi serviria.


int estudiosprimarios=0;
char estudios, resultado;
cout << "Ingrese nivel de estudios alcanzados" << endl;
cin >> estudios;
cout << "i = Incompleto " << endl;
cout << "c = Completo " << endl;
cin >> resultado;
switch(estudios)
{
case 's': case 't':case 'u':
estudiosprimarios++;
break;
}
if( (estudios=='p') && (resultado=='c') )
{
estudiosprimarios++;
}

31-05-2016 16:52
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)