Me podrian decir como podria ingresar una serie de nombres en un archivo txt y de ahi que se me ordenara segun el metodo que eliga el usuario en el menu, esto es lo que llevo
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define Max 100
using namespace std;
FILE *doc;
void OrdenaBur(int , char [Max][Max], char [Max]);//mis funciones
void QS(char [Max][Max],int,int);
void MShell(int , char [Max][Max]);
void Imprimir(int , char [Max][Max]);
void Guardar(int , char [Max][Max]);
int main() {
int Tam;
char arreglo[Max][Max], temp[Max], preg;
int Menu;
cout << " Metodos de ordenamiento"<<endl;
cout << "Seleccione una opcion"<<endl;
cout <<"1.Ingresar Datos"<<endl;
cout <<"2.Mostrar Datos"<<endl;
cout <<"3.Metodo QuickSort"<<endl;
cout <<"4.Metodo Burbuja"<<endl;
cout <<"5.Metodo Shell"<<endl;
cout <<"6.Salir"<<endl;
cin >> Menu;
do{//mi menu
system("cls");
cout << "\n\n\t 1.Ingresar Datos\n 2.Mostrar Datos\n 3.Metodo QuickSort"
<< "\n 4.Metodo Burbuja\n 5.Metodo Shell\n "
<< "\n 7.Salir\n";
if(Menu=='\0')
{
cout << "\t\tSeleccione la opcion\n";
cin >> Menu;
}
switch(Menu){
case 1:
{
cout << "Ingrese la cantidad de cadenas que desee ordenar\n";
cin >> Tam;
Tam--;
Guardar(Tam, arreglo);
break;
}
case 2:
{
cout << "\nSus cadenas ingresadas son las siguientes\n"<<endl;
Imprimir(Tam, arreglo);
break;
}
case 3:
{
QS(arreglo,0,Tam);
Imprimir(Tam,arreglo);
break;
}
case 4:
{
OrdenaBur(Tam,arreglo,temp);
Imprimir(Tam,arreglo);
break;
}
case 5:
{
MShell(Tam, arreglo);
Imprimir(Tam,arreglo);
break;
}
case 6:
{
return 0;
break;
}
default:
cout << "Error, Debe ingresar un dato valido\n";
}
cout << "\nDesea volver al menu?"
<< "\n s para volver\n n para salir\n";
cin >>preg;
Menu='\0';
}
while(preg=='s');
return 0;
}
void OrdenaBur(int Tam, char arreglo[Max][Max], char temp[Max])
{
int tb, rg;
cout << "\n\nSus cadenas ordenadas alfabeticamente con el metodo burbuja son: \n" << endl;
for(tb=0; tb<Tam; tb++)
for(rg=tb+1; rg<Tam+1; rg++)
if(strcmpi(arreglo[tb], arreglo[rg])>0)
{
strcpy(temp, arreglo[tb]);
strcpy(arreglo[tb], arreglo[rg]);
strcpy(arreglo[rg], temp);
}
}
void QS(char arreglo[Max][Max],int limite_izq,int limite_der)
{
int izq,der,prob;
char temporal[Max],pivote[Max];
cout << "\n\nSus cadenas ordenadas \n"
<< "alfabeticamente con el metodo quick sort son: \n" << endl;
izq=limite_izq;
der = limite_der;
strcpy(pivote,arreglo[(izq+der)/2]);
do
{
while(strcmpi(arreglo[izq],pivote)<0)
izq++;
while(strcmpi(arreglo[der],pivote)>0)
der--;
if(strcmpi(arreglo[izq],arreglo[der])>=0)
{
strcpy(temporal,arreglo[izq]);
strcpy(arreglo[izq],arreglo[der]);
strcpy(arreglo[der],temporal);
izq++;
der--;
}
}
while(izq<=der);
if(limite_izq<der)
QS(arreglo,limite_izq,der);
if(limite_der>izq)
QS(arreglo,izq,limite_der);
}
void MShell(int Tam, char arreglo[Max][Max])
{
int i,j,k;
char aux[Max] ;
cout << "\n\nSus cadenas ordenadas alfabeticamente con el metodo shell sort son: \n" << endl;
k=Tam/2;
while(k>0)
{
for(i=k/*+1*/;i<=Tam;i++)
{
j=i-k;
while(j>=0)
{
if(strcmp(arreglo[j],arreglo[j+k])>=0)
{
strcpy(aux,arreglo[j]);
strcpy(arreglo[j],arreglo[j+k]);
strcpy(arreglo[j+k],aux);
}
else
{
j=0;
}
j=j-k;
}
}
k=k/2;
}
}
void Guardar(int Tam, char arreglo[Max][Max])
{
int cont;
for (cont=0;cont<=Tam;cont++)
{
cout << "\nCadena "<<cont+1<<endl;
cin >> arreglo[cont];
}
}
void Imprimir(int Tam, char arreglo[Max][Max])//Mi duda con los archivos
{
int c;
doc= fopen("alfabetico.txt","r");
if (doc==NULL){
cout<<"Error con el archivo"<<endl;
while((c=getc(doc))!=EOF){
if(c=='\n'){
cout<<endl;
}
else {
cout<<c;
}
fclose(doc);
}
}
}