[C] Waarom een struct ?

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

  • Jaded
  • Registratie: Augustus 2001
  • Laatst online: 07-10 17:02
Ik heb het volgende script in elkaar geflanst:
code:
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
50
51
52
53
54
55
56
57
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int i;
double total;
double numbers;
double average;
int max;
int buffer;
int min;
int sqrsum;
int deviation;

int main()
{
  int *number = malloc(100 * sizeof(int));
    if(number == NULL)
        {
        printf("out of memory\n");
              exit(1);
        }

  printf("The program ends after entering a zero!! \n");
  min=10000;
  for(i=0; i<=99; i++)
  {
     printf("Enter a number:");
     scanf("%d", &buffer);
     number[i] = buffer;

      if(number[i]==0)
      break;

    if (number[i]>max)
       max = buffer;

    if (number[i]<min)
       min = buffer;

     total = total + number[i];
     numbers++;
     sqrsum = sqrsum + pow(number[i], 2.0);
     printf("The number you entered is: %d\n" ,number[i]);
     printf("The total till now = %g\n", total);
     printf("\n");
  }

  average = total/numbers;
  deviation = sqrt((sqrsum - average)/(i-1));

  printf("The minimum = %d\n", min);
  printf("The maximum = %d\n", max);
  printf("The average = %g\n", average);
  printf("The deviation = %d", deviation);
return 0;
}

Nou is dat niet zo moeilijk, maar nou moet er om een of andere vage reden een struct gebruikt worden om een dynamische lijst integers aan te maken, als voorbeeld:

code:
1
2
3
4
5
struct item {
 struct item *prev;
 int value;
 struct item *next;
};


Waarom zou ik daar een struct voor moeten gebruiken, want zolang ik dat niet weet zou ik niet weten hoe het werkt :)

  • noot101
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:43
M.b.v. van zo'n struct kun je makkelijk de hele lijst van integers doorlopen.
Verder is het met deze struct makkelijk om ergens een integer tussen te zetten, bv als je de integers wil sorteren of zoiets

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Dat is het principe van LInked-Lists dacht ik :)

Het is best om daarover eens tutorials ofzo op te zoeken, want linked-lists hier uitleggen lijkt mij toch een beetje lastig.

in het kort:
die linked lists zal bestaan uit 'items'. Een item houdt het getal bij + een verwijzing naar het volgende item in de rij (die vorige is optioneel -- enkel voor dubbele LL).
Met Linked Lists kun je nu eenvoudig een item verwijderen of toevoegen.

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • Neman
  • Registratie: September 2000
  • Laatst online: 09-12 09:44

Neman

Een uit de lucht gegrepen naam

Waarom? Waarschijnlijk zodat je kunt rekenen met extreem grote getallen, buiten het bereik van unsigned integers.

Verwijderd

Jaded schreef op 05 november 2002 @ 19:48:
Waarom zou ik daar een struct voor moeten gebruiken, want zolang ik dat niet weet zou ik niet weten hoe het werkt :)
Laat ik de vraag omkeren, hoe zou je het zonder struct doen?

edit:
Allemachtig, wat een drukte ineens :D

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

met een struct kun je relevante gegevens/eigenschappen bij elkaar grouperen (een soort van object dus)

Een 'item' heeft namelijk 3 eigenschappen: een waarde, een pointer naar het vorige item, en een pointer naar het volgende.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je kan dan met veel krachtigere types werken ipv alleen primitieve types. Hierdoor kan je steeds verder abstraheren (misschien is jouw struct weer een onderdeel van een nog grotere structuur en die weer in een ander etcetc). Het voordeel hieraan is dat je iedere keer op een bepaald abstractie nivo kan kijken, zonder dat je precies moet weten wat er onder en boven je gebeurd.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Neman schreef op 05 november 2002 @ 19:53:
Waarom? Waarschijnlijk zodat je kunt rekenen met extreem grote getallen, buiten het bereik van unsigned integers.


:?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Jaded
  • Registratie: Augustus 2001
  • Laatst online: 07-10 17:02
Ja dat stond ook ongeveer in de opdracht herinner ik me nu. De getallen moeten van hoog naar laag gezet worden. Weet iemand misschien een tutorial ervoor ?
Verwijderd schreef op 05 november 2002 @ 19:53:
[...]

Laat ik de vraag omkeren, hoe zou je het zonder struct doen?

edit:
Allemachtig, wat een drukte ineens :D
Ja ik vond het zo wel een eind goed :P Het werkt iig, das al heel wat voor mij.

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Verwijderd schreef op 05 november 2002 @ 19:53:
[...]

Laat ik de vraag omkeren, hoe zou je het zonder struct doen?

edit:
Allemachtig, wat een drukte ineens :D
niet dacht ik :+
tutorials ?
googlen dacht ik zo:

google in het west-vlaams :Y)

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • Jaded
  • Registratie: Augustus 2001
  • Laatst online: 07-10 17:02
Jongens ik krijg dat ding echt niet op gang, en die tutorials die ik vind , beginnen meteen met de hardcore shit, waar ik dus absoluut geen verstand van heb :(
Ik heb wat op Linked Lists gezocht, maar ook daarbij meteen hele verhalen.

Kan iemand me vertellen hoe ik met mijn bestaande code 1 variabele in de structure kan zetten ?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Begin eerst simpel. Probeer eens een simpele gelinkte lijst te maken met de bij behorende functies zoals: size, add, remove. Het sorteren komt dan vanzelf wel.

Verwijderd

Mij lijkt het dat je van school ook material hebt gekregen waar het een en ander over pointers/structs/lists staat uitgelegd.

Ik heb laatst ook zo'n opdracht gemaakt en je moet zoals alarmnummer zegt eerst heel simpel beginnen. Bijvoorbeeld enkel gelinkt met alleen een functie nextItem(), addItem(int getal), int getItem() en int getSize().

Het belangrijkste zijn de pointers. Wanneer die niet goed staan crasht je programma. Bedenk welke situaties je kan hebben bij het toevoegen. Zijn er al andere items, zijn er nog geen items etc.

  • Jaded
  • Registratie: Augustus 2001
  • Laatst online: 07-10 17:02
Het probleem is dat mijn leraar niet zo goed kan nadenken ofzo. We hebben een waardeloze tutorial gehad waar niks in staat over structures, en zelfs heeft hij een voorbeeld gegeven met gegevens van kids ofzo. Daarbij kon je gewoon zeggen, van de kid met index 12 heeft grade **.

Hierbij zie ik het verband niet, vooral omdat ik die dynamische lijst onzin vind, omdat het op deze manier ook werkt.

  • Dr. Cheeks
  • Registratie: Oktober 2000
  • Laatst online: 29-08 21:27
Kan iemand me vertellen hoe ik met mijn bestaande code 1 variabele in de structure kan zetten ?
Dat kan dus niet zomaar. In het geval van een double linked list als hier gebruikt moet je daar allemaal functies voor schrijven (add(*item, *list) als standaard [zelf te programmeren] functie hiervoor). En je hebt een andere struct nodig om de begin en eind pointer van je list te bewaren. Als schoolopdracht is dit een typische 'leer werken met linked lists' opdracht.

Je zegt dat je Hogere Informatica studeert (met de nadruk op *studeren*), dus pak een boek of ga die college's eens volgen en stop met ons hier lastig te vallen met jou onwil serieus de boel aan te pakken.

Ja sorry hoor, maar ik wordt zo moe van dit soort types die alles uitgespeld willen zien met de meest voor de hand liggende vragen (wat in deze context absoluut het geval is) zonder klaarblijkelijk zelf flink wat moeite te willen doen.

Verwijderd

Jaded schreef op 05 november 2002 @ 22:45:
Ik heb wat op Linked Lists gezocht, maar ook daarbij meteen hele verhalen.
Linked lists, en zeker de bewerkingen hierop, snap je gewoon niet 'even snel'... het is een manier van denken die je moet zien.... zie je die niet en ga je je blind staren op je progsel dat het niet doet dan kan het ook nog wel even duren voordat je het wel snapt denk ik...

  • Jaded
  • Registratie: Augustus 2001
  • Laatst online: 07-10 17:02
Bedankt voor de hulp he.

En als je net een paar lessen C hebt gehad, en je krijgt dit voorgeschoteld, zonder een leerboek te krijgen, en zelfs zonder uitleg, loop ik toch aardig vast.

Verwijderd

Jaded schreef op 05 november 2002 @ 23:22:
Bedankt voor de hulp he.

En als je net een paar lessen C hebt gehad, en je krijgt dit voorgeschoteld, zonder een leerboek te krijgen, en zelfs zonder uitleg, loop ik toch aardig vast.
Tja... boeken moet ook kopen... die krijg je op het HBO niet....

Kijk hier eens goed naar:
http://www.cs.stir.ac.uk/~mew/dissertation/swingsim.htm
http://www.informatik.uni...ang=en&anim=linkedList.en

Wat weet je van linked lists? Hier kan je misschien visueel kijken wat je wilt en hoe het moet

edit:
Deze is volgens mij nog het duidelijkst

  • Jaded
  • Registratie: Augustus 2001
  • Laatst online: 07-10 17:02
Verwijderd schreef op 05 november 2002 @ 23:30:
[...]

Tja... boeken moet ook kopen... die krijg je op het HBO niet....
Ja dat bedoel ik ook eigenlijk, stond niet op de lijst ofzo, maar toch maar eens gaan. Ik check je voorbeelden even.

Thanx

Verwijderd

Doe die laatste maar eens en dan 'stepwise'....

  • xerix
  • Registratie: Januari 2001
  • Laatst online: 10-12-2020
Bekijk dit eens;
http://htsa.ie.hva.nl/~op/theori2/LijstAnimatie.html
http://htsa.ie.hva.nl/~op/theori2/college3.htm
http://htsa.ie.hva.nl/~op/theori2/college5.htm
Misschien dat je het princiepe van linked list dan (beter) begrijpt. De implementatie ervan is niet zo moeilijk met enige C kennis.

vtec just kicked in yo!


  • T-Blizzard
  • Registratie: Juni 2001
  • Laatst online: 12-12 20:33
Jaded schreef op 05 november 2002 @ 23:16:
Het probleem is dat mijn leraar niet zo goed kan nadenken ofzo. .....
Denk dat meneer Atw... dat nie zo leuk vind lol :P Hij heeft er volges mij een boel veel verstand van alleen overbrengen is een tweede...
Maar ach zit ook te klooien met mijn opdracht.... Inderdaad knudde dat je het met die bij mekaar geraapte tutorials moet doen. Heb ook gewoon een C boek gekocht :) kom je een eind mee.

Verwijderd

T-Blizzard schreef op 05 november 2002 @ 23:58:
Inderdaad knudde dat je het met die bij mekaar geraapte tutorials moet doen. Heb ook gewoon een C boek gekocht :) kom je een eind mee.
Knudde dat hij te lui is geweest om dat boek te kopen en wij die tutorials ook nog voor hem mochten zoeken.... }:O :/

  • T-Blizzard
  • Registratie: Juni 2001
  • Laatst online: 12-12 20:33
Verwijderd schreef op 06 november 2002 @ 00:08:
[...]


Knudde dat hij te lui is geweest om dat boek te kopen en wij die tutorials ook nog voor hem mochten zoeken.... }:O :/
Met die tutorials bedoel ik "De tutorials die de leraar overal vandaan heeft gehaald " }:O

  • Jaded
  • Registratie: Augustus 2001
  • Laatst online: 07-10 17:02
T-Blizzard schreef op 05 november 2002 @ 23:58:

Denk dat meneer Atw... dat nie zo leuk vind lol :P Hij heeft er volges mij een boel veel verstand van alleen overbrengen is een tweede...
Maar ach zit ook te klooien met mijn opdracht.... Inderdaad knudde dat je het met die bij mekaar geraapte tutorials moet doen. Heb ook gewoon een C boek gekocht :) kom je een eind mee.
Hij heeft er inderdaad een boel verstand van ja, maar eerst een lap code oplezen en dan zeggen 'Snap je het niet?', noem ik niet echt lesgeven :)

  • T-Blizzard
  • Registratie: Juni 2001
  • Laatst online: 12-12 20:33
Denk je dat jij er nog uit ga komen?....


Ik zit helemaal vast.... :/

  • Jaded
  • Registratie: Augustus 2001
  • Laatst online: 07-10 17:02
:D Denk t niet...
ICQ/Trillian ???

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 28-11 08:35

curry684

left part of the evil twins

By the way:
Jaded schreef op 05 november 2002 @ 19:48:
Ik heb het volgende script in elkaar geflanst:
Ik vind het zeer beledigend om C(++) een scripttaal te noemen. Ga je mond spoelen met water en zeep!

Professionele website nodig?


  • Jaded
  • Registratie: Augustus 2001
  • Laatst online: 07-10 17:02
curry684 schreef op 06 november 2002 @ 12:45:
By the way:

[...]

Ik vind het zeer beledigend om C(++) een scripttaal te noemen. Ga je mond spoelen met water en zeep!
Sorry !!! ;(

edit: Rare opmerking icm met je ondertitel :*)

Verwijderd

Hmm.. dat is wel een heel erg toevallige gelijkenis :)[/quote]

Ja oke maar ik wil het gewoon vanuit een struct doen en er niet omheen.
Mijn probleem is ook nog eens dat ik 7 lessen c heb gehad en geen verdere programeer ervaring heb..

Maar jah je moet het met dat stukkie code doen..

Maar zoals je zei werkt het nog niet helemaal maar hij doet wat...
ken ik weer verder :)

Verwijderd

Trouwens vraagje:
Als je zoiets hebt als prev->value dan is dit hetzelfde als (*prev).value dat zou dus betekenen dat de waarde opgeslagen in prev het adres aanwijst van value.. volgens mijn documentatie maar is dat wel zo...?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, prev wijst naar een ander item. En door er .value achter te zetten kies je de member met de naam 'value'

prev wijst dus niet naar die value, maar naar het item wat die value omhult

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

thanx is erg onduidelijk voor beginner...

  • AaroN
  • Registratie: Februari 2001
  • Laatst online: 16-08-2023

AaroN

JayGTeam (213177)

je gebruikt volgens mij struct omdat haar members standaard public zijn, bij een class zijn ze standaard private. Verder is dit een standaard voorbeeld van de datastructuur Linked List. Prev wijst naar de vorige in de lijst en next naar de volgende.
ipv struct kun je ook class <vulhiernaamin> {public:...} gebruiken.

JayGTeam (213177)


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 10-12 17:10
AaroN schreef op 07 november 2002 @ 12:03:
je gebruikt volgens mij struct omdat haar members standaard public zijn, bij een class zijn ze standaard private. Verder is dit een standaard voorbeeld van de datastructuur Linked List. Prev wijst naar de vorige in de lijst en next naar de volgende.
ipv struct kun je ook class <vulhiernaamin> {public:...} gebruiken.
Ware het niet dat C niets snapt van public of private of ook maar iets wat met access rechten in klassen te maken heeft.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1