/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Ayuda a ingresar nombre en una matriz

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
eze32



Registrado: 17 Sep 2011
Mensajes: 35
Ubicación: Argentina

MensajePublicado: 25/04/2014 5:40 pm
Título: Ayuda a ingresar nombre en una matriz

Hola tengo que hacer un programa donde mediante un menú ingresar las distintas opciones, como cargar aleatoriamente la matriz de caracteres con nombres, buscar el mayo y menor nombre , etc, bueno al querer cargar los nombres, quiero ingresar en que posición quiere ingresar y me da que ya esta cargada esa fila, o si no me salta a la otra opción para ver si quiero seguir o no cargando, pero no me lo deja cargar, el código es :

Código:


#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
#define FIL 10
#define COL 20

int vector_vacio(char nombres[][COL]);
void carga_aleatoria(char nombres[][COL]);
void buscar_mayor(char nombres[][COL]);
void buscar_menor(char nombres[][COL]);
void buscar_igual(char nombres[][COL]);
void mayor_menor(char nombres[][COL]);
void menor_mayor(char nombres[][COL]);
char menu();

int main(void)
{
  char opcion,
       seguir = 's',
       nombre[FIL][COL];
  int i;

 do
 {
    system("cls");
    opcion = menu();

    switch(opcion)
    {
      case 'a' :
      case 'A' : carga_aleatoria(nombre);break;

      case 'b':
      case 'B': {if(vector_vacio(nombre) > 0)
         buscar_mayor(nombre);
                else
                    printf("Primero cargar vector: ");}

                break;
      case 'c' :
      case 'C' : {if(vector_vacio(nombre) > 0)
         buscar_menor(nombre);
                 else
                    printf("Primero cargar vector: ");}

                break;
      case 'd':
      case 'D':{ if(vector_vacio(nombre) > 0)
         buscar_igual(nombre);
                else
                    printf("Primero cargar vector: ");}

                break;
      case 'e':
      case 'E' : {if(vector_vacio(nombre) > 0)
         mayor_menor(nombre);
                else
                    printf("Primero cargar vector: ");}

                break;
      case 'f':
      case 'F' :{if(vector_vacio(nombre) > 0)
         menor_mayor(nombre);
                else
                    printf("Primero cargar vector: ");}

                break;
      case 'g' :
      case 'G' : {printf("\n Salir"); }break;

      default : break;
    }

    if(opcion == 's' || opcion == 'S')
        seguir = 'n';
    else
    {
        printf("\n\nDesea Continuar : ");
        fflush(stdin);
        scanf("%c",&seguir);
    }
 }while(seguir == 's' || seguir == 'S');

 getch();

 return 0;

}

void carga_aleatoria(char nombres[][COL])
{
  int pos;
  char seguir = 's';

  // cargamos aleaoriamente

  do
  {
    printf("Ingrese posicion para gaurdar datos en vector: ");
    scanf("%d",&pos);

    if(pos > 0 && pos <= 10 && strlen(&nombres[pos - 1][0]) == 0) // posciones validas, y hace q no guarde en misma posicion ya gaurdada antes
    {
      printf("Ingrese nombre entero para guardar en vector: ");
      gets(&nombres[pos - 1][0]);

      printf("Desea Ingresar otro datos al vector S/N? : ");
      fflush(stdin);
      scanf("%c",&seguir);
    }
    else
    {
   if(strlen(&nombres[pos-1][0]) != 0)
        {
            printf("Posicion ya ingresada.Volver a ingresar \n\n");
   }
   else
   {
     printf("Ingresar posicion entre 0 y 10 \n\n");
   }
    }



    if((seguir == 'n' || seguir == 'N') && vector_vacio(nombres) == 0)
    {
        printf("\nPor favor antes ingresar auqnue sea un dato en vector: ");
        fflush(stdin);
        seguir = 's';
    }

  }while(seguir == 's' || seguir == 'S');
}


/////////////////////// // determina si vector esta vacio o no, si retorna 0 esta vacio si es mayor a cero tiene carga  ///////////////////////////////////////////////////////////////
int vector_vacio(char nombres[][COL])
{
  int i,
      vacio = 0;
  char *nom;

  nom = &nombres[0][0];

  for(i = 0; i < 10; i++)
  {
    if(strlen(nom) > 0)
        vacio++;
  }

  return vacio;
}

///////// buscar mayor elemento  //////////////////////

void buscar_mayor(char nombres[][20])
{
    char *mayor,
         *nom;
    int  i,
         varios = 1,
    pos;

    nom = &nombres[0][0];

    mayor = nom;

    for(i = 1; i < FIL; i++)
    {
   if(stricmp(nom + i*COL,mayor) > 0)
        {
            strcpy(mayor,nom + i*COL);
            pos = i;
            varios = 1;
        }
        else
        {
       if(stricmp(nom + i*COL,mayor) == 0)
              varios++;
        }
    }

    printf("El NOmbre mayor es : %s \n\n", mayor);

    if(varios > 1 )
    {
        printf("Y aparece en las posiones: ");

        for(i = 0; i < 10; i++)
        {
           if(stricmp(nom + i*COL,mayor) == 0)
             printf("%d,",i+1);
        }
    }
    else
    {
       printf("Y aparece en la posicion: %d", pos);
    }

}


/////////// Buscar MEnor ///////////////////////////

void buscar_menor(char nombres[][COL])
{
    char *menor,
         *nom;
    int  i,
         varios = 1,
    pos;

    nom = &nombres[0][0];

    menor = nom;
    for(i = 1; i < 10; i++)
    {
        if(stricmp(nom + i+COL,menor) < 0)
        {
            strcpy(menor,nom + i*COL);
            pos = i;
            varios = 1;
        }
        else
        {
      if(stricmp(nom + i*COL,menor) == 0)
         varios++;
        }
    }

    printf("El NOmbre menor es : %s \n\n", menor);

    if(varios > 1 )
    {
        printf("Y aparece en las posiones: ");

        for(i = 0; i < 10; i++)
        {
           if(stricmp(nom + i*COL,menor) == 0)
             printf("%d,",i+1);
        }
    }
    else
    {
       printf("Y aparece en la posicion: %d", pos);
    }

}

////////////////// BUscar mismo numero en vector //////////////////////

void buscar_igual(char nombres[][20])
{
    char *igual,
         *nom;
    int i,
        varios = 0,
   pos;

    nom = &nombres[0][0];

    printf("Ingrese nombre a buscar");
    fflush(stdin);
    gets(igual);

    for(i = 0; i < 10; i++)
    {
   if(stricmp(nom + i*COL,igual) == 0)
        {
            pos = i;
            varios++;
        }
    }

    printf("El numero menor es : %s \n\n", igual);

    if(varios > 1 )
    {
        printf("Y aparece en las posiones: ");

        for(i = 0; i < 10; i++)
        {
      if(stricmp(nom + i*COL,igual) == 0)
             printf("%d,",i+1);
        }
    }
    else
    {
       if( varios == 1)
         printf("Y aparece en la posicion: %d", pos);
       else
        printf("No esxiste %s en el vector. ",igual);
    }

}

//////////////// Ordenar mayoy a menor  ///////////////

void mayor_menor(char nombres[][COL])
{
    char *nom,*aux;
    int i,j;

    nom = &nombres[0][0];

    for(i = 0; i< 10-1; i++)
      for(j = i+1 ; j < 10; j++)
       if(stricmp(nom + i*COL,nom + j*COL) > 0)
        {
     strcpy(aux,nom + i*COL);
     strcpy(nom + i*COL,nom + j*COL);
     strcpy(nom + j*COL,aux);
   }

    printf("OrdenAdo de mayor a menor: ");
    for(i = 0; i < 10; i++)
     printf("%s",nom + i*COL);
}

/////////////////// ORdenar menor a mayor  ///////////////

void menor_mayor(char nombres[][COL])
{
   char *nom,*aux;
   int i,j;

   nom = &nombres[0][0];

   for(i = 0; i< 10-1; i++)
   for(j = i+1 ; j < 10; j++)
    if(stricmp(nom + i*COL,nom + j*COL) > 0)
    {
      strcpy(aux,nom + i*COL);
      strcpy(nom + i*COL,nom + j*COL);
      strcpy(nom + j*COL,aux);
    }

    printf("OrdenAdo de menor a mayor: ");
    for(i = 0; i < 10; i++)
     printf("%s",nom + i*COL);
}

char menu()
{
 char opcion =' ';

 do
 { printf("Ingrese una opcion:\nA_Carga de Vector \nB_Buscar mayor\nC_BUscar menor\nD_Buscar un elemento\nE_Mayor a menor\nF_Menor a mayor\nS_Salis\n\n");
    fflush(stdin);
    scanf("%c",&opcion);
 }while (opcion!= 'a' && opcion!= 'A' && opcion!= 'b' && opcion!= 'B' && opcion!= 'c' && opcion!= 'C' &&
         opcion!= 'd' && opcion!= 'D' && opcion!= 'e' && opcion!= 'E'&& opcion!= 'f' && opcion!= 'F' && opcion!= 's' && opcion!= 'S');

 return opcion;
}




Bueno me gustaría saber cual seria mi error. Gracias de antemano.
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com