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

Vectores y Struct

Estas en el tema de Vectores y Struct en el foro de C/C++ en Foros del Web. El programa debe tener lo siguiente: Crear un programa que permita ingresar 15 datos, la TEMPERATURA PROMEDIO y CIUDAD a la que pertenece. Se desplegar ...
  #1 (permalink)  
Antiguo 14/07/2011, 22:14
 
Fecha de Ingreso: julio-2011
Mensajes: 1
Antigüedad: 12 años, 9 meses
Puntos: 0
Vectores y Struct

El programa debe tener lo siguiente:

Crear un programa que permita ingresar 15 datos, la TEMPERATURA PROMEDIO y CIUDAD a la que pertenece. Se desplegar un menu con las opciones:Ingresar Datos al vector, Consulta de temperatura por CIUDAD, Mayor temperatura, Menor temperatura, Temperatura promedio, Temperaturas más cercanas a la media, Salir

En todos los casos desplegar la CIUDAD a la que pertenece la temperatura.

El codigo me va quedando algo así:
#include<stdio.h>
#include<conio.h>
#define TEMP 15
struct temperatura{
int temp_prom;
char ciudad[10];
};
void menu(void);
void ingresar(struct temperatura temp[]);
//void consulta(struct temperatura temp[]);

void mayor(struct temperatura temp[]);
void menor(struct temperatura temp[]);
void promedio(struct temperatura temp[]);
void cercana (struct temperatura[]);
void menu(void){
clrscr();
printf("\n\n\n\t\t1 - Ingresar Datos al vector");
printf("\n\t\t2 - Consuta de temperatura por CUIDAD");
printf("\n\t\t3 - Mayor temperatura");
printf("\n\t\t4 - Menor temperatura");
printf("\n\t\t5 - Temperatura promedio");
printf("\n\t\t6 - Temperaturas mas cercanas a la medida");
printf("\n\n\t\t7 - Salir");
}
void ingresar(struct temperatura temp[TEMP]){
int i;
for(i=0;i<16;i++){
clrscr();
printf("\n\n\n\t\tIngrese TEMPERATURA PROMEDIO");
scanf("%i",&temp[i].temp_prom);
flushall();
printf("\n\n\n\t\tIngrese CIUDAD");
gets(temp[i].ciudad);
}

}
//void consulta(struct temperatura temp[15]) {
// clrscr();
// char auxi;
// int i;
// printf("Ingrese Ciudad");
// scanf("%c",&auxi);
// for(i=0;i<TEMP;i++){
// if(temp[i].ciudad[i]==auxi)
// printf("%i",temp[i].temp_prom[i]);
//
// // }
void mayor(struct temperatura temp[TEMP]){

clrscr();
int mayor,i;
mayor=temp[0].temp_prom;
char *ciudad;
for(i=0;i<16;i++)
if(temp[i].temp_prom>mayor){
mayor=temp[i].temp_prom;
ciudad=temp[i].ciudad;
}
printf("\n\tNumero mayor %i en %s",mayor,ciudad);

}
void menor (struct temperatura temp[TEMP]){
clrscr();
int menor,i;
menor=temp[0].temp_prom;
char *ciudad;
for(i=0;i<16;i++)
if(temp[i].temp_prom<menor){
menor=temp[i].temp_prom;
ciudad=temp[i].ciudad;
}
printf("\n\tNumero mayor %i en %c",menor,ciudad);

}
void promedio(struct temperatura temp[TEMP]){
int i,promedio=0;
for(i=0;i<TEMP;i++)
promedio=promedio+(temp[i].temp_prom);
promedio=promedio/TEMP;
printf("\n\t\tPromedio de Temperaturas: %i",promedio);

}
void cercana(struct temperatura temp[TEMP]){
int i,media=0,vec_auxi[TEMP],cerca;
for(i=0;i<TEMP;i++)
media=media+(temp[i].temp_prom);
media=media/TEMP;
for(i=0;i<TEMP;i++)
if(temp[i].temp_prom)
vec_auxi[i]=(temp[i].temp_prom)-media;
else
vec_auxi[i]=media-(temp[i].temp_prom);
cerca=vec_auxi[i];
for(i=0;i<TEMP;i++)
if(vec_auxi[i]<cerca)
menor=vec_auxi[i];
printf("\n\tcerca %i", menor);
}


void main(){
struct temperatura temp[15];
int op;
do{
clrscr();
menu();
scanf("%i",&op);
flushall();
if((op>=1)&&(op<=7)){
switch(op){
case 1: ingresar(temp);
break;
// case 2: consulta(temp);
// break;
case 3: mayor(temp);
break;
case 4: menor(temp);
break;
case 5: promedio(temp);
break;
// case 6: cercana(temp);
//
// break;
}
}
else
if(op!=7){
printf("\n\n\tError, opcion invalida!");
getch();
}
}while(op!=7);
}

LAs funciones que me funcionan bien son la del menu y la de ingreso
pero las el resto, por ejemplo cuando tengo que escojer una de las opciones solo sirve la 1 las demás no las "detecta" , debe haber un error que he dejado pasar, pero no lo encuentro,

ahora bien, para las funcion consulta, me he entreverado al momento de hacerla por eso está comentada,,,, idea como hacerlo¿

por ultimo la funcion de cercana, como puedo hacer eso¿¿¿¿?????


Muchisimas Gracias!!

Agradezco Muchissimo respuesta

;)
  #2 (permalink)  
Antiguo 15/07/2011, 11:43
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Vectores y Struct

A mi el tema de las opciones me andan de 10...solo tenes un problema con el menor y mayor..que si la menor o la mayor esta en la primera posicion no te dice el nombre de la ciudad ya que nunca se asigna, poorque el if nunca entra por ser mayor o menor estricto.

Con respecto a la consulta deberias primero de todo con gets tomar el nombre de la ciudad como lo venias haciendo y luego simplemente con strcmp comparas una cadena con la otra. Es sencillo trata de hacerlo y nos cuenta comom te fue.

Etiquetas: funcion, programa, struct, vectores
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 18:50.