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>