Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Odalowers en 10 de Junio 2021, 03:09

Título: C++ programa opciones Ecuacion de 2x2 Calcular la mediana Ordenar palabras alfab
Publicado por: Odalowers 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 sé cuáles son mis errores, ojalá me puedan ayudar, se los agradecería mucho :-[

Este es el programa:


Código: [Seleccionar]
#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[i]);
        }
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[i]);
}
for(i=0;i<n;i++)
{
printf("\n%s",palabras[i]);
}
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[i][0]>=palabras[j][0])
{
strcpy(letra,palabras[i]);
strcpy(palabras[i],palabras[j]);
strcpy(palabras[j],letra);
}
}
}
printf("\nLOS FRASES ORDENADAS SON:");
for(i=n-1;i>=0;i--)
{
printf("\n%s",palabras[i]);
}
}

      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!!!");


    }
}

Título: Re: Ayuda con un programa en c++
Publicado por: Kabuto 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