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
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.
char colores[5][100],buscar[100];
int posicion=0,contador=0,x,y;
int op;
// CONTADOR
int cont = 0;
char exit;
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.
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!