Soli - 2007-05-17 20:06:14

#include <stdio.h>
#include <stdlib.h>
struct node
{
    int age;
    float weight;
    char name[16];
    double salary;
    struct node *next;
};
int main()
{
int i;
struct node *x,*tmp;
x=(struct node*)malloc(sizeof(struct node));
tmp=x;
for(i=1;i<=10;i++)
    {
    tmp->next=(struct node*)malloc(sizeof(struct node));
    tmp=tmp->next;
    tmp->age=i;
    }
tmp->next=0;
tmp=x;
for(i=1;i<=10;i++)
    {
    printf("%d\n",tmp->age);
    tmp=tmp->next;
    if(tmp->next==0){break;}
    }
}



chyba sie przyda :)?

Kasia - 2007-05-17 20:17:44

:* kochani...

celina - 2007-05-17 20:45:50

dziękować dziękować:D

Pap - 2007-05-18 00:11:56

soli a co on robi?

Soli - 2007-05-18 08:55:04

ciezko wyjasnic ;p chodzi o to ze tworzysz 10 strukture danych gdzie np pierwsza po wprowadzeniu danych sama przechodzi do nastepnej gdzie tez wypelnia sie dane a ta nastepna przechodzi do jeszcze nastepnej itd az dojdzie do koncowej i wtedy przerwie dzialanie petli i wyswietli zawartosc kazdej struktury na monitorze ;p

Pap - 2007-05-18 13:48:09

chcialem sie upewnic czy to to samo co my mamy zrobic ;)

Kinia - 2007-05-18 20:25:39

dziekowac :*

Kasia - 2007-05-23 18:28:03

A powiedzcie mi szybko jak on chcial zeby  mu ten program przynieść? Jak wysle sobie na maila skompilowany programem to bedzie ok?

Kinia - 2007-05-23 19:07:55

bedzie ok;p
ogolnie nam powiedzial tyle co " jak juz przepiszecie od kolegi program to chcoaiz sie nauczcie co jest co i jak dziala" ;p wiec mozesz se na maila wrzucic czy gdzies tam kolwiek ;>

Kasia - 2007-05-23 19:17:54

:D hehe dobra przez zdalny pulpit juz sobie wrzucilam na konto :)

Mlody - 2007-05-23 19:27:01

Tak w ogóle to błąd jest...

Zamiast tmp=x; powinno być tmp=x->next; no chyba że ma wyświetlać na początku jakieś bzdury z pierwszej struktury, gdzie do age'a nic się nie przypisuje i ma on tym samym jakąś losową wartość, która jest w tej komórce pamięci.

No i if(tmp->next==0){break;} powinno być przed tmp=tmp->next;
A tak w ogóle to to if(tmp->next==0){break;} jest zupełnie niepotrzebne, bo pętla i tak tylko 10 razy przeleci.

Poza tym good job Soli. Jak sam pisałeś to szacuneczek :)

Soli - 2007-05-23 19:46:21

do age przypisuje sie kolejno 1,2,3 itd (  tmp->age=i;  ), a wyswietla to dopiero w drugim forze, a co to do tego if'a to tez tak uwazalem ale gosc sie uparl zeby byl ;p, wazne ze program w takiej postaci dziala i robi to co ma robic ;p

moo-moo - 2007-05-23 23:15:43

a mi nie działa...
w ogóle dlaczego jest na początku "};" po co ten średnik? Pierwszy raz się spotkałam z nim w tym miejscu i mam wrażenie, że jest tam przez przypadek. (?)

Kinia - 2007-05-23 23:22:24

przypadek chyba ;)

moo-moo - 2007-05-23 23:24:46

tylko, że po kompilacji nie działa. znaczy się jak jest średnik to nie ma błędów ale program nie działa- pojawia się i znika, a jak nie ma średnika to jest kilka błędów.

Mlody - 2007-05-23 23:26:16

Nie jest przez przypadek. Przy definicji struktury zawsze po klamerce jest średnik i nic na to nie poradzisz :)

Soli napisał:

do age przypisuje sie kolejno 1,2,3 itd (  tmp->age=i;  ), a wyswietla to dopiero w drugim forze,

No tak, tylko że po dynamicznej alokacji pierwszej struktury tworzysz kolejne 10 (czyli razem masz 11) i do nich przypisujesz kolejno 1, 2, 3 itd. a z tą pierwszą nic nie robisz. Za to wyświetlanie zaczynasz od tej pierwszej, z którą nic nie zrobiłeś i dlatego wychodzi:

Kod:

przypadkowa_wartość
1
2
3
4
5
6
7
8
9

No chyba że ma tak być :)

Soli napisał:

a co to do tego if'a to tez tak uwazalem ale gosc sie uparl zeby byl ;p, wazne ze program w takiej postaci dziala i robi to co ma robic ;p

A no to spoko. Widzę że ten koleś ma jeszcze mniejszą wiedzę od umiejętności nauczania. I to mówię ja - chujowy programista!

EDIT:
Mu, nie słuchaj się tej postu wyżej. Nic dziwnego że są błędy, bo ten średnik po prostu MUSI być.

A program DZIAŁA, tylko że nie widzisz co on wyświetla, bo to okienko dialogowe znika, zanim zdążysz je zobaczyć. Daj przed ostatnią klamerką getch(); to okienko nie zniknie, dopóki nie wciśniesz jakiegoś klawisza.

W ogóle to dałbym jeszcze na końcu return 0; albo zmienił int main() na void main(), ale to już czyste czepialstwo, koleś i tak pewnie tego nie doceni bo sam nie wie o co w tym chodzi.

A tak w ogóle to chuj mnie to wszystko obchodzi, bo i tak Liverpool przegrał... Jebane mediolańskie fartuchy...

Kinia - 2007-05-23 23:50:08

darowal bys se. a po 2 bylo: CHYBA

Mlody - 2007-05-24 00:01:01

Ja tutaj koleżance Mu próbuję pomóc więc nie przeszkadzaj z łaski swojej skoro nic konkretnego nie masz do powiedzenia. Przeszkadzasz tylko. A daruję sobie jak już jej program zacznie działać.

I nie denerwuj mnie jak pijany jestem i moja drużyna przegrała w finale Ligi Mistrzów.

EDIT:
Mu, nie jestem pewien czy jakiegoś inkluda nie trzeba dodać przy okazji tego getch(); więc daj znać czy się udało. Jeśli nie to spróbuj na początku #include <conio.h>
Ja już nie pamiętam które biblioteki za co odpowiadały.

moo-moo - 2007-05-24 00:18:52

Mlody napisał:

EDIT:
Mu, nie słuchaj się tej postu wyżej. Nic dziwnego że są błędy, bo ten średnik po prostu MUSI być.

A program DZIAŁA, tylko że nie widzisz co on wyświetla, bo to okienko dialogowe znika, zanim zdążysz je zobaczyć. Daj przed ostatnią klamerką getch(); to okienko nie zniknie, dopóki nie wciśniesz jakiegoś klawisza.

W ogóle to dałbym jeszcze na końcu return 0; albo zmienił int main() na void main(), ale to już czyste czepialstwo, koleś i tak pewnie tego nie doceni bo sam nie wie o co w tym chodzi.

A tak w ogóle to chuj mnie to wszystko obchodzi, bo i tak Liverpool przegrał... Jebane mediolańskie fartuchy...

dziękuję za wyczerpującą odpowiedź :)

Mlody napisał:

Ja tutaj koleżance Mu próbuję pomóc więc nie przeszkadzaj z łaski swojej skoro nic konkretnego nie masz do powiedzenia. Przeszkadzasz tylko. A daruję sobie jak już jej program zacznie działać.

I nie denerwuj mnie jak pijany jestem i moja drużyna przegrała w finale Ligi Mistrzów.

EDIT:
Mu, nie jestem pewien czy jakiegoś inkluda nie trzeba dodać przy okazji tego getch(); więc daj znać czy się udało. Jeśli nie to spróbuj na początku #include <conio.h>
Ja już nie pamiętam które biblioteki za co odpowiadały.

Nie wiedziałam o tym średniku i dzięki za wyjaśnienie. Okienko faktycznie wyświetlało się i od razu znikało, więc już jest ok :) dziękuję jeszcze raz

Mlody - 2007-05-24 00:22:42

Anytime.

No to mogę już iść spać. G'luck.

Soli - 2007-05-24 00:49:14

void ma czasem jazdy w linuxie ;p wiec wole uzywac int main ;p a co do tej losowej wartosci to mi zawsze ona zero na starcie wynosi i sie wlasnie zastanawiam warum ;]

Pap - 2007-05-24 01:21:41

tu jest wersja dla zip10 (wedlug danych z naszych zajec bez zbednych dodatkow i na 100 dzialajaca)
#include<stdlib.h>
#include<stdio.h>

struct nazwa{
int klucz;
char nazwisko[16];
struct nazwa *next;
};
int main(){
int i;
struct nazwa *x,*tmp;
x=(struct nazwa*)malloc(sizeof(struct nazwa));
tmp=x;
for(i=1;i<=10;i++){
  tmp->next=(struct nazwa*)malloc(sizeof(struct nazwa));
  tmp=tmp->next;
  tmp->klucz=i;
}
tmp->next=0;
tmp=x->next;
printf("\n tadam (werble)!!!:\n");
for(i=1;i<=10;i++){
  printf("  %d\n",tmp->klucz);
  tmp=tmp->next;
}
printf("\n");
}

moo-moo - 2007-05-24 07:29:27

A propo C. Sama w liceum miałam ten język, ale mój informatyk nie był zbyt hojny jeśli chodzi o przekazywanie wiedzy i raczej nie chciało mu się niczego tłumaczyć. Zajęcia polegały na podaniu treści zadania i 'robieniu' programu. Jak nie umiesz to pała. Czasami podał jakieś wskazówki, ale generalnie nic szczególnego. Jedyne co zrozumiałam to jakieś elementy z grafiką i byłam dumna, że sama napisałam program, w którym koło poruszało się od jednej strony monitora do drugiej. Cieszyłam się jak się skończyło programowanie o ile można to tak nazwać.

Ale do rzeczy. Tu też raczej nie podają nam wystarczającą liczbę wskazówek, zresztą nie ma na to czasu, bo laboratoria są tylko jedne. Czy zna ktoś z Was może jakąś książkę, którą mógłby mi polecić jeśli sama chcę trochę o tym poczytać? Jak na razie to książki, na które natrafiłam miały zupełnie inne funkcjie niż te których my używamy na zajęciach a skoro słabo znam ten język to ciężko skojarzyć co jest co. Będę wdzięczna za taką informację i na pewno nie tylko ja :)
Może jakiś kurs internetowy, coś w rodzaju samouczka :P chociaż i tak najlepiej książka :)

Loczek - 2007-05-24 08:14:38

moo-moo samouczek w formie dosc przejrzystego kursu:

http://pl.wikibooks.org/wiki/Programowanie:C

Mlody - 2007-05-24 09:43:00

Mu, nie wiem jak z czystym ANSI C (ja się go uczyłem z jakiejś ksiażki "Język C w 24h" czy coś takiego), ale jak chcesz się nauczyć C++ to tylko i wyłącznie "Symfonia C++ Jerzego Grębosza. Koleś pisze naprawdę przystępnym językiem, nie żadne akademickie pierdolenie. Fajnie się czyta i wszystko można zrozumieć. Jedyny minus - 3 tomy :) Ale naprawdę polecam, mimo że nie lubię czytać książek.

Wersja elektroniczna: http://www.sendspace.com/file/a4lajj (trzeba zainstalować ten plugin i można to otwierać, w Operze na bank, nie wiem jak w innych browserach)

Pap, Twój program na oko wygląda ok, ale znalazłem zbędny dodatek :) tmp->next=0;
No chyba że to była część danych z Waszego zadania. Ale tak w ogóle to wskaźnikom się przypisuje NULL, a nie 0, ale to już kosmetyka.

Soli - 2007-05-24 09:56:21

tez polecam "symfonie", nawet gdzies mialem 3 tomy, ale juz sie dawno zapodzialy gdzies ;]

moo-moo - 2007-05-24 11:20:42

dziękuję bardzo. trochę ciężko otworzyć tą symfonię, ale jeszcze później pokombinuję

Pap - 2007-05-24 12:30:02

wiem ze jest zbedny ale on go chcial zeby sie zerowal "tak dla zasady" ;)
moo-moo jak umiesz sie poslugiwac angielskim to proponuje ci ksiazki z serii ... for dummies
"C for dummies"
okreslenia i tlumaczenia tam stosowane sa naprawde jak dla idiotow :)

Mlody - 2007-05-24 16:23:29

Aaaa no to wszystko jasne, ale wskaźniki zeruje się NULLem :)

Symfonia też jest "for dummies", tylko że po polsku hehe ;)

Pap - 2007-05-24 18:35:51

ale ksiazki serii for dummies nie maja 3 tomow ;) a sa naprawde przystepne nawet jak ktos malo zna angielski
co do tego nulla to ten maly czarny idiota polecil wpisywac zero :P no ale juz nie wazne, dzis wyszlo jaki skurwiel z niego naprawde