Estoy haciendo administración de sistemas informaticos
La profesora de programación nos ha mandado hacer como ejercicio final a los que llevamos bien la materia hacer un programa.
El problema es que no lo se terminar...
Utilizando estas librerias y punteros, debo hacer que las cadenas se ordenen...(eso está hecho) y hacer que se ordenen en orden inverso.
Lo malo es que con orden inverso no se refiere a descendente...
sino a que se ordenen por la ultima letra de cada cadena.
Cada cadena puede tener una longitud distinta, y eso ya me supera... tengo una ligera idea pero cuando voy a escribirla me bloqueo.
He estado buscando y no he encontrado nada semejante en ningún otro lenguaje.
Si me podeis ayudar os lo agradeciría mil...
Código LO QUE ME FALTA:
Ver original#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void ordenar (char **, int);
void inversa (char **, int);
void main ()
{
char **cad, fin[4]="fin";
int i=0, n=0, cont=0, op=0;
printf ("¿Cuantos nombres quieres almacenar? ");
scanf ("%i",&n);
cad=(char **)malloc (n*sizeof (char*));
do
{
i++;
*(cad+i)=(char *)malloc (n*sizeof (char));
fflush (stdin);
gets (*(cad+i));
cont++;
}while (i<n && (strcmp((*(cad+i)),fin)!=0));
if (*(cad+i)==fin)
{
cont=cont-1;
}
else
{
cont++;
}
do{
printf ("\n---------MENU---------\n");
printf ("- 1. Ordenar -\n");
printf ("- 2. Ordenar Inverso -\n");
printf ("- 3. Salir -\n");
printf ("----------------------\n");
printf ("> Opción: \n");
scanf ("%i", &op);
if (op == 1){
ordenar (cad, cont);
printf ("\n");
for (i=1;i<cont;i++){
puts (*(cad+i));
}
}else if (op == 2){
inversa (cad, cont);
printf ("\n");
for (i=1;i<cont;i++){
puts (*(cad+i));
}
}
}while (op!=3);
}
void ordenar (char **cad, int cont)
{
int i, j,m, l=0;
char *aux;
for (i=1;i<cont;i++)
{
for (j=1;j<cont;j++)
{
l=strcmp ((*(cad+i)), (*(cad+j)));
if (l<0)
{
aux=(*(cad+i));
*(cad+i)=*(cad+j);
*(cad+j)=aux;
}
}
}
}
void inversa (char **cad, int cont)
{
LO QUE ME FALTA
}