Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ordenamiento de Vector de caracteres C++

Estas en el tema de Ordenamiento de Vector de caracteres C++ en el foro de C/C++ en Foros del Web. Hola, estoy haciendo un programa en C++ que lee datos de un archivo.csv, llena un vector y los muestra en pantalla. El archivo es algo ...
  #1 (permalink)  
Antiguo 23/05/2010, 20:54
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Ordenamiento de Vector de caracteres C++

Hola, estoy haciendo un programa en C++ que lee datos de un archivo.csv, llena un vector y los muestra en pantalla.

El archivo es algo como:

1,2,3
4,5,6
7,8,9

Eso ya está hecho, pero debo ordenarlo, la cuestión es que como el vector es de caracteres, el método de ordenamiento que hago me da como resultado:
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1

Así que traté de convertir los caracteres a enteros, pero ahora me da como resultado:
0
0
0
0
0
0
0
0
0
0

¿Alguien me podría sugerir algo por favor?

De [URL="http://www.mediafire.com/?wom1mxocfzw"]acá[/URL] pueden descargar el proyecto completo, no pesa mucho.

Dejo el código por si alguien quiere ayudarme.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

//Funciones
void llenar();
int ordenar();

//Variables
char vector[11];
int dato;
int i,j,aux,n,op;

main()
{
      do
      {
           system ("cls");
           printf("Menu principal \n\n");
           printf("1- Mostrar Datos \n");
           printf("2- Ordenar \n");
           //printf("3- Mostrar dato más repetido \n");
           printf("3- Salir\n\n");
           printf("Que desea hacer: ");
           scanf("%i",&op);
           
           switch(op)
           {
                     case 1 : llenar();
                     break;
                     case 2 : ordenar();
                     break;
                     /*case 3 : recorrer();
                     break;*/
                    }
      }while(op != 3) ;        
     
}

void llenar()
{
	FILE *archivo;
   archivo = fopen("prueba.csv","r");      //abre archivo y prepara para escritura
 
	if (archivo == NULL)                    //si no puede abrir el archivo
	   printf("Error al abrir el archivo");
		getch();
 
	printf("\nEl contenido del archivo de prueba es: \n\n");
 
	while (feof(archivo) == 0)            //mientras no esté en el final del archivo
         {
         for(i=0; i<11; i++)
            {
            dato = fgetc(archivo);       //lee uno a uno cada caracter del archivo
            vector[i]= dato;
            printf("%c",vector[i]);      
            }
         }
         fclose (archivo);               //cierra el archivo
         getch();
}            
            
            
int ordenar()
{
     FILE *archivo;                      //abre archivo y prepara para escritura
     archivo = fopen("prueba.csv","r");
 
	  if (archivo == NULL)                //si no puede abrir el archivo
	     printf("Error al abrir el archivo");
		  getch();
 
	   printf("\nLos datos ordenados son: \n\n");
	   
	   while (feof(archivo) == 0)         //mientras no esté en el final del archivo
         {
            for(i=0; i<11; i++)     //Recorro el vector
            {
            dato = fgetc(archivo);  //obtengo los datos
            if(dato == 'a')
            break;
                            
            else
            vector[i]= dato;        //lleno el vector con los datos
            
            for (i=0;i<11;i++)      //empiezo el ordenamiento
            {
                for (j=i+1;j<11;j++)
                {
                    /*switch (dato)         //convierte caracteres en numeros
                                            //esta forma no sirvió por que me mostraba el caracter ascci              
                    {
                            case '0': dato=0;
                            break;
                            case '1': dato=1;
                            break;
                            case '2': dato=2;
                            break; 
                            case '3': dato=3;
                            break;          
                            case '4': dato=4;
                            break;          
                            case '5': dato=5;
                            break;          
                            case '6': dato=6;
                            break;          
                            case '7': dato=7;
                            break;          
                            case '8': dato=8;
                            break;          
                            case '9': dato=9;
                            break;          
                    }*/ 
                                  
                    dato=int(vector);       //convierte de caracteres a enteros
                    
                    if (vector[i]>vector[j]) //ordena de menor a mayor
                    {
                       aux=vector[i];
                       vector[i]=vector[j];
                       vector[j]=aux;
                       printf ("%i\n",vector[i]);
                    }
                }
                
            }
            
         }
         fclose (archivo);
         getch();
         return(0);
}
}

Etiquetas: caracteres, ordenamiento, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:43.