Forum ZIP'u WI PS

Zarządzanie i Inżynieria Produkcji, Wydział Informatyki, Politechnika Szczecińska


#1 2007-05-30 08:38:35

Soli

Admin

3968046
Zarejestrowany: 2006-10-25
Posty: 410

zaliczenie laborek part 2...

heh spytalem kumpla z infy czy mi zrobi program i kilkakrotnie podkreslalem ze ma byc prymitywny i prosty... no sami zobaczcie co mi dal ;p

#include <stdio.h>

typedef struct NODE
{
    struct NODE *prev;
    struct NODE *next;
    int data;
} NODE;

typedef struct LIST
{
    struct NODE *first;
    struct NODE *last;
} LIST;


NODE *create_node(void)
{
    NODE *ret = (NODE *) malloc(sizeof(struct NODE));
    if (!ret) // zabraklo pamieci, zwroc 0
        return 0;
    ret->prev = 0;
    ret->next = 0;
    ret->data = 0;
    return ret;
}

LIST *create_list(void)
{
    LIST *ret = (LIST *) malloc(sizeof(LIST));
    if (!ret)
        return 0;
    ret->first = 0;
    ret->last = 0;
    return ret;
}

int add(struct LIST *list, int data)
{
    NODE *add = create_node();
    NODE *node;
    if (!add)
        return -1;
    add->data = data;
    if (!list->first)
    {
        list->first = add;
        return 0;
    }
    for (node = list->first; node->next != 0; node = node->next)
        ;
    node->next = add;
    add->prev = node;
list->last = add;
    return 0;
}

int remove_by_data(struct LIST *list, int data)
{
    NODE *node = list->first;
    NODE *del;
    while (node)
    {
        if (node->data == data)
        {
            if (node->prev)
                node->prev->next = node->next;
            if (node->next)
                node->next->prev = node->prev;
            del = node;
        }
        else
            del = 0;
        node = node->next;
        if (del)
            free(del);
    }
    return 0;
}

void destroy_list(struct LIST *list)
{
    NODE *node = list->first;
    NODE *del = 0;
    while (node)
    {
        del = node;
        node = node->next;
        free(del);
    }
    free(list);
}

void print_list(struct LIST *list)
{
    NODE *node = list->first;
    while (node)
    {
        printf("%d", node->data);
        if (node->next)
            printf("-");
        node = node->next;
    }
    printf("\n");
}
int main()
{
int i,z;
struct LIST *list = create_list();
    for(i=1;i<10;i++)add(list, i);
    print_list(list);
    printf("ktora skasowac?")
    scanf("&d",z);
    remove_by_data(list,z);
    print_list(list);
    destroy_list(list);
    return 0;
}

http://img124.imageshack.us/img124/3695/lolvf3.jpg

heh postaram sie to moze jeszcze dzisiaj uda mi sie zdobyc wersje prosta :PP ale jesli ktos czai to cos na gorze to moze przykozaczyc jutro ;p

edit: wprowadzilem mala poprawke aby spelnialo dokladnie to co gosciu chcial

PS: dobra a teraz gdzie moje piwo ;D?


http://miniprofile.xfire.com/bg/os/type/2/Arcantris.png

Offline

 

#2 2007-05-30 10:58:53

Pap

ZIP 10

Skąd: Szczecin Centrum
Zarejestrowany: 2006-10-26
Posty: 1275

Re: zaliczenie laborek part 2...

a sprawdzales czy wogole dziala ?wielkie dzieki znow


Your soul belong to Ass...

Offline

 

#3 2007-05-30 11:11:44

moo-moo

ZIP 10

status 4758023
10760222
Skąd: Szczecin- Centrum
Zarejestrowany: 2006-11-07
Posty: 242

Re: zaliczenie laborek part 2...

yyym a co to jest? to jest ta lista dwukierunkowa która ma kasować i dodawać elemnty czy co innego?


Love what you do and show it!

Offline

 

#4 2007-05-30 11:14:37

Soli

Admin

3968046
Zarejestrowany: 2006-10-25
Posty: 410

Re: zaliczenie laborek part 2...

tak to jest to ;p


http://miniprofile.xfire.com/bg/os/type/2/Arcantris.png

Offline

 

#5 2007-05-30 11:48:12

moo-moo

ZIP 10

status 4758023
10760222
Skąd: Szczecin- Centrum
Zarejestrowany: 2006-11-07
Posty: 242

Re: zaliczenie laborek part 2...

Soli napisał:

list->first = add;
        return 0;
    }
    for (node = list->first; node->next != 0; node = node->next)
        ;
    node->next = add;
    add->prev = node;
donald_w (29-05-2007 21:08)
list->last = add;
    return 0;
}

int remove_by_data(struct LIST *list, int data)
{
    NODE *node = list->first;
    NODE *del;
    while (node)
    {

rozumiem, że bez daty i godziny, w której to dostałeś program działać nie będzie ?


Love what you do and show it!

Offline

 

#6 2007-05-30 13:03:40

Soli

Admin

3968046
Zarejestrowany: 2006-10-25
Posty: 410

Re: zaliczenie laborek part 2...

moo-moo napisał:

Soli napisał:

list->first = add;
        return 0;
    }
    for (node = list->first; node->next != 0; node = node->next)
        ;
    node->next = add;
    add->prev = node;
donald_w (29-05-2007 21:08)
list->last = add;
    return 0;
}

int remove_by_data(struct LIST *list, int data)
{
    NODE *node = list->first;
    NODE *del;
    while (node)
    {

rozumiem, że bez daty i godziny, w której to dostałeś program działać nie będzie ?

gdzie ty to widzisz ;>?


http://miniprofile.xfire.com/bg/os/type/2/Arcantris.png

Offline

 

#7 2007-05-30 13:10:43

moo-moo

ZIP 10

status 4758023
10760222
Skąd: Szczecin- Centrum
Zarejestrowany: 2006-11-07
Posty: 242

Re: zaliczenie laborek part 2...

Soli napisał:

moo-moo napisał:

Soli napisał:

list->first = add;
        return 0;
    }
    for (node = list->first; node->next != 0; node = node->next)
        ;
    node->next = add;
    add->prev = node;
donald_w (29-05-2007 21:08)
list->last = add;
    return 0;
}

int remove_by_data(struct LIST *list, int data)
{
    NODE *node = list->first;
    NODE *del;
    while (node)
    {

rozumiem, że bez daty i godziny, w której to dostałeś program działać nie będzie ?

gdzie ty to widzisz ;>?

baaaardzo zabawne atak fajnie było i wszyscy by się dziwili czemu nie działa albo mieliby problem jakby się gościu od laboratoriów zapytał do czego służy donald


Love what you do and show it!

Offline

 

#8 2007-05-30 13:14:25

Soli

Admin

3968046
Zarejestrowany: 2006-10-25
Posty: 410

Re: zaliczenie laborek part 2...

hehe ;p niema to jak power of edit ^^

ale ciekawe czy ktos by wszyscy tak przepisali ;p pewnie tak bo i tak wszyscy ctrl+c ctrl+v robia ;p

PS: osobiscie to czaje ten program ale jak ten maly czarny terrorysta zacznie pytac o te jego jebane szczegoliki to ja odpadam ;p


http://miniprofile.xfire.com/bg/os/type/2/Arcantris.png

Offline

 

#9 2007-05-30 17:28:43

Kinia

ZIP 12

1363732
Skąd: Sz-n
Zarejestrowany: 2006-10-28
Posty: 642

Re: zaliczenie laborek part 2...

ahahahhahaha ale moc   jeeahhhh ;D

ps thx Soli ponownie


"Szczecin Moim Miastem, Pogoń Moim Życiem..."

Offline

 

#10 2007-05-30 19:21:58

Kasia

ZIP 10

Zarejestrowany: 2006-10-28
Posty: 214

Re: zaliczenie laborek part 2...

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

struct node
{
int a;
int b;
struct node *next;
struct node *previous;
};


void main()
{
struct node *tmp, *root, *tmp1;
int i, w;

tmp = (struct node*)malloc(sizeof(struct node));
tmp->previous = NULL;
root = tmp;

for(i=1;i<=10;i++)
{
tmp->next = (struct node*)malloc(sizeof(struct node));
tmp1 = tmp;
tmp = tmp->next;
tmp->previous = tmp1;
tmp->a = i;
printf("%d\n", tmp->a);
}

tmp->next = NULL;

printf("Podaj element do skasowania:\n");
scanf("%d", &w);

tmp = root->next;

while(tmp)
{
if(tmp->a == w)
{
break;
}
else
{
tmp = tmp->next;
if(tmp == 0)
{
printf("Podano nieprawidlowo\n");
getch();
exit(0);
}
}
}
free((void*)tmp);
getch();
}



A ja mam taka wersje! Ale nie wiem czy to jest dobrze... Bo on wyswietla mi elementy od 1 do 10, pyta co usunąć i niby to robi ale potem juz nie wyswietla tych cyfr bez tej usunietej.

W kazdym razie wyglada krocej i bez bledow.

wersja na samo usuwanie

Offline

 

#11 2007-05-30 20:53:56

Mlody

ZIP 12

3464028
Skąd: Słoneczne
Zarejestrowany: 2006-10-26
Posty: 453
WWW

Re: zaliczenie laborek part 2...

Jako że jestem współałtorem wyżej wymienionego programu dodam tylko, że przerobiłem program źle napisany/przepisany na/z tablicy tak, żeby działał. Gdzieś intuicyjnie dodałem coś od siebie bo czułem że taki był zamysł tego Waszego kolaboranta. Nie wiem czy to jest dobrze, bo nawet nie znam treści zadania. Zrobiłem tylko żeby się kompilował i robił to co wydawało mi się że ma robić.


Pobudka

If you build 1000 bridges and suck one cock, you're not a bridge builder. You're a cock sucker.

Offline

 

#12 2007-05-31 00:10:27

Pap

ZIP 10

Skąd: Szczecin Centrum
Zarejestrowany: 2006-10-26
Posty: 1275

Re: zaliczenie laborek part 2...

EDIT:

dla chetnych informacja:
oba programy i od soliego i od kaski sa takie same pod wzgledem fnkcjonalnosci, tzn kompiluja sie po drobnych korektach kosetycznych, uruchamiaja, wyswietalaja liste i pytaj o element do usuniecia.
tu drogi sie rozjezdzaja, program kasi pyta o element i odrazu sie zamyka po wybraniu elementu
program soliego po wybraniu elementu do usuniecia wyswietla jeszcze raz pierwotna liste i zamyka sie

to takie info jakby ktos tylko wyslal sobie te programy liczac ze ktorys dziala na bank, zeby sie na zajeciach nie zdziwil.

Ostatnio edytowany przez Pap (2007-05-31 00:58:14)


Your soul belong to Ass...

Offline

 

#13 2007-05-31 07:07:29

moo-moo

ZIP 10

status 4758023
10760222
Skąd: Szczecin- Centrum
Zarejestrowany: 2006-11-07
Posty: 242

Re: zaliczenie laborek part 2...

to co dała tutaj Kasia jest niemalże identyczne do tego co gościu pisał na tablicy, różni się naprawdę niewiele i myślę, że on coś takiego właśnie chce. Bo to co dał tutali Soli ma troszkę inaczej sformułowane funkcje niż były podawane na zajęciach


Love what you do and show it!

Offline

 

#14 2007-05-31 09:19:55

Soli

Admin

3968046
Zarejestrowany: 2006-10-25
Posty: 410

Re: zaliczenie laborek part 2...

to wstawic na koncu jeszcze

while(tmp1)
    {
    printf("%d\n",tmp1->a);
    tmp1=tmp1->next;
    }

(chyba tak to szlo)

i nam chyba wydrukuje juz bez usunietego wyrazu (jeszcze nie testowalem ale tak mi sie wydaje)


http://miniprofile.xfire.com/bg/os/type/2/Arcantris.png

Offline

 

#15 2007-05-31 21:29:25

Kasia

ZIP 10

Zarejestrowany: 2006-10-28
Posty: 214

Re: zaliczenie laborek part 2...

Lepiej było miec dzisiaj taki program niż żaden nie narzekać

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora