planteamiento de problema

Iniciado por m@o_614, 2 Julio 2013, 03:59 AM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

Saludos, tengo que hacer el siguiente programa que dice:

Inicializar dos matrices, la primera tendra 5 escuelas y la segunda sus respectivas ciudades.
   Pedir una escuela a buscar y si se encuentra imprimir la ciudad donde se encuentra, si no se encuentra
   imprimir el letrero respectivo. Pedir una ciudad a buscar y si se encuentra imprimir las escuelas de
   dicha ciudad, si no se encuentra imprimir el letrero respectivo.

El problema es que creo que esta mal planteado y no se como exactamente quiere que haga las matrices, me dice que en una matriz ingrese 5 escuelas pero eso no seria mas bien un vector???? y luego me dice que si le doy una ciudad a buscar me tiene que imprimir las escuelas de dicha ciudad, pero que no eran 5 escuelas cada una con su respectiva ciudad, no entiendo lo que me quiere decir si alguien me pudiera ayudar a entender

de antemano gracias

engel lex

bueno... 2 matrices de una dimensión XD (o tal vez asume que como son arrays de arrays de caracteres, son metrices (?) digo yo)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

m@o_614

si creo que se refiere mas a dos listas una con las escuelas y otra con las ciudades, pero tengo una ultima duda. Por cada ciudad tengo que ponerle 5 escuelas o son solo 5 escuelas y cada una con su ciudad respectiva???

engel lex

analizando tu pregunta me da que las ciudades es un vector y las escuelas una matriz...

CitarPedir una ciudad a buscar y si se encuentra imprimir las escuelas

varias por cada ciudad
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

eferion

También podrías tratarlo como un vector usando estructuras.

rir3760

Lo primero que debes indicar es el lenguaje de programación.

Cita de: m@o_614 en  2 Julio 2013, 03:59 AMInicializar dos matrices, la primera tendra 5 escuelas y la segunda sus respectivas ciudades.
Si se trata de C, Mas o menos así:
char *escuela[] = {
   "Lopez Portillo",
   "Miguel De la Madrid",
   ...
};
char *ciudad[] = {
   "Guadalajara",
   "Guadalajara",
   "Monterrey",
   ...
};

Los nombres de las escuelas deben ser únicos, los de las ciudades no.

Cita de: m@o_614 en  2 Julio 2013, 03:59 AMPedir una escuela a buscar y si se encuentra imprimir la ciudad donde se encuentra, si no se encuentra imprimir el letrero respectivo.
Eso lo implementas con un bucle:
for (i = 0; i < 5 && strcmp(escuela[i], buscar) != 0; i++)
   ;
if (i != 5){
   /* Imprimir la ciudad con indice "i" */
}else {
   /* Indicar que la escuela no se encontro */
}


Cita de: m@o_614 en  2 Julio 2013, 03:59 AMPedir una ciudad a buscar y si se encuentra imprimir las escuelas de dicha ciudad, si no se encuentra imprimir el letrero respectivo.
Un bucle donde recorres el array de ciudades, si coincide la imprimes y tomas nota con una bandera. Al final del bucle revisas la bandera para conocer si al menos una ciudad coincidió:
existe = 0;
for (i = 0; i < 5; i++)
   if (strcmp(ciudad[i], buscar) == 0){
      existe = 1;
     
      /* La ciudad existe, imprimir la escuela correspondiente */
   }
if (!existe){
   /* Indicar que la ciudad no existe en el array */
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

eferion

Cita de: rir3760 en  2 Julio 2013, 16:54 PM
Si se trata de C, Mas o menos así:
char *escuela[] = {
  "Lopez Portillo",
  "Miguel De la Madrid",
  ...
};
char *ciudad[] = {
   "Guadalajara",
   "Guadalajara",
   "Monterrey",
   ...
};

Los nombres de las escuelas deben ser únicos, los de las ciudades no.

Y ahí exactamente cómo sabes qué escuelas se encuentran en cada ciudad ???

Aparte que no tengo yo muy claro que las ciudades deban repetir nombres... si tienes que poner el nombre de una ciudad e indicar las escuelas que se encuentran en dicha ciudad... cómo distingues entre dos ciudades que se llaman igual ???

Para hacer eso necesitas listas enlazadas

Código (cpp) [Seleccionar]

struct escuela
{
  char nombre[ 20 ];
};

struct ciudad
{
  char nombre[ 20 ];
  int num_escuelas; // para saber cuantas escuelas tiene la ciudad actual
  struct escuela *escuelas[10]; // lista de punteros
};

struct escuela escuelas[ 10 ]; // Lista para las escuelas
struct ciudad ciudades[ 10 ]; // Lista de ciudades


o algo así... pero dos vectores inconexos sin otro que los relacione... no se

rir3760

Cita de: eferion en  2 Julio 2013, 17:10 PMY ahí exactamente cómo sabes qué escuelas se encuentran en cada ciudad ???
Me parece que se trata de un ejercicio sencillo, la parte clave del enunciado es:
CitarInicializar dos matrices, la primera tendra 5 escuelas y la segunda sus respectivas ciudades.
Yo supongo se deben declarar dos arrays de arrays de caracteres (usualmente los llaman "matrices"). El primero contiene los cinco nombres de las escuelas y el segundo los cinco nombres de las ciudades. Para conocer la escuela o ciudad correspondiente basta con utilizar el mismo indice.

Siendo estrictos la declaración de los arrays debería ser mas o menos así:
char escuela[5][20] = {
   "Lopez Portillo",
   "Miguel De la Madrid",
   "Lopez Mateos",
   "Benito Juarez",
   "Miguel Hidalgo"
};
char ciudad[5][20] = {
   "Guadalajara",
   "Guadalajara",
   "Monterrey",
   "Monterrey",
   "Merida"
};


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

eferion

Cita de: rir3760 en  2 Julio 2013, 17:48 PM
Me parece que se trata de un ejercicio sencillo, la parte clave del enunciado es:Yo supongo se deben declarar dos arrays de arrays de caracteres (usualmente los llaman "matrices"). El primero contiene los cinco nombres de las escuelas y el segundo los cinco nombres de las ciudades. Para conocer la escuela o ciudad correspondiente basta con utilizar el mismo indice.

Siendo estrictos la declaración de los arrays debería ser mas o menos así:
char escuela[5][20] = {
   "Lopez Portillo",
   "Miguel De la Madrid",
   "Lopez Mateos",
   "Benito Juarez",
   "Miguel Hidalgo"
};
char ciudad[5][20] = {
   "Guadalajara",
   "Guadalajara",
   "Monterrey",
   "Monterrey",
   "Merida"
};


Un saludo

Eso si, yo me refiero a la parte de...

Pedir una escuela a buscar y si se encuentra imprimir la ciudad donde se encuentra, si no se encuentra imprimir el letrero respectivo.

Y

Pedir una ciudad a buscar y si se encuentra imprimir las escuelas de dicha ciudad, si no se encuentra imprimir el letrero respectivo.


Ahí tienes que relacionar las escuelas con las ciudades y viceversa... en tu ejemplo eso no está contemplado ;)

CCross

Cita de: eferion en  2 Julio 2013, 18:24 PM
Pedir una escuela a buscar y si se encuentra imprimir la ciudad donde se encuentra, si no se encuentra imprimir el letrero respectivo.

Creo que que el amigo rir3760 ya propuso una solución, siendo estricto seria algo como esto

int i, existe = 0;
   char buscar[20] = "";

   scanf("%[^\n]s", buscar);

   for(i = 0; i < 5; i++){
       if(strcmp(escuela[i], buscar)==0){
         existe = 1;
         printf("Ubicacion: %s", ciudad[i]);
       }
   }
   if(!existe)
       printf("Escuela no encontrada\n");


Cita de: eferion en  2 Julio 2013, 18:24 PM
Pedir una ciudad a buscar y si se encuentra imprimir las escuelas de dicha ciudad, si no se encuentra imprimir el letrero respectivo.

Y la solucion a esta no varia mucho respecto a la anterior

int i, existe = 0;
   char buscar[20] = "";

   scanf("%[^\n]s", buscar);

   for(i = 0; i < 5; i++){
       if(strcmp(ciudad[i], buscar)==0){
         existe = 1;
         printf("%s\n", escuela[i]);
       }
   }
   if(!existe)
       printf("No existe Escuela en esa ciudad\n");


Saludos