[C] Snap 't ff niet.

Pagina: 1
Acties:

  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Hoi,
Iik zit met een klein probleempje. Ben nogal nieuw in C, maar moet dus een paar simpele programmatjes bouwen in C, maar met 1tje heb ik echt een probleem, zit 'r al een uur naar te staren..

Gaat om 't volgende:
Schrijf een programma dat 10 reële getallen inleest in een tabel, het gemiddelde bepaalt, het aantal getallen berekent dat kleiner is dan het gemiddelde en het aantal groter dan het gemiddelde. Druk de berekende waarden af.
Moet toch simpel zijn.....
Maar nu heb ik 2 vragen. Tot nu toe heb ik dit in elkaar gekloot:
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
#include<stdio.h>
#include<conio.h>
int main()
{
 float getal[9], totaal, gemiddelde;
 int i, kleiner=0, groter=0;

 for (i=0; i<=9; ++i)
 {
  scanf("%f", &getal[i]);
 }
 for (i=0; i<=9; ++i)
 {
  totaal += getal[i];
 }
 gemiddelde = totaal/10;
 for (i=0; i<=9; ++i)
 {
  if (getal[i] > gemiddelde)
   {groter = ++groter;}
  else
   {kleiner = ++kleiner;}
 }
   printf("Het gemiddele is: %f \n"
      "Aantal getallen groter dan gemiddelde:  %d \n"
      "Aantal getallen kleiner dan gemiddelde: %d", gemiddelde, groter, kleiner);
}

En dan krijg ik als output:
[code]5
6
7
5
5
5
5
5
5
5
Het gemiddelde is: 5.30000
Groter dan gemiddelde: 16546
Kleiner dan gemiddelde: 8
[code]

Bij alles wat ik invul klopt het gemiddelde en het aantal kleiner dan gem..
Alleen het groter dan klopt dus duidelijk niet.
Maar als ik nu bij de variabelen declaratie groter en kleiner omwissel, dus:
code:
1
int i, groter=0, kleiner=0;

Dan klopt groter dan gem. wel en kleiner weer niet :?

Snap 'r niks meer van....

Zal wel wat simpels zijn, maar zie d'r nix meer in hoor.

2e vraag: als ik het inlezen en optellen in 1 for-lus zet dan krijg ikal som steeds 0...
Waarom?

Oh ja: Ik krijg dit niet voor elkaar met minder dan 3 for-lusjes. Klopt dat?

Hartelijk bedankt alvast.

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Noedelsupke
  • Registratie: Maart 2001
  • Laatst online: 18-07-2023
IF NOT jp.brands THEN log out :D

PIII 800@804 Mhz


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

TH rijswijk?

Doet iets met Cloud (MS/IBM)


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 17:57 schreef ViperGTS het volgende:
IF NOT jp.brands THEN log out :D
Dat is Pascal :P

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 17:58 schreef D2k het volgende:
TH rijswijk?
Nee. HSZ zie profiel.

En nu serieus aub!

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
code:
1
float getal[9], totaal, gemiddelde;

je moet 10 getallen inlezen, dus moet je getal declareren als getal[10]

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

Op zondag 09 september 2001 18:04 schreef marcusk het volgende:
[code]
float getal[9], totaal, gemiddelde;
[code]

je moet 10 getallen inlezen, dus moet je getal declareren als getal[10]
is het niet zo dat de base (laagste van een rij) op nul staat?

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:04 schreef marcusk het volgende:
[code]
float getal[9], totaal, gemiddelde;
[code]

je moet 10 getallen inlezen, dus moet je getal declareren als getal[10]
Nee, hij begint bij 0.
En hij leest ook gewoon 10 getallen in, dat klopt.

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:04 schreef limoentje het volgende:

[..]

is het niet zo dat de base (laagste van een rij) op nul staat?
Ja.

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 09 september 2001 18:04 schreef LiquidSilver het volgende:
Nee, hij begint bij 0.
En hij leest ook gewoon 10 getallen in, dat klopt.
Behalve dat getal[9] de laaste van de declaratie `float getal[10]' niet opgeslagen wordt...

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zondag 09 september 2001 17:53 schreef LiquidSilver het volgende:
Oh ja: Ik krijg dit niet voor elkaar met minder dan 3 for-lusjes. Klopt dat?
Je kunt de eerste en tweede loop combineren.

  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:07 schreef marcusk het volgende:

[..]

Je kunt de eerste en tweede loop combineren.
Zie vraag 2. Dan krijg ik al som '0'.

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

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
#include<stdio.h>
#include<conio.h>
int main()
{
  float getal[10], totaal = 0.0, gemiddelde = 0.0;
  int i, kleiner=0, groter=0;

  for (i=0; i < 10; i++)
  {
    scanf("%f", &getal[i]);
    totaal += getal[i];
  }
  gemiddelde = totaal/10;
  for (i=0; i < 10; i++)
  {
    if (getal[i] > gemiddelde)
    groter++;
    else
    kleiner++;
  }
  printf("Het gemiddele is: %f \n", gemiddelde);
  printf("Aantal getallen groter dan gemiddelde:  %i \n", groter);
  printf("Aantal getallen kleiner dan gemiddelde: %f", kleiner);
}

zo vind ik het toch echt mooier en duidelijker en werkt het waarschijnlijk... ?

  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:11 schreef ACM het volgende:
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
#include<stdio.h>
#include<conio.h>
int main()
{
  float getal[10], totaal = 0.0, gemiddelde = 0.0;
  int i, kleiner=0, groter=0;

  for (i=0; i < 10; i++)
  {
    scanf("%f", &getal[i]);
    totaal += getal[i];
  }
  gemiddelde = totaal/10;
  for (i=0; i < 10; i++)
  {
    if (getal[i] > gemiddelde)
    groter++;
    else
    kleiner++;
  }
  printf("Het gemiddele is: %f \n", gemiddelde);
  printf("Aantal getallen groter dan gemiddelde:  %i \n", groter);
  printf("Aantal getallen kleiner dan gemiddelde: %f", kleiner);
}

zo vind ik het toch echt mooier en duidelijker en werkt het waarschijnlijk... ?
Heey bedankt man!
Is wat mooier ja, maar probleem is dat in nu krijg:
"Aantal getallen kleiner dan gemiddelde: 0"

Groter klopt nog steeds....

Dus, nog steeds hetzelfde probleem :(

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

euh, die laatste %f moet een %i zijn ;)

  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:16 schreef ACM het volgende:
euh, die laatste %f moet een %i zijn ;)
ACM ik stuur jou een krat bier!

Bedankt! Werkt perfect :) Zat daar al een uur naar te staren.
Maar nou heb ik nog 1 vraagje, anders moet in 'mn leraar kwaad gaan aankijken.

Hij heeft duidelijk verteld dat als je 10 getallen moet inlezen, je een array moet maken van [9], omdat de index begint met 0.

Jij doet het met [10] en werkt veel simpeler.
Wie heeft gelijk?

Was zelf ook al bezig met [10] in de les, komt hij: "Doe dat met [9]"
Is dat soms omdat bij [9] er geen "\0" karakter in 't array past ofzo?

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Nope...
Je maakt een array van 10 getallen. (float getal[10])

En die telt van 0-9 (dus niet 1-10) (for i=0, i<10 of i<=9)

Verwijderd

Alle oplossingen tot nu toe zijn niet correct >:)
code:
1
2
3
4
if (getal[i] > gemiddelde)
   {groter = ++groter;}
  else
   {kleiner = ++kleiner;}
Schrijf een programma dat 10 reële getallen inleest in een tabel, het gemiddelde bepaalt, het aantal getallen berekent dat kleiner is dan het gemiddelde en het aantal groter dan het gemiddelde. Druk de berekende waarden af.
Ik zie alleen maar berekeningen van het aantal groter, en het aantal kleiner of gelijk dan het gemiddelde.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zondag 09 september 2001 18:20 schreef LiquidSilver het volgende:
Hij heeft duidelijk verteld dat als je 10 getallen moet inlezen, je een array moet maken van [9], omdat de index begint met 0.

Jij doet het met [10] en werkt veel simpeler.
Wie heeft gelijk?

Was zelf ook al bezig met [10] in de les, komt hij: "Doe dat met [9]"
Is dat soms omdat bij [9] er geen "\0" karakter in 't array past ofzo?
Ook al zo'n slimme leraar, net als van dat delen-topic (http://gathering.tweakers.net/forum/list_messages/222530/1?limit=35). Bij de declaratie geef je het aantal elementen van de array op, bij het gebruik v/d array de index, en dat laatste gaat idd van nul naar aantal-1.

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

Houd je er nog wel rekening mee dat getallen die nu gelijk zijn aan het gemiddelde als kleiner worden genoteerd :?

[edit] Oh, dat was al gemeld :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 09 september 2001 18:23 schreef mietje het volgende:
Ik zie alleen maar berekeningen van het aantal groter, en het aantal kleiner of gelijk dan het gemiddelde.
Ik wist dat al :)

maar had geen zin die if/else verder aan te passen ;)

De docent zal het verschil toch wel niet zien, lijkt me :+

Verwijderd

Op zondag 09 september 2001 17:57 schreef ViperGTS het volgende:
IF NOT jp.brands THEN log out :D
HS Zuyd ?

  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:23 schreef Timpie2000 het volgende:
Houd je er nog wel rekening mee dat getallen die nu gelijk zijn aan het gemiddelde als kleiner worden genoteerd :?

[edit] Oh, dat was al gemeld :)
Ja dat weet ik, was ik vergeten erbij te zetten.
Dat moet in nog ff fixen.
Bedankt!

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:26 schreef deur het volgende:

[..]

HS Zuyd ?
Ja :D
JP-terror bekend? >:)
Is trouwens niet m'n C-leraar.

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Noedelsupke
  • Registratie: Maart 2001
  • Laatst online: 18-07-2023
Op zondag 09 september 2001 18:26 schreef deur het volgende:

[..]

HS Zuyd ?
:D inderdaad, jij ook?

PIII 800@804 Mhz


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:22 schreef ACM het volgende:
Nope...
Je maakt een array van 10 getallen. (float getal[10])

En die telt van 0-9 (dus niet 1-10) (for i=0, i<10 of i<=9)
Ik ga morgen eens met 'm in discussie. Bedankt.

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


Verwijderd

Op zondag 09 september 2001 18:29 schreef ViperGTS het volgende:

[..]

:D inderdaad, jij ook?
ja, en LiquidSilver misschien ook ;)

Verwijderd

Op zondag 09 september 2001 18:25 schreef ACM het volgende:
De docent zal het verschil toch wel niet zien, lijkt me :+
Ben benieuwd wat die docent zegt over constructies als
groter = ++groter;

Ik persoonlijk wordt daar altijd ff onwel van :+

  • Noedelsupke
  • Registratie: Maart 2001
  • Laatst online: 18-07-2023
Op zondag 09 september 2001 18:30 schreef deur het volgende:

[..]

ja, en LiquidSilver misschien ook ;)
LiquidSilver zeker ook.........zat bij me in de klas :)

PIII 800@804 Mhz


Verwijderd

Op zondag 09 september 2001 18:33 schreef ViperGTS het volgende:

[..]

LiquidSilver zeker ook.........zat bij me in de klas :)
Welke klas?

  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:34 schreef deur het volgende:

[..]

Welke klas?
Nu ik in I3A.
Vroeger ITI2D

Ik heb je foto al opgezocht op 't intranet, maar ik ken je niet Bas :D

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


Verwijderd

ik had het ook al gevonden.

Ken jij Joachim, die ken ik nml wel?

  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 18:31 schreef mietje het volgende:

[..]

Ben benieuwd wat die docent zegt over constructies als
groter = ++groter;

Ik persoonlijk wordt daar altijd ff onwel van :+
Die heb ik nu eruit gehaald :D

Dat heb ik nog helemaal niet geleerd jong :P Heb pas 2 uur theorie gehad, misschien wordt ik ook ooit goed in C, voorlopig probeer ik gewoon nog wat met de rest mee te kloten :P

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Oh, zie net at de leraar 't goed verteld had.

Ik heb 't alleen verkeerd begrepen :) |:(

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


Verwijderd

zorg maar dat je het een beetje snapt, je bent er voorlopig nog niet van af.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zondag 09 september 2001 18:31 schreef mietje het volgende:

[..]

Ben benieuwd wat die docent zegt over constructies als
groter = ++groter;

Ik persoonlijk wordt daar altijd ff onwel van :+
maar het is niet fout, en het wordt waarschijnlijk nog gewoon weg geoptimalizeert ook :)

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.


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 19:41 schreef deur het volgende:
zorg maar dat je het een beetje snapt, je bent er voorlopig nog niet van af.
Ik snap 't tot nu toe vrij goed :)

Maar ik zag aleen de fout niet, omdat de leraar nog met me heeft dorgesproken wat ik al had staan en die zei dat die [9] goed was.....
Was wel een jong ventje trouwens :P Dus die vertouw ik al niet meer ;)

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 20:34 schreef OiSyN het volgende:

[..]

maar het is niet fout, en het wordt waarschijnlijk nog gewoon weg geoptimalizeert ook :)
Ja en zover had ik nog niet hoeven leren :D

Dus nu heb ik vast een pluspuntje ;)

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


Verwijderd

Op zondag 09 september 2001 20:42 schreef LiquidSilver het volgende:
Dus nu heb ik vast een pluspuntje ;)
Toch nog ff plagen :)

Run je programma, geef 10 maal een 5 in en kijk naar de output... Hmm, 10 getallen kleiner dan het gemiddelde 5? ;)

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zondag 09 september 2001 21:02 schreef mietje het volgende:

[..]

Toch nog ff plagen :)

Run je programma, geef 10 maal een 5 in en kijk naar de output... Hmm, 10 getallen kleiner dan het gemiddelde 5? ;)
code:
1
2
3
4
if (getal[i] > gemiddelde)
   groter++;
else if (getal[i] < gemiddelde)
   kleiner++;

zo krijg je misschien nog wel een puntje erbij ;)

  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op zondag 09 september 2001 21:07 schreef marcusk het volgende:

[..]
code:
1
2
3
4
if (getal[i] > gemiddelde)
   groter++;
else if (getal[i] < gemiddelde)
   kleiner++;

zo krijg je misschien nog wel een puntje erbij ;)
Ja bedankt en mietje ook.
Ik had het al zo gedaan. Alleen dan zonder de "else" gewoon 2x "if".

Viel me ook al in.
Thanx anyway.

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

dus alles even in mooie nette geoptimalizeerde code:
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
int main()
{
    float getal[10], totaal, gemiddelde;
    int i, kleiner = 0, groter = 0;

    for (i = 0; i < 10; i++)
    {
      if (scanf ("%f", &getal[i]) != 1)
      {
        printf ("foute invoer!\n");
        return 1;
      }
      totaal += getal[i];
    }

    gemiddelde = totaal / 10;

    for (i = 0; i < 10; i++)
    {
      if (getal[i] > gemiddelde)
        groter++;
      else if (getal[i] < gemiddelde)
        kleiner++;
    }
 
    printf ("Het gemiddele is: %f\n"
        "Aantal getallen groter dan gemiddelde:  %d\n"
        "Aantal getallen kleiner dan gemiddelde: %d\n",
        gemiddelde, groter, kleiner);
}

gelijk even een check ingebouwd die controleert of de invoer wel goed is (krijg je vast nog een pluspuntje voor) :)
wie wilt dat even asm'en? :P (ik heb er zelf effe geen zin in nu :))

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.


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op maandag 10 september 2001 01:31 schreef OiSyN het volgende:
dus alles even in mooie nette geoptimalizeerde code:
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
int main()
{
    float getal[10], totaal, gemiddelde;
    int i, kleiner = 0, groter = 0;

    for (i = 0; i < 10; i++)
    {
      if (scanf ("%f", &getal[i]) != 1)
      {
        printf ("foute invoer!\n");
        return 1;
      }
      totaal += getal[i];
    }

    gemiddelde = totaal / 10;

    for (i = 0; i < 10; i++)
    {
      if (getal[i] > gemiddelde)
        groter++;
      else if (getal[i] < gemiddelde)
        kleiner++;
    }
 
    printf ("Het gemiddele is: %f\n"
        "Aantal getallen groter dan gemiddelde:  %d\n"
        "Aantal getallen kleiner dan gemiddelde: %d\n",
        gemiddelde, groter, kleiner);
}

gelijk even een check ingebouwd die controleert of de invoer wel goed is (krijg je vast nog een pluspuntje voor) :)
wie wilt dat even asm'en? :P (ik heb er zelf effe geen zin in nu :))
Hey thanx dude!
Jullie hebben zeker niks beters te doen :) Geluk dat ik dit nog ff lees!

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Noedelsupke
  • Registratie: Maart 2001
  • Laatst online: 18-07-2023
vanaf nu rekent LiquidSilver iedere week op de steun van tweakers.net als hij weer een nieuwe opdracht krijgt :D

PIII 800@804 Mhz


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op maandag 10 september 2001 01:45 schreef ViperGTS het volgende:
vanaf nu rekent LiquidSilver iedere week op de steun van tweakers.net als hij weer een nieuwe opdracht krijgt :D
Hey, ook nog op! Ik ga slapen. Adie!

En ja, volgende week zal ik m'n nieuwe opdracht wel posten >:)

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ik moet zeggen dat de 'ervaren' programmeurs hier allemaal erg behulpvaardig zijn bij een huiswerk opdracht dit keer, daar heb je mazzel mee liquid ;)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 21-09 18:48

Tuinhark

Retro

Iemand vroeg om de ASM code? >:)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
    .686p
    ifdef ??version
    if    ??version GT 500H
    .mmx
    endif
    endif
    model flat
    ifndef  ??version
    ?debug  macro
    endm
    endif
    ?debug  S "test.c"
    ?debug  T "test.c"
_TEXT   segment dword public use32 'CODE'
_TEXT   ends
_DATA   segment dword public use32 'DATA'
_DATA   ends
_BSS    segment dword public use32 'BSS'
_BSS    ends
DGROUP  group   _BSS,_DATA
_TEXT   segment dword public use32 'CODE'
_main   proc    near
?live1@0:
   ;    
   ;    int main()
   ;    
    push    ebp
    mov  ebp,esp
    add  esp,-48
    push    ebx
    push    esi
    push    edi
   ;    
   ;    {
   ;        float getal[10], totaal, gemiddelde;
   ;        int i, kleiner = 0, groter = 0;
   ;    
@1:
    xor  edi,edi
    xor  esi,esi
   ;    
   ;        for (i = 0; i < 10; i++)
   ;    
?live1@32: ; ESI = groter, EDI = kleiner
    xor  ebx,ebx
   ;    
   ;        {
   ;          if (scanf ("%f", &getal[i]) != 1)
   ;    
?live1@48: ; EBX = i, ESI = groter, EDI = kleiner
@2:
    mov  eax,ebx
    shl  eax,2
    lea  edx,dword ptr [ebp-48]
    add  eax,edx
    push    eax
    push    offset s@
    call    _scanf
    add  esp,8
    dec  eax
    je    short @4
   ;    
   ;          {
   ;            printf ("foute invoer!\n");
   ;    
?live1@64: ; 
    push    offset s@+3
    call    _printf
    pop  ecx
   ;    
   ;            return 1;
   ;    
    mov  eax,1
    jmp  short @5
   ;    
   ;          }
   ;          totaal += getal[i];
   ;    
?live1@96: ; EBX = i, ESI = groter, EDI = kleiner
@4:
    fld  dword ptr [ebp+4*ebx-48]
    fadd    dword ptr [ebp-4]
    fstp    dword ptr [ebp-4]
    inc  ebx
    cmp  ebx,10
    jl    short @2
   ;    
   ;        }
   ;    
   ;        gemiddelde = totaal / 10;
   ;    
?live1@112: ; ESI = groter, EDI = kleiner
    fld  tbyte ptr [@7]
    fmul    dword ptr [ebp-4]
    fstp    dword ptr [ebp-8]
   ;    
   ;    
   ;        for (i = 0; i < 10; i++)
   ;    
    xor  ebx,ebx
   ;    
   ;        {
   ;          if (getal[i] > gemiddelde)
   ;    
?live1@144: ; EBX = i, ESI = groter, EDI = kleiner
@8:
    fld  dword ptr [ebp+4*ebx-48]
    fcomp     dword ptr [ebp-8]
    fnstsw ax
    sahf
    jbe  short @10
   ;    
   ;            groter++;
   ;    
    inc  esi
    jmp  short @11
   ;    
   ;          else if (getal[i] < gemiddelde)
   ;    
@10:
    fld  dword ptr [ebp+4*ebx-48]
    fcomp     dword ptr [ebp-8]
    fnstsw ax
    sahf
    jae  short @12
   ;    
   ;            kleiner++;
   ;    
    inc  edi
@12:
@11:
    inc  ebx
    cmp  ebx,10
    jl    short @8
   ;    
   ;        }
   ;     
   ;        printf ("Het gemiddele is: %f\n"
   ;    
?live1@208: ; ESI = groter, EDI = kleiner
    push    edi
    push    esi
    fld  dword ptr [ebp-8]
    add  esp,-8
    fstp    qword ptr [esp]
    push    offset s@+18
    call    _printf
    add  esp,20
   ;    
   ;            "Aantal getallen groter dan gemiddelde:  %d\n"
   ;            "Aantal getallen kleiner dan gemiddelde: %d\n",
   ;            gemiddelde, groter, kleiner);
   ;    }
   ;    
?live1@224: ; 
@14:
@5:
    pop  edi
    pop  esi
    pop  ebx
    mov  esp,ebp
    pop  ebp
    ret 
    align 4   
@7:
    db    205,204,204,204,204,204,204,204,251,63,0,0
_main   endp
_TEXT   ends
_DATA   segment dword public use32 'DATA'
s@  label   byte
    ;   s@+0:
    db  "%f",0
    ;   s@+3:
    db  "foute invoer!",10,0
    ;   s@+18:
    db  "Het gemiddele is: %f",10
    ;   s@+39:
    db  "Aantal getallen groter dan gemiddelde:  %d",10
    ;   s@+82:
    db  "Aantal getallen kleiner dan gemiddelde: %d",10,0
    align   4
_DATA   ends
_TEXT   segment dword public use32 'CODE'
_TEXT   ends
    public  _main
 extrn   _scanf:near
 extrn   _printf:near
    extrn   __turboFloat:word
    ?debug  D "test.c" 11050 26428
    end

[disclaimer]
Niet getest. 8-)
[/disclaimer]

:Y)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 10 september 2001 12:47 schreef Orphix het volgende:
Ik moet zeggen dat de 'ervaren' programmeurs hier allemaal erg behulpvaardig zijn bij een huiswerk opdracht dit keer, daar heb je mazzel mee liquid ;)
Deze jongen maakt tenminste een uitgebreide post, waarin ie zegt hoever ie is, hoe het tot nu toe werkt, en dat ie er al een uur op zit te staren. Hij heeft vrijwel alle te leren theorie gebruikt en goed gesnapt op 1 of 2 kleine details. Hij zegt er zelfs eerlijk bij dat het opdrachten zijn.

Dan wordt er wel geholpen ja... O+ Tenminste iets anders dan die klojo's van vorige week die hier gewoon hun opdracht neerpleurden met de mededeling 'doe eens ff schrijven voor me'. :r

Professionele website nodig?


  • Primal
  • Registratie: Augustus 2001
  • Laatst online: 11-09 14:32
Een heel klein, MAAR O ZO BELANGRIJK puntje: Initialiseer ALTIJD de variabelen die je declareerd. Dus pointers bijvoorbeeld netjes op NULL (als je wat meer ervaren bent kun je hier ook exotischer varianten neer zetten, maar daar vermoei ik je nu niet mee) zetten, een integer/float op 0. Tenzij je hem als startwaarde natuurlijk ergens anders op wilt zetten, maar ik hoop dat de strekking van mijn kleine verhaaltje duidelijk is.
Indien je dit namelijk niet doet kun je zeer onverwachte effecten krijgen.

Bijvoorbeeld:

float fTemp;

fTemp += 1;

De vraag wat er in de variabele 'fTemp' staat kun je niet met zekerheid beantwoorden. Iedere compiler/platform (Windows NT 4.0 doet bij default bijvoorbeeld een zero-out) maakt hier wat anders van. Er zijn compilers/platformen die automatisch een zero-out (dus initialiseren op 0) doen, indien de variabele bij declaratie niet geinitialiseerd wordt. Er zijn er ook die het NIET doen (en dan kan er iets staan wat door een eerdere applicatie is 'achtergelaten'). Dus ALTIJD initialiseren!!!

Met pointers kun je helemaal 'grappige' effecten krijgen. Ik hoop dat ik het op een beginnersniveau heb uitgelegd en dat het voor je te begrijpen is. Misschien ben ik voor de ervaren programmeurs wat vergeten (maar het gaat nu effe om het simpele principe).


En zoals iedere programmeur (ja ook de ervaren, waar ik mezelf <kuch kuch> :) toch ook wel onder schaar) maakt nu nog steeds wel eens fouten met dit soort zaken, wat meestal voortkomt uit ervarenheid/snelheid van werken.


Kijk bijvoorbeeld eens naar het stukje code wat ACM voor jou heeft 'verbeterd'. Let op de variabele declaratie bovenaan. Dat doet ie ook niet voor niets ... :) :)

"The fastest code, is the code that is never called."


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op maandag 10 september 2001 13:33 schreef Primal het volgende:
Een heel klein, MAAR O ZO BELANGRIJK puntje: Initialiseer ALTIJD de variabelen die je declareerd. Dus pointers bijvoorbeeld netjes op NULL (als je wat meer ervaren bent kun je hier ook exotischer varianten neer zetten, maar daar vermoei ik je nu niet mee) zetten, een integer/float op 0. Tenzij je hem als startwaarde natuurlijk ergens anders op wilt zetten, maar ik hoop dat de strekking van mijn kleine verhaaltje duidelijk is.
Indien je dit namelijk niet doet kun je zeer onverwachte effecten krijgen.

Bijvoorbeeld:

float fTemp;

fTemp += 1;

De vraag wat er in de variabele 'fTemp' staat kun je niet met zekerheid beantwoorden. Iedere compiler/platform (Windows NT 4.0 doet bij default bijvoorbeeld een zero-out) maakt hier wat anders van. Er zijn compilers/platformen die automatisch een zero-out (dus initialiseren op 0) doen, indien de variabele bij declaratie niet geinitialiseerd wordt. Er zijn er ook die het NIET doen (en dan kan er iets staan wat door een eerdere applicatie is 'achtergelaten'). Dus ALTIJD initialiseren!!!

Met pointers kun je helemaal 'grappige' effecten krijgen. Ik hoop dat ik het op een beginnersniveau heb uitgelegd en dat het voor je te begrijpen is. Misschien ben ik voor de ervaren programmeurs wat vergeten (maar het gaat nu effe om het simpele principe).


En zoals iedere programmeur (ja ook de ervaren, waar ik mezelf <kuch kuch> :) toch ook wel onder schaar) maakt nu nog steeds wel eens fouten met dit soort zaken, wat meestal voortkomt uit ervarenheid/snelheid van werken.


Kijk bijvoorbeeld eens naar het stukje code wat ACM voor jou heeft 'verbeterd'. Let op de variabele declaratie bovenaan. Dat doet ie ook niet voor niets ... :) :)
Ja dat zei de docent net ook al.
Maar dat ik dus goed gedaan :P Met dank aan ACM trouwens :)

Maar de opdrachten van vorige week waren allemaa in orde, dus de bonuspunten van die week zijn al binnen *D
Heb net m'n nieuwe opdrachten gelezen, maar daar moet ik nog es flink mee gaan stoeien. Heb de eerste bijna af, dus nog 3 te gaan......
Eens kijken of me dat lukt zonder jullie hulp :P

En bedankt!
Vondt ook al dat jullie zeer actief waren :)

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op maandag 10 september 2001 13:24 schreef curry684 het volgende:

[..]

Deze jongen maakt tenminste een uitgebreide post, waarin ie zegt hoever ie is, hoe het tot nu toe werkt, en dat ie er al een uur op zit te staren. Hij heeft vrijwel alle te leren theorie gebruikt en goed gesnapt op 1 of 2 kleine details. Hij zegt er zelfs eerlijk bij dat het opdrachten zijn.

Dan wordt er wel geholpen ja... O+ Tenminste iets anders dan die klojo's van vorige week die hier gewoon hun opdracht neerpleurden met de mededeling 'doe eens ff schrijven voor me'. :r
:7

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 10 september 2001 13:12 schreef Tuinhark het volgende:
Iemand vroeg om de ASM code? >:)

<...knip lange lap code...>
En nu zelf schrijven ipv de output van je compiler rerouten?
[disclaimer]
Niet getest. 8-)
[/disclaimer]
Lijkt me dat het wel bewezen code is als het uit de compiler komt.... :7

Als je wilt doen alsof je ASM kent zou ik de volgende keer in ieder geval het compilercommentaar met de originele C-code verwijderen... >:)

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op dinsdag 11 september 2001 01:14 schreef curry684 het volgende:

[..]

En nu zelf schrijven ipv de output van je compiler rerouten?
[..]

Lijkt me dat het wel bewezen code is als het uit de compiler komt.... :7

Als je wilt doen alsof je ASM kent zou ik de volgende keer in ieder geval het compilercommentaar met de originele C-code verwijderen... >:)
precies wat ik dacht, maar ik dacht ook: laat ik het maar niet zeggen, die jongen is er vast heel trots op dat ie dat kon posten :7 ;)

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.


  • Primal
  • Registratie: Augustus 2001
  • Laatst online: 11-09 14:32
Op dinsdag 11 september 2001 01:20 schreef OiSyN het volgende:

[..]

precies wat ik dacht, maar ik dacht ook: laat ik het maar niet zeggen, die jongen is er vast heel trots op dat ie dat kon posten :7 ;)
Ach hij komt in ieder geval wel met 32-bits assembler! :)

"The fastest code, is the code that is never called."


  • Wuursj
  • Registratie: Maart 2001
  • Laatst online: 23-09 11:30

Wuursj

want worst is al bezet

Op zondag 09 september 2001 19:41 schreef deur het volgende:
zorg maar dat je het een beetje snapt, je bent er voorlopig nog niet van af.
zat je daarom vanmiddag achter ons bij theorie hoorcollege C ? ;)

droogworst - rookworst - leverworst - salamiworst - knakworst - bokworst - boterhammenworst


  • Klippy
  • Registratie: Oktober 2000
  • Laatst online: 21:45

Klippy

Still Game

Topicstarter
Op dinsdag 11 september 2001 19:13 schreef Weurst het volgende:

[..]

zat je daarom vanmiddag achter ons bij theorie hoorcollege C ? ;)
:+

Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO

Pagina: 1