Autor Tópico: [Listas em C++]  (Lida 2717 vezes)

Offline Nelson Carvalho

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
[Listas em C++]
« em: Maio 07, 2008, 04:14:26 pm »
oi pessoal, ESPERO K ESTEJAM TODOS BEM!

ESTOU A TER PROGRAMACAO EM C++ COM LISTAS E NAO ESTOU A ENTENDER PRATICAMENTE NADA, TENHO UMA DEFESA NA SEXTA E PRECISO DE UM PROGRAMA QUALQUER DE LISTAS...SE ALGUEM PUDER AJUDAR-ME AGRADECIA!

Offline cgoncalves

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
[Listas em C++]
« Responder #1 em: Maio 09, 2008, 07:09:01 am »
Citar
// Codigo Programa da Lista Sequencial

#include<stdio>
#include<stdlib>
#include <dos>
#include <time>

int valor[200000];//lista
int k;
int fim;//fim da lista
int sinal;//variavel logica
int i, cont, cont2, val, aux;
int Rand[40];
int no[40];
clock_t iniciar, parar;
double Clock[100];

FILE *fp;


main(){
//declarar os valores para a lista
sinal = 1;
srand(time(NULL));
fp=fopen ("graficoSeq.txt","w");
if (!fp)
printf ("Erro na abertura do arquivo.");

for (k=1,Rand[0]=0;k<=30; k++){
Rand[k] = rand() % 1000000;
}

iniciar = clock();
for (k=0;k<=100000; k++){
valor[k] = rand() % 1000000;
fim = k;
}
parar = clock();
k=0;
Clock[99] = ((parar - iniciar) / CLK_TCK);

iniciar = clock();
ordenar(fim);
parar = clock();
Clock[98] = ((parar - iniciar) / CLK_TCK);


for (cont = 1; cont<=30; cont++){

no[cont]= pesquisa2(Rand[cont]);
iniciar = clock();
val = Rand[cont];
inc(no[cont]);
parar = clock();
Clock[cont] = ((parar - iniciar) / CLK_TCK);
}

for (cont = 11; cont<=20; cont++){
no[cont]= pesquisa(Rand[cont]);
iniciar = clock();
del(no[cont]);
parar = clock();

Clock[cont] = ((parar - iniciar) / CLK_TCK);
}


for (cont = 21; cont<=30; cont++){
iniciar = clock(); // pego o tempo antes de iniciar a tarefa
no[cont]= pesquisa(Rand[cont]);
parar = clock();
Clock[cont] = ((parar - iniciar) / CLK_TCK);
}


for (i=0;i<=79;i++)
fprintf(fp,"#");

fprintf(fp,"n""t""t""t""Tabela de Tempo (s) - Lista Sequencial""n""n");
fprintf(fp,"Carregar: ""%f""t""Ordenar: ""%f""n",Clock[99], Clock[98]);
fprintf(fp,"n""Inserir""tNO""t""t""Excluir""tNO""t""t""Pesquisar""tNO""n");

for (cont=1;cont<=10;cont++)
fprintf(fp,"%f""t""%dt""%f""t""%dt""%f""t%d""n", Clock[cont],no[cont], Clock[cont+10],no[cont+10], Clock[cont+20], no[cont+20]);

fprintf(fp,"n");
for (i=0;i<=79;i++)
fprintf(fp,"#");

//Escrever na tela
for (i=0;i<=79;i++)
printf("#");

printf("n""t""t""t""Tabela de Tempo (s) - Lista Sequencial""n""n");
printf("Carregar: ""%f""t""Ordenar: ""%f""n",Clock[99], Clock[98]);
printf("n""Inserir""tNO""t""t""Excluir""tNO""t""t""Pesquisar""tNO""n");

for (cont=1;cont<=10;cont++)
printf("%.9f""t""%dt""%.9f""t""%dt""%.9f""t%d""n", Clock[cont],no[cont], Clock[cont+10],no[cont+10], Clock[cont+20], no[cont+20]);

printf("n");
for (i=0;i<=79;i++)
printf("#");

printf("nPressiona Qualquer tecla pra sair...");
fclose(fp);
getch();
exit(0);
}

int acc(int k){ // aceder ao k-esimo valor passado
if (k<0> fim){
sinal = -1;
}
else{
sinal = 1;
val = valor[k];
}
}

int alt(int k){ //alterar o k-esimo valor passado
if (k<0>fim){
sinal = -1;
}
else{
sinal = 1;
valor[k] = val;
}
}


int inc(int k){ //Incluir um elemento na lista
i = fim;
if (k<0>fim){
sinal = -1;
}
else{
while (i>=k) {
valor[i+1] = valor;
i--;
}
valor[k] = val;
}
fim++;
}


int del(int k){

if (k<0>fim){
sinal = -1;
}
else{
for (k; k<=(fim-1); k++) {
valor[k] = valor[k+1];
}
}
valor[fim]= 0;
fim--;
}


void ordenar(int fim2){
for (k=0;k<=fim2; k++){
for (cont2 = k+1;cont2<fim2>valor[cont2]))
{
aux = valor[k];
valor[k] = valor[cont2];
valor[cont] = aux;
}
}
}
}
int pesquisa(int pesq){
int q = 0;
while ((pesq != valor[q]) && (q<fim> valor[q]) && (q<=fim);q++){
}
return q;
}

Citar
//Codigo do programa Lista Encadeada


#include <stdlib>
#include <stdio>
#include <dos>
#include <time>

float Clock[100];
clock_t iniciar, parar;
int k, i, cont;
int Rand[101];
int no;
int No[101];
FILE *fp;

struct lista{
int conteudo;
struct lista *prox;
};

typedef struct lista encadeada;

encadeada c;
encadeada *p;
encadeada *ini;

main(){

fp=fopen ("graficoEnc.txt","w");
if (!fp)
printf ("Erro na abertura do ficheiro.");

ini = malloc (sizeof (encadeada));
ini->prox = NULL;
p = NULL;
srand(time(NULL));

for (Rand[0]=0,k=0;k<=100; k++)
Rand[k] = rand() % 1000000;

//Carrega e ordena ao mesmo tempo
iniciar = clock();
for (k=0;k<=100000; k++){
insere((rand() % 1000000), ini);
}
parar = clock();
Clock[0] = (((parar - iniciar) / (CLK_TCK)));
k=0;

//inserir 30 valores aleatorios e ordenar
for (cont=1;cont<=30; cont++){
iniciar = clock();
insere(Rand[cont],ini );
parar = clock();
busca(Rand[cont],ini);
No[cont] = no;
Clock[cont] = ((parar - iniciar) /(CLK_TCK));
}

//
for (cont = 11; cont<=20; cont++){
iniciar = clock();
if (busca(Rand[cont],ini)!= NULL)
Remove((busca(Rand[cont],ini)));
else
if (busca(Rand[cont+10],ini)!= NULL)
Remove((busca(Rand[cont+10],ini))); //so pra diminuir a probabilidade de
else //nao inserir nenhum no
if (busca(Rand[cont+20],ini)!= NULL)
Remove((busca(Rand[cont+20],ini))); //Idem
parar = clock();
No[cont] = no;
Clock[cont] = ((parar - iniciar) / (CLK_TCK));
}
for (cont=21;cont<=30; cont++){
iniciar = clock();
busca(Rand[cont],ini);
parar = clock();
No[cont] = no;
Clock[cont] = ((parar - iniciar) / (CLK_TCK));
}
for (i=0;i<=79;i++)
fprintf(fp,"#");

fprintf(fp,"n""t""t""t""Tabela de Tempo (s) - Lista Encadeada""n""n""Carregar E Ordenar ao Mesmo Tempo: %f""n",Clock[0]);
fprintf(fp,"Inserir""t""t""NO""t""Remover""t""t""NO""t""Buscar""t""t""NO""n");

for (cont=1;cont<=10;cont++)
fprintf(fp,"%f""t""%dt""%f""t""%dt""%f""t%d""n", Clock[cont], No[cont], Clock[cont+10],No[cont+10], Clock[cont+20],No[cont+20]);

fprintf(fp,"n");
for (i=0;i<=79;i++)
fprintf(fp,"#");


for (i=0;i<=79;i++)
printf("#");

printf("n""t""t""t""Tabela de Tempo (s) - Lista Encadeada""n""n""Carregar E Ordenar ao Mesmo Tempo: %f""n",Clock[0]);
printf("Inserir""t""t""NO""t""Remover""t""t""NO""t""Buscar""t""t""NO""n");

for (cont=1;cont<=10;cont++)
printf("%f""t""%dt""%f""t""%dt""%f""t%d""n", Clock[cont], No[cont], Clock[cont+10],No[cont+10], Clock[cont+20],No[cont+20]);

printf("n");
for (i=0;i<79> prox;
while (p != NULL && p->conteudo != x){
p = p->prox;
no++;
}

return p;
}

void insere (int x, encadeada * q)
{
encadeada *nova;
encadeada *p;
nova = malloc (sizeof (encadeada));
nova->conteudo = x;
nova->prox = q->prox;
q->prox = nova;
for (p = ini->prox; (p != NULL)&& (p->prox!=NULL); p = p->prox){
if ( (p->conteudo)>(p->prox->conteudo)){
x = p->conteudo;
p->conteudo = p->prox->conteudo;
p->prox->conteudo = x;
}
}
}

void Remove (encadeada *p)
{
encadeada *morta;
if ( p->prox != NULL){
morta = p->prox;
p->prox = morta->prox;
}
else p->prox = NULL;
free (morta);
}

void imprimir (encadeada *ini)
{
encadeada *p;
for (p = ini->prox; (p != NULL); p = p->prox)
printf ("%d""n", p->conteudo);
}

Offline Nelson Carvalho

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
[Listas em C++]
« Responder #2 em: Maio 09, 2008, 04:00:58 pm »
oi obrigado por me responderes e foi optimo pk ja vi k posso contar contigo!
o teste foi adiado p proxima sexta pois , ninguem se encontrava preparado p o fazer!
gostaria de saber do que se trata neste programa que me enviaste.

obrigado

Nelson Carvalho

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49