Autor Tema: Ayuda con un programa en c++  (Leído 172 veces)

Odalowers

  • Sin experiencia
  • *
  • Mensajes: 1
  • Hola, estoy aprendiendo a programar jiji
    • Ver Perfil
Ayuda con un programa en c++
« en: 10 de Junio 2021, 03:09 »
Hola a todos!, quisiera que me apoyaran con mi programa, es un proyecto final y no me compila. No se cuales son mis errores, ojala me puedan ayudar, se los agradecería mucho :-[
Este es el programa:

#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
void ordenar(char palabras[][20],int n);
int i,j;char letra[20];
void MED(float med[],int n);
main ()
{
   char Palabra[7]={"cookie"},PalabraUsuario[7];
   int cont=0, cont1=0;
   setlocale(LC_ALL,"");
   printf("\n\nEste programa fue elaborado por: \n");
 
   printf("\n\nPara útilizar este programa proporciona la contraseña\n");
   while(cont1==0)
    {
      printf ("\n\nIntroduzca la contraseña: ");
      gets(PalabraUsuario);

      if(strcmp(Palabra,PalabraUsuario)!=0)
        {
          cont++;
          printf("\nContraseña INCORRECTA");
          printf("\n\t Intentos restantes %i",3-cont);
          getch();
          system("cls");
          if(cont==3)
            {
                printf("\nAcceso denegado");
                break;
            }
        }

     else
        {
         cont1=1;
         printf("Contraseña CORRECTA");
         getch();
         system("cls");
         break;

        }
    }

    if(cont1==1)
    {
    int opc=0, n=0;
    int i=0;
    do
    {
    setlocale(LC_ALL,"");
    printf("\n\tÉste es el menú de opciones del programa, que ofrece:\n");
    printf("\n 1Ecuacion de 2x2 \n 2.Calcular la mediana\n 3.Ordenar palabras alfabeticamente\n 4.SALIR\n ");
    printf(" \nElige tu opción\n");
    scanf("%d",&opc);
    switch(opc)
    {
      case 1:
    float x1,y1,x2,y2,b,c,r,d1,d2,x,y;
    printf("INGRESE LOS VALORES DE LA PRIMERA ECUACION separados por una coma (X,Y,C):\n");
   scanf("%f,%f,%f",&x1,&y1,&b);
   printf("INGRESE LOS VALORES DE LA SEGUNDA ECUACION separados por una coma (X,Y,C):\n");
   scanf("%f,%f,%f",&x2,&y2,&c);
   r=(x1*y2)-(x2*y1);
   d1=(b*y2)-(c*y1);
   d2=(x1*c)-(x2*b);
   x=d1/r;
   y=d2/r;
   printf("X=%.2f",x);
   printf("Y=%.2f",y);
      getch();
      system("cls");
     break;
      case 2:
    printf("\nCuantos numeros requiere para calcular su mediana?:");
    scanf("%i",&n);
    float med[n];
    for(i=0;i<n;i++)
        {
            printf("\nINGRESE NUMERO %i:",i+1);
            scanf("%f",&med);
        }
         MED(med,n);
      getch();
      system("cls");
     break;
      case 3:
   {printf("\nCuantas palabras deseas ordenar?:");
   scanf("%i",&n);
   fflush(stdin);
   char palabras[n][20];
   for(i=0;i<n;i++)
   {
      printf("\nINGRESA PALABRA?:");
      gets(palabras);
   }
   for(i=0;i<n;i++)
   {
      printf("\n%s",palabras);
   }
   ordenar(palabras,n);
   getch();
}
void ordenar(char palabras[][20],int n)
{
   for(i=0;i<n;i++)
   {
      for(j=0;j<n;j++)
      {
         if(palabras[0]>=palabras[j][0])
         {
            strcpy(letra,palabras);
            strcpy(palabras,palabras[j]);
            strcpy(palabras[j],letra);
         }
      }
   }
   printf("\nLOS FRASES ORDENADAS SON:");
   for(i=n-1;i>=0;i--)
   {
      printf("\n%s",palabras);
   }
   }

      getch();
      system("cls");
     break;
      case 4:
      printf("\n\t ¿Estás seguro de que NO ");
    break;
      default:
      printf("Esta opción no existe");
      getch();
      system("cls");
    }
     printf("\n\t quieres volver a ejecutar el programa?\n\t elige una opción:\n\t\t SI presiona 1 para volver\n\t\t NO presiona 4 para salir\n");
     scanf("%d",&opc);
     system("cls");

}
   while(opc!=4);
   printf("\n\t Adios!!!");


    }
}


Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 680
    • Ver Perfil
Re: Ayuda con un programa en c++
« Respuesta #1 en: 10 de Junio 2021, 11:32 »
Revisa bien cada apertura y cierre de llave.

Luego además, veo una cosa rara, parece que la definición de la función ordenar() está DENTRO del main()
Me refiero a la parte que marco en rojo:

Citar
      case 3:
   {printf("\nCuantas palabras deseas ordenar?:");
   scanf("%i",&n);
   fflush(stdin);
   char palabras[n][20];
   for(i=0;i<n;i++)
   {
      printf("\nINGRESA PALABRA?:");
      gets(palabras);
   }
   for(i=0;i<n;i++)
   {
      printf("\n%s",palabras);
   }
   ordenar(palabras,n);
   getch();
}
void ordenar(char palabras[][20],int n)
{
   for(i=0;i<n;i++)
   {
      for(j=0;j<n;j++)
      {
         if(palabras[0]>=palabras[j][0])
         {
            strcpy(letra,palabras);
            strcpy(palabras,palabras[j]);
            strcpy(palabras[j],letra);
         }
      }
   }
   printf("\nLOS FRASES ORDENADAS SON:");
   for(i=n-1;i>=0;i--)
   {
      printf("\n%s",palabras);
   }
   }

      getch();
      system("cls");
     break;
      case 4:
      printf("\n\t ¿Estás seguro de que NO ");
    break;
      default:
      printf("Esta opción no existe");
      getch();
      system("cls");
    }
     printf("\n\t quieres volver a ejecutar el programa?\n\t elige una opción:\n\t\t SI presiona 1 para volver\n\t\t NO presiona 4 para salir\n");
     scanf("%d",&opc);
     system("cls");

}
   while(opc!=4);
   printf("\n\t Adios!!!");


    }
}

Debería estar fuera del main, por ejemplo después, ya que antes del main ya se ha puesto la declaración de esta función.

Dentro del main, tendrás que llamar a esa función para que haga su cometido. Pero su definición, es decir, su código se ha de escribir fuera del main
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".