Ir para conteúdo
Fórum Script Brasil
  • 0

Bubblesort


Ankani

Pergunta

Ola boa tarde,

Estou a fazer um trabalho de comandos em linux, e tenho uma parte no comando ls para imprimir os ficheiros por ordem de nome e não estou conseguindo fazer o bubblesorte.Neste proxima codigo tenho as variaveis base.

#include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <dirent.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/types.h>


struct linha {
     
    int numero_linha;
    char conteudo[350];
    struct linha *linha_seg;
    struct linha *linha_ant;


};


typedef struct linha * LINHA;
typedef struct linha ** PLINHA; // Apontador para Apontador para Linhar, para ser usado na funcao Sort para o sort.c
LINHA primeira_linha, ultima_linha;


char comandos[30][10];
char ficheiros[25][350];
int total_comandos;
int total_ficheiros;

}
Neste proximo codigo tenho a funcao ls
void ls(char nomedirectorio[80]) {

    DIR *dp;
        struct dirent *dirp;


        FILE *file;


        char ficheiro[100];


    int contador_pagina = 1;
    int contador_print = 0;
    int diferenca = 0;
    int numero_espacos;


    if ((dp = opendir(nomedirectorio)) == NULL ) {
                fprintf(stderr, "Erro1: Directorio não Existente!\n");
                exit(1);
        }


        while ((dirp = readdir(dp)) != NULL ) {


        if(existe_arg("l")) { //Faz a listagem longa com indicacao nome, dimensao e data do ficheiro
            file = fopen(dirp -> d_name, "r"); 
            strcpy(ficheiro, dirp -> d_name);


            printf("Nome: %s\t Dimensao: %d", ficheiro, tamanho(file));
            date(ficheiro);
            fclose(file);
        }


        if(existe_arg("p")) { //Faz pausa a pagina a pagina
            if((contador_pagina % 30) == 0) {
                            printf("\n\n\n\n Prima Enter Para Ver o Resto do Ficheiro\n");
                                getchar();
                        }


                        printf("%s\n", dirp -> d_name);
                           contador_pagina++;
        }


        if(existe_arg("c")) { //Lista por colunas os ficheiros contidos na directoria


            if((contador_print % 3) == 0) {
                printf("\n");
            }


            diferenca = 50 - strlen(dirp -> d_name);


            printf("%s", dirp -> d_name);
                        contador_print++;


            for(numero_espacos = 0; numero_espacos < diferenca; numero_espacos++) {
                printf(" ");
            }
        }
 if (exist_arg("on"))   <--- BUBBLESORT AQUI ON= ORDER NAME.
        
         
        if(!existe_arg("l") && !existe_arg("on") && !existe_arg("od") && !existe_arg("os") && !existe_arg("p") && !existe_arg("c")) {
            printf("%s\n", dirp -> d_name);
        }
    }


    if(existe_arg("c")) {
        printf("\n");
    }
    closedir(dp);
}

Sera que da para ajudar?

Obrigado

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...