Ir ao conteúdo

Retornar uma Struct


Sioto

Posts recomendados

Postado

Fala galera,

Tenho que fazer um programa, que leia um txt contendo nome e cpf, e organize isso utilizando bubblesort, InsertionSort e SelectionSort .

Ja consigo abrir e ler o txt. Tenho todos os algoritmos pra fazer as funcoes Bubble,Insert e selection.

O que me falta é o seguinte

Eu preciso de uma Struct padrão, onde eu pego os arquivos desordenados para ordenalos,

Eu pensei no seguinte:

Na Minha função lerarquivo , retornar a struct 'x'(contendo Nome e Cpf), e ,no meu main eu ter:

padrão = leraquivo(lista.txt)

e assim pra fazer a ordenacao eu teria bubble(padrão);Insert(padrão).....

o problema é,

Como eu retorno uma Struct feita de Strings?

Obg

Postado

você pode declarar a função do tipo da struct

Exemplo:


typedef struct Minha_Struct{
// campos
} mStruct;

e na função voce pode fazer assim


mStruct Nome_da_Funcao(Parametros)
{
mStruct retorna_struct;
// seu codigo;
return retorna_struct;
}

Se der erro, você tera que criar o ponteiro da struct


typedef struct Minha_Struct{
// campos
} *mStruct; // aqui

Postado

Sylerr

Consegui devolver isso pra minha main, agora queria saber como faço pra usar ela de parametro pra minha outra função?

Meu programa tá +- Assim


// Minha Biblioteca propria ''funçoes.h''

static const int tamanho = 100;
typedef struct tipodados
{
int ID;
char CPF[13];
char NOME[50];
} dados ;

void leraquivo(FILE * arquivo, dados x[50])
{
rewind(arquivo);
char linha[tamanho];
int item = 0,Sup,Inf,n;
printf("Digite o Intervalo Desejado na Forma [Limite Inferior, Limite Superior]\n");
scanf("%i,%i",&Inf,&Sup);
printf("____________________________________________________________________________\n");
n = Sup-Inf;

//Ler os Nomes no Intervalo [Inf,Sup]
while (!feof(arquivo) && item<=Sup)
{
//Utilizado somente para mover o ponteiro até a linha desejada. OBS o printf serviu só para enxergar a leitura, sendo excluido ao fim da programação.
if(item<Inf)
{

fgets(linha,tamanho,arquivo);
// printf("Arquivo item(%i)=%s\n",item,linha);
}
//Utilizado para ler o arquivo e armazenar na Variavel NOME
else
{
fscanf(arquivo ,"%i %s %[^\n]s",&x[item].ID,x[item].CPF,x[item].NOME);
printf("ID = %i||CPF=%s||NOME=%s\n",x[item].ID,x[item].CPF,x[item].NOME);
}
item++;
}}

E o meu main


#include <stdio.h>
#include <stdlib.h>
#include "funcoes.h"

int main()
{
dados k[50];
int opcao = 0,e;
while(opcao != 1)
{

FILE *arquivo;
arquivo = abrirarquivo("lista.txt");
leraquivo(arquivo,k);

printf("Escolha o Metodo\n1-BubbleSort\n2-InsertionSort\n3-SelectionSort\n");
scanf("%i",&e);

if(e == 1)
{
//bubblesort(k);
}

if(e == 2)
{
insertionsort(k);
}
if(e == 3)
{
selectionsort(k);
}


printf("1-Sair,0-Repetir\n");
scanf("%i",&opcao);
if(opcao==0)
{
system("clear");
//system("cls");
}

}

return 0;
}

E a minha função Bubble Sorte


void bubblesort (???????)
for (i=Sup;i>=Inf;i--)
{
for(j = Inf;j<Sup;j++)
{
if(strcmp(x[j].NOME,x[j+1].NOME)>0)
{
aux[j] = x[j];
x[j]= x[j+1];
x[j+1] = aux[j];
}
}
}

Qual parametro eu tenho que por na minha Bubblesort pra receber a struct K que a minha função leraquivo criou?

Obrigado pela força =)

Postado
você pode declarar a função do tipo da struct

Exemplo:


typedef struct Minha_Struct{
// campos
} mStruct;

e na função voce pode fazer assim


mStruct Nome_da_Funcao(Parametros)
{
mStruct retorna_struct;
// seu codigo;
return retorna_struct;
}

Se der erro, você tera que criar o ponteiro da struct


typedef struct Minha_Struct{
// campos
} *mStruct; // aqui

utilizando o mesmo exemplo de antes...


mStruct bubbleStruct (mStruct minha_struct)
{
// codigo
}

teste desta maneira.

Postado

Beleza, consegui man =) valeu :D

Agora me uma outra perguntinha.

Eu tenho como usar um ponteiro como condição no FOR?

ex:

int N = 10
int *n = &N;

main ()

for(i = 0 ; i < *n ; i++)

??

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: Aprenda a Ler Resistores e Capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!