eliminacion o bajas en C,, ayuda aun tengo duda de como manejarlo

Iniciado por jysusxtreme, 10 Marzo 2015, 05:04 AM

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

jysusxtreme

todos los casos 1 2  4 funcionan pero el caso 3 5 y 6 tengo errores en el caso numero 5 quiero eliminar un elemento pero no se como en el caso numero 3 quiero imprimir cuantas palabras se ingresaron deacuerdo al color asignado si puedes porfavor compilalo gracias y checa mis errores te lo agradeceria


//registro de colores
#include <stdio.h>
#include <string.h>

int main(){
char colores[5][100],buscar[100];
int posicion=0,contador=0,x,y;
int op;
char exit;
do {
printf("1.-Registrar colores:\n");
printf("2.-consulta general\n");
printf("3.-consulta particular\n");
printf("4.-Modificacion\n");
printf("5.-Eliminacion\n");
printf("6.-Salir\n");
scanf("%d",&op);
switch (op)  {
case 1://registro biennnnn
do {
for (x=0;x<5;x++){
printf("registra tus colores :[%d] \n",x+1);
scanf("%s",colores[x]);
contador++;}  
printf ("desea seguir registrando --s-si n-no \n:");
getc (stdin);
scanf ("%c",&exit);
}
while (exit!='n' && contador<5);
break;
case 2://consulta general biennnnnnnnnnnnnn
printf("los colores ingresados son:\n");
for (x=0;x<contador;x++)  {
printf("%s\n",colores[x]);
}
break;

case 3://consulta particular  
posicion=-1;
                       printf("consultar color especifico y cuantos hay: ");
                       scanf("%s",buscar);
                       for(x=0;x<contador;x++)
                       {
                        if(strcasecmp(buscar,colores[x])==0)
                        {
                         posicion=x;
                         break;
                        }
                       }
                       if(posicion!=-1)
                       {
                        printf(" color corecto: \n");
                        printf (" existen %d \n",colores[x]);
                       }
                         else
                          printf("El color no existe \n");
            break;
           
case 4://modificaciones biennnnn
              posicion=-1;
                       printf("ingresar color que desea modificar\n: ");
                       scanf("%s",buscar);
                       for(x=0;x<contador;x++)
                       {
                        if(strcasecmp(buscar,colores[x])==0)
                        {
                         posicion=x;
                         break;
                        }
                       }
                       if(posicion!=-1)
                       {

                        printf("INGRESE EL COLOR CORRECTO: ");
                        scanf("%s",colores[posicion]);
                       }
                         else
                          printf("el color no existe \n");
               break;

case 5://eliminacion o bajas
           posicion=-1;
                      printf("consulta el color para eliminarlo: ");
                      scanf("%s",buscar);
                      for(x=0;x<contador;x++)
                      {
                       if(buscar==colores[x])
                       {
                        posicion=x;
                        break;
                       }
                      }
                      if(posicion!=-1)
                      {
                       contador--;
                        for(x=posicion;x<contador;x++)
                        {
                         printf("%s\n",colores[x]);
                        }
                      }
                        else
               {
                        printf("el color no existe:\n");
               break;
               case 6:
             default: printf("opcion incorecta\n");
             }
       } }
        while(exit!=6);
  return 0;
   }


Mod: No escribir en mayúsculas, para que las etiquetas funcionen deben seleccionar el codigo antes de poner la etiqueta o pegar el codigo dentro de la etiqueta

NOIS

Para solucionar el caso 3, en la comparación que realizas entre el color buscado y los almacenados en "colores" quita el "break;" del bucle, y suma 1 a un contador por cada validación correcta, luego usas el contador así: "printf(" existen: %d", cont);

Eso te dará la cantidad.

Código (cpp) [Seleccionar]

char colores[5][100],buscar[100];
int posicion=0,contador=0,x,y;
int op;
// CONTADOR
int cont = 0;
char exit;

Código (cpp) [Seleccionar]

case 3://consulta particular  
posicion=-1;
                        printf("consultar color especifico y cuantos hay: ");
                        scanf("%s",buscar);
                        for(x=0;x<contador;x++)
                        {
                             if(strcasecmp(buscar,colores[x])==0)
                             {
                                  cont++;
                                  posicion=x;
                             }
                        }
                        if(posicion!=-1)
                        {
                         printf(" color corecto: \n");
                         printf (" existen %d %s\n",cont, buscar);
                         cont = 0;
                        }
                          else
                           printf("El color no existe \n");
             break;

Tras mostrar la cantidad vuelves a poner el contador a 0 para poder volver a usarlo.

El caso 6 es muy sencillo, simplemente utiliza "return 0;" así saldrá del programa.
Código (cpp) [Seleccionar]

case 6:
        return 0;
        break;


Con el caso 5 no puedo ayudarte, nunca he hecho nada así y menos en C, yo soy de C++.

Espero haberte ayudado.

Saludos!
NOIS dev7