Hola, buen día a todos. <br>Estuve haciendo un programa para mi tarea en la universidad y las condiciones eran las siguientes: <div>-Crear un programa para agregar 3 recorridos para visitas guiadas, con 3 lugares a visitar cada uno con base a las estructuras siguientes:</div>
<div>Estructura Recorrido:</div><div>- Nombre del guia:</div><div>- Numero de personas</div><div>- Lugares que visita</div><div><br></div><div>Estructura Lugar</div><div>- Nombre</div><div>-Ubicacion</div><div><br></div><div>
Nota: utilizar apuntadores a esrtucturas, no utilizar arreglos de caracteres.</div><div><br></div><div>Hice el programa y quedó mas o menos así. Sin problema.</div><div><br></div><div><div><font face="courier new, monospace">#include <stdio.h></font></div>
<div><font face="courier new, monospace">#include <stdlib.h></font></div><div><font face="courier new, monospace">#include <string.h></font></div><div><font face="courier new, monospace"><br></font></div><div>
<font face="courier new, monospace">// Estructura para guardar la información de los lugares de cada recorrido</font></div><div><font face="courier new, monospace">typedef struct Lugar{</font></div><div><font face="courier new, monospace"> char *nombre;</font></div>
<div><font face="courier new, monospace"> char *ubicacion; </font></div><div><font face="courier new, monospace">}Lugar;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">// Estructura para guardar la información de los recorridos</font></div>
<div><font face="courier new, monospace">typedef struct Recorrido{</font></div><div><font face="courier new, monospace"> char *guia;</font></div><div><font face="courier new, monospace"> int numPersonas;</font></div>
<div><font face="courier new, monospace"> Lugar *lugaresVisita;</font></div><div><font face="courier new, monospace">}Recorrido;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">// Función para mostrar el menú de opciones después de crear un grupo de recorridos</font></div>
<div><font face="courier new, monospace">int Menu();</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">// Función que crea la cantidad de recorridos que se reciba como parámetro</font></div>
<div><font face="courier new, monospace">Recorrido* CrearRecorrido(int);</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">// Función que modifica el número de personas de un recorrido en particular</font></div>
<div><font face="courier new, monospace">void ModNumPer(Recorrido*);</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">// Función que muestra los lugares que más se repiten en un recorrido</font></div>
<div><font face="courier new, monospace">void ObtLugaresRep(Recorrido*, Recorrido*, Recorrido*);</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">// Función que muestra en pantalla los datos de cada recorrido y los lugares que visita </font></div>
<div><font face="courier new, monospace">void ImprimirRecorrido(Recorrido*, int); </font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">// Función para hacer una pausa en el programa</font></div>
<div><font face="courier new, monospace">void Pausa();</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">int main()</font></div><div><font face="courier new, monospace">{</font></div>
<div><font face="courier new, monospace"> system("cls"); system("color 4F");</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> Recorrido *recorrido1, *recorrido2, *recorrido3;</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> printf("\a\n === Visitas Guiadas ===\n\n");</font></div><div><font face="courier new, monospace"> printf(" Este programa permite crear 3 recorridos con\n" </font></div>
<div><font face="courier new, monospace"> " 3 lugares a visitar en cada uno. Agregar los\n"</font></div><div><font face="courier new, monospace"> " datos a contnuacion...\n");</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> recorrido1 = CrearRecorrido(1);</font></div><div><font face="courier new, monospace"> recorrido2 = CrearRecorrido(2);</font></div>
<div><font face="courier new, monospace"> recorrido3 = CrearRecorrido(3);</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> int opc;</font></div><div><font face="courier new, monospace"> do{</font></div>
<div><font face="courier new, monospace"> opc=Menu();</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> switch(opc)</font></div><div><font face="courier new, monospace"> {</font></div>
<div><font face="courier new, monospace"> case 1:</font></div><div><font face="courier new, monospace"> int n;</font></div><div><font face="courier new, monospace"> do{</font></div><div><font face="courier new, monospace"> printf("\n Para que # de recorrido?: ");</font></div>
<div><font face="courier new, monospace"> scanf("%d", &n);</font></div><div><font face="courier new, monospace"> }while(n>3 || n<1);</font></div><div><font face="courier new, monospace"> switch(n)</font></div>
<div><font face="courier new, monospace"> {</font></div><div><font face="courier new, monospace"> case 1: ModNumPer(recorrido1); ImprimirRecorrido(recorrido1,1); break;</font></div><div><font face="courier new, monospace"> case 2: ModNumPer(recorrido2); ImprimirRecorrido(recorrido2,2); break;</font></div>
<div><font face="courier new, monospace"> case 3: ModNumPer(recorrido3); ImprimirRecorrido(recorrido3,3); break;</font></div><div><font face="courier new, monospace"> }</font></div><div><font face="courier new, monospace"> </font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> break;</font></div><div><font face="courier new, monospace"> case 2:</font></div><div><font face="courier new, monospace"> ObtLugaresRep(recorrido1, recorrido2, recorrido3);</font></div>
<div><font face="courier new, monospace"> break;</font></div><div><font face="courier new, monospace"> case 3: exit(0);</font></div><div><font face="courier new, monospace"> break; </font></div>
<div><font face="courier new, monospace"> default: printf("\n Opcion invalida! ..."); Pausa();</font></div><div><font face="courier new, monospace"> break; </font></div><div><font face="courier new, monospace"> }</font></div>
<div><font face="courier new, monospace"> }while(opc!=3); </font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> return 0;</font></div><div><font face="courier new, monospace">}</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">int Menu()</font></div><div><font face="courier new, monospace">{</font></div><div><font face="courier new, monospace"> int opc;</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> system("cls"); </font></div><div><font face="courier new, monospace"> printf("\n === Otras opciones ===\n\n");</font></div>
<div><font face="courier new, monospace"> printf(" 1.- Modificar numero de personas en algun recorrido\n");</font></div><div><font face="courier new, monospace"> printf(" 2.- Obtener lugares repetidos en los recorridos\n");</font></div>
<div><font face="courier new, monospace"> printf(" 3.- Salir\n");</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> printf("\t\t\aOpcion: "); </font></div>
<div><font face="courier new, monospace"> scanf("%d", &opc);</font></div><div><font face="courier new, monospace"> system("cls"); </font></div><div><font face="courier new, monospace"> return opc;</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">void Pausa()</font></div>
<div><font face="courier new, monospace">{</font></div><div><font face="courier new, monospace"> printf("\a\n\n Presiona una tecla para continuar... ");</font></div><div><font face="courier new, monospace"> fflush(stdin);</font></div>
<div><font face="courier new, monospace"> getchar();</font></div><div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">Recorrido* CrearRecorrido(int i){</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> // Reservación de memoria para la estructura Recorrido</font></div><div><font face="courier new, monospace"> Recorrido *r= (Recorrido *)malloc(sizeof(Recorrido));</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> // Datos de los recorridos (de 2 a 3 recorrridos permitidos)</font></div>
<div><font face="courier new, monospace"> //for(int i=0;i<c;i++){</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> printf("\n\n === Recorrido %d ===\n", i);</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> // Reservación de memoria para los datos de la estructura</font></div><div><font face="courier new, monospace"> r->guia=(char *)malloc(sizeof(char)*30);</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> // Entrada de datos por el usuario</font></div><div><font face="courier new, monospace"> printf(" Nombre del guia: ");</font></div>
<div><font face="courier new, monospace"> fflush(stdin);</font></div><div><font face="courier new, monospace"> gets(r->guia);</font></div><div><font face="courier new, monospace"> printf(" Numero de personas: ");</font></div>
<div><font face="courier new, monospace"> scanf("%d", &r->numPersonas);</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> // Reservación de memoria para los 3 lugares del recorrido</font></div>
<div><font face="courier new, monospace"> r->lugaresVisita=(Lugar*)malloc(sizeof(Lugar)*3); </font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> printf("\n\n Cada recorrido visita tres lugares,\n presiona cualquier tecla para continuar \n o 1 para salir de la aplicacion: \n"); </font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> char c;</font></div><div><font face="courier new, monospace"> fflush(stdin);</font></div><div><font face="courier new, monospace"> c=getchar();</font></div>
<div><font face="courier new, monospace"> if(c==49) exit(0);</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> // Datos de los 3 lugares de cada recorrido</font></div>
<div><font face="courier new, monospace"> for(int j=0; j<3; j++)</font></div><div><font face="courier new, monospace"> { </font></div><div><font face="courier new, monospace"> // Reservación de memoria para los datos de los lugares </font></div>
<div><font face="courier new, monospace"> r->lugaresVisita[j].nombre=(char *)malloc(sizeof(char)*20);</font></div><div><font face="courier new, monospace"> r->lugaresVisita[j].ubicacion=(char *)malloc(sizeof(char)*50);</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> printf("\n === Lugar %d ===\n\n", j+1);</font></div><div><font face="courier new, monospace"> </font></div>
<div><font face="courier new, monospace"> // Entrada de datos por el usuario</font></div><div><font face="courier new, monospace"> printf(" Nombre del lugar: ");</font></div><div><font face="courier new, monospace"> fflush(stdin);</font></div>
<div><font face="courier new, monospace"> gets(r->lugaresVisita[j].nombre);</font></div><div><font face="courier new, monospace"> fflush(stdin);</font></div><div><font face="courier new, monospace"> printf(" Ubicacion: ");</font></div>
<div><font face="courier new, monospace"> gets(r->lugaresVisita[j].ubicacion);</font></div><div><font face="courier new, monospace"> }</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> system("cls");</font></div>
<div><font face="courier new, monospace"> return r;</font></div><div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">void ImprimirRecorrido(Recorrido *r, int n)</font></div>
<div><font face="courier new, monospace">{</font></div><div><font face="courier new, monospace"> printf("\n\n === Datos del Recorrido %d ===\n\n", n);</font></div><div><font face="courier new, monospace"> printf(" Guia: %s\n", r->guia);</font></div>
<div><font face="courier new, monospace"> printf(" Numero de personas: %d\n", r->numPersonas);</font></div><div><font face="courier new, monospace"> printf(" Lugares que visita: ");</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> for(int i=0; i<3; i++){ </font></div><div><font face="courier new, monospace"> printf("\n\n === Lugar %d ===\n", i+1);</font></div>
<div><font face="courier new, monospace"> printf(" Nombre: %s\n", r->lugaresVisita[i].nombre);</font></div><div><font face="courier new, monospace"> printf(" Ubicacion: %s\n", r->lugaresVisita[i].ubicacion);</font></div>
<div><font face="courier new, monospace"> }</font></div><div><font face="courier new, monospace"> Pausa();</font></div><div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">void ModNumPer(Recorrido *s)</font></div><div><font face="courier new, monospace">{</font></div><div><font face="courier new, monospace"> printf("\n\n === Cambio de datos ===\n");</font></div>
<div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> printf(" Nuevo numero de personas: ");</font></div><div><font face="courier new, monospace"> scanf("%d", &s->numPersonas);</font></div>
<div><font face="courier new, monospace"> printf("\a\n El numero de personas ha sido modificado correctamente :)\n");</font></div><div><font face="courier new, monospace"> Pausa(); </font></div><div><font face="courier new, monospace">}</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">void ObtLugaresRep(Recorrido *rec, Recorrido *rec2, Recorrido *rec3)</font></div><div><font face="courier new, monospace">{</font></div>
<div><font face="courier new, monospace"> printf("\n Los lugares que se repiten son: \n");</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> for(int j=0;j<3;j++)</font></div>
<div><font face="courier new, monospace"> {</font></div><div><font face="courier new, monospace"> for (int k=0; k<3; k++)</font></div><div><font face="courier new, monospace"> {</font></div>
<div><font face="courier new, monospace"> if(strcmp(rec->lugaresVisita[j].nombre, rec2->lugaresVisita[k].nombre)==0 || strcmp(rec2->lugaresVisita[j].nombre, rec3->lugaresVisita[k].nombre)==0 || strcmp(rec->lugaresVisita[j].nombre, rec3->lugaresVisita[k].nombre)==0)</font></div>
<div><font face="courier new, monospace"> printf(" * %s\n",rec->lugaresVisita[j].nombre);</font></div><div><font face="courier new, monospace"> else printf(" -\n");</font></div>
<div><font face="courier new, monospace"> }</font></div><div><font face="courier new, monospace"> }</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace"> </font></div>
<div><font face="courier new, monospace"> Pausa();</font></div><div><font face="courier new, monospace">}</font></div></div><div><br></div><div>Ahora la segunda parte consiste en hacer lo mismo pero para n recorridos y para n lugares, que el usuario decida estas cifras. El problema es que no sé como hacer esto si en un arreglo de estructuras o algo así, como creo apuntadores dependiendo de lo que indique el usuario. Ya intente con un arreglo de estructuras pero no queda. </div>
<div>Gracias por ayudarme.<br clear="all"><div><br></div>-- <br><u><font face="'trebuchet ms', sans-serif"><span style="font-size:large"><font color="#cc0000">Elois@ Guevara</font></span></font></u><blockquote style="margin:0pt 0pt 0pt 40px;border:medium none;padding:0px">
<div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">"La vida es muy peligrosa. No por las personas que hacen el mal, sino
por las que se sientan a ver lo que pasa." Albert Einstein<br></blockquote></div></blockquote><div style="padding:0px;margin-left:0px;margin-top:0px;overflow:hidden;word-wrap:break-word;color:black;font-size:10px;text-align:left;line-height:130%">
</div><br>
</div>