Archief - [PROG]-[C]-prog om grams en ouderdom te berekenen.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

COOLKILLer

Legacy Member
Dit programma staat in mijn boek van C, en het geeft niet het juiste resultaat.
wat is er mis????
Code:
/* Demonstrates variables and constants */
#include <stdio.h>
/* Define a constant to convert from pounds to grams */
#define GRAMS_PER_POUND 454
/* Define a constant for the start of the next century */
const int NEXT_CENTURY = 2010;
/* Declare the needed variables */
long weight_in_grams, weight_in_pounds;
int year_of_birth, age_in_2010;


main()
{
/* Input data from user */

printf("Enter your weight in pounds: ");
scanf("%d, &weight_in_pounds");
printf("Enter your year of birth: ");
scanf("%d, &year_of_birth");

/* Perform conversion */

weight_in_grams = weight_in_pounds * GRAMS_PER_POUND;
age_in_2010 = NEXT_CENTURY - year_of_birth;

/* Display results on the screen */

printf("\nYour weight in grams = %ld", weight_in_grams);
printf("\nIn 2010 you will be %d years old", age_in_2010);
return 0;
}
Mijn output is gewoon:
Your weight in grams = 0
In 2010 you will be 2010 years old

Wat het dus helemaal nie moet zijn...

killgore

Legacy Member
Code:
/* Demonstrates variables and constants */
#include <stdio.h>
/* Define a constant to convert from pounds to grams */
#define GRAMS_PER_POUND 454
/* Define a constant for the start of the next century */
const int NEXT_CENTURY = 2010;
/* Declare the needed variables */
long weight_in_grams, weight_in_pounds; [b] // hier zou ik wel std waarde (0) toekennen ;).[/b]
int year_of_birth, age_in_2010; [b] // same as above :p[/b]


main()
{
/* Input data from user */

printf("Enter your weight in pounds: ");
scanf("%d", &weight_in_pounds); [b][color=red]//fout: scanf("%d, &weight_in_pounds");[/color][/b]
printf("Enter your year of birth: ");
scanf("%d", &year_of_birth); [b][color=red]//fout: scanf("%d, &year_of_birth");[/color][/b]

/* Perform conversion */

weight_in_grams = weight_in_pounds * GRAMS_PER_POUND;
age_in_2010 = NEXT_CENTURY - year_of_birth;

/* Display results on the screen */

printf("\nYour weight in grams = %ld", weight_in_grams);
printf("\nIn 2010 you will be %d years old", age_in_2010);
return 0;
}

Tyfius

Legacy Member
Inderdaad. Voor alle veiligheid zou je eventueel achter de eerste scanf() nog een getchar() kunnen zetten. Hangt af van compiler tot compiler. Sommigen durven al eens je ENTER na het invoeren van het eerste getal te interpreteren als invoer voor het 2de getal.

COOLKILLer

Legacy Member
Code:
/* Demonstrates variables and constants */
#include <stdio.h>
/* Define a constant to convert from pounds to grams */
#define GRAMS_PER_POUND 454
/* Define a constant for the start of the next century */
const int NEXT_CENTURY = 2010;
/* Declare the needed variables */
long weight_in_grams = 0, weight_in_pounds = 0;
int year_of_birth = 0, age_in_2010 = 0;


main()
{
/* Input data from user */

printf("Enter your weight in pounds: ");
scanf("%d, &weight_in_pounds");
printf("Enter your year of birth: ");
scanf("%d, &year_of_birth");

/* Perform conversion */

weight_in_grams = weight_in_pounds * GRAMS_PER_POUND;
age_in_2010 = NEXT_CENTURY - year_of_birth;

/* Display results on the screen */

printf("\nYour weight in grams = %ld", weight_in_grams);
printf("\nIn 2010 you will be %d years old", age_in_2010);
return 0;
}

dit is men code nu, maar het werkt nog niet, nogaltijd hetzelfde probleem...

Krueger

Legacy Member
COOLKILLer zei:
dit is men code nu, maar het werkt nog niet, nogaltijd hetzelfde probleem...
Hebde expres die post van killgore genegeerd? Em duid in het rood aan wat jij fout hebt gedaan, en links ervan staat er wat het moet zijn.
Uiteraard zit je dus nog met hetzelfde propleem...

AcIdR3IgN

Legacy Member
Krueger zei:
Hebde expres die post van killgore genegeerd? Em duid in het rood aan wat jij fout hebt gedaan, en links ervan staat er wat het moet zijn.
Uiteraard zit je dus nog met hetzelfde propleem...

En euh, kunde gij lezen? Bij mijn weten heeft hij wel degelijk alles verandert zoals Killgore het zegt. Code lijkt me wel juist.. (zijn eerste code ook wel).. maar heb hier geen compiler om te testen..

AcIdR3IgN

Legacy Member
Ok dus zijn code getest.. en alles werkt hier.
Hier is mn output.

acid@Anubis:~/code/c$ gcc telenet.c -o telenet
acid@Anubis:~/code/c$ ./telenet
Enter your weight in pounds: 120
Enter your year of birth: 1983

Your weight in grams = 54480
In 2010 you will be 27 years old
acid@Anubis:~/code/c$


Dus blijkbaar werkt alles goed.. nu ga ik niet uitrekeken of de grams juist zijn, maa rik vermoed van wel.. en mn leeftijd klopt wel degelijk.

Nu dit is wat iik hebt gebruikt.
Code (mengeling van wat hier boven staat).

Code:
/* Demonstrates variables and constants */
#include <stdio.h>
/* Define a constant to convert from pounds to grams */
#define GRAMS_PER_POUND 454
/* Define a constant for the start of the next century */
const int NEXT_CENTURY = 2010;
/* Declare the needed variables */
long weight_in_grams = 0, weight_in_pounds = 0;
int year_of_birth = 0, age_in_2010 = 0;


[B]int[/B] main()         [COLOR=Red]//returns int value[/COLOR]
{
/* Input data from user */

printf("Enter your weight in pounds: ");
[B]scanf("%d", &weight_in_pounds);[/B]  
printf("Enter your year of birth: ");
[B]scanf("%d", &year_of_birth);[/B]

/* Perform conversion */

weight_in_grams = weight_in_pounds * GRAMS_PER_POUND;
age_in_2010 = NEXT_CENTURY - year_of_birth;

/* Display results on the screen */

printf("\nYour weight in grams = %ld", weight_in_grams);
printf("\nIn 2010 you will be %d years old\n", age_in_2010);
[B]getchar(); //mag gebruikt worden onder windows, anders sluit console vernster[/B]
return 0;
}

Dus zoals je ziet, heb ik niet direct veel verandert.. zijn oorspronkelijke scanf's waren WEL juist.
Ik heb alleen int main() toegevoegd enz...

Kheb dit alles ge-compiled onder Linux (gcc version 3.3.4) en werkt wel degelijk perfect.
Als bovenstaande code niet werkt met jouw compiler zou ik dan oftewel een upgrade doen, of een ander compiler zoeken. Nog veel C plezier

Tyfius

Legacy Member
AcIdR3IgN zei:
En euh, kunde gij lezen? Bij mijn weten heeft hij wel degelijk alles verandert zoals Killgore het zegt. Code lijkt me wel juist.. (zijn eerste code ook wel).. maar heb hier geen compiler om te testen..

Zijn 1ste code:
Code:
scanf("%d, &year_of_birth");

Killgore zen code:
Code:
scanf("%d", &year_of_birth); [B][COLOR=Red]//fout: scanf("%d, &year_of_birth");[/COLOR][/B]

zijn 2de code:
Code:
scanf("%d, &year_of_birth");

Volgens mij dezelfde fout als in zijn 1ste code.

Krueger

Legacy Member
AcIdR3IgN zei:
En euh, kunde gij lezen? Bij mijn weten heeft hij wel degelijk alles verandert zoals Killgore het zegt. Code lijkt me wel juist.. (zijn eerste code ook wel).. maar heb hier geen compiler om te testen..
Zowel in zijn eerste als in zijn tweede keer dat hij zijn code post staat er
scanf("%d, &weight_in_pounds");

In de code van killgore en uw code staat er
scanf("%d", &weight_in_pounds);

Dus ik denk wel dat ik kan lezen.

Edit: dank u tyfius

killgore

Legacy Member
mijn excuses voor dit misverstand :)

ik had expliciet die //Fout erbij gezet om aan te tonen wat zijn foute code was, blijkbaar d8 hij dat ik bedoelde dat de lijn voor //Fout de incorrecte code was en erachter de juiste :p.

Had ek mssch beter moeten aanduiden in mijn post ;)

AcIdR3IgN

Legacy Member
Oeps sorry.. had het ook blijkbaar verkeerd gelezen :s... kdacht idd da Killgore de "juiste" code achter //Fout had geschreven.. lol.. :)

COOLKILLer

Legacy Member
ik heb het gevonden het lag aan mijn compiler precies (dev-c++) heb die geupdate en toen bolde de code,
ps ik denk dat
scanf("%d", &year_of_birth);
ook werkt, nie?

kan het wel nie uittesten nu(cpu cooling van men pc is kapot, zit nu op pa zijn laptop)

Blood_Raven

Legacy Member
COOLKILLer zei:
ik heb het gevonden het lag aan mijn compiler precies (dev-c++) heb die geupdate en toen bolde de code,
ps ik denk dat
scanf("%d", &year_of_birth);
ook werkt, nie?

kan het wel nie uittesten nu(cpu cooling van men pc is kapot, zit nu op pa zijn laptop)
Idd zo staat het in onze cursus, klopt volledig.

AcIdR3IgN

Legacy Member
killgore zei:
een thread van 3 weken oud ophalen om just dat te zeggen :eek:

Waarom nie he.. :D
Sommige mensen willen speciaal voelen om toch een iet of wat juiste antwoord te geven.. *gni*

Jormungand

Legacy Member
De oude koeien worden misschien wel uit de sloot gehaald, maar ik heb dit even zitten lezen en ik kan alleen maar hieruit afleiden dat niemand eigenlijk echt weet waarom

Code:
scanf("%d, &weight_in_pounds");

niet werkt, en

Code:
scanf("%d", &weight_in_pounds);

wel werkt.

Het is heel simpel. Met "%d" zeg je dat de functie de input moet interpreteren als een integer en door 'address-of' weight_in_pounds als TWEEDE PARAMETER mee te geven heeft de functie een plaats om deze integer in op te slaan. Als je nu scanf("%d, &weight_in_pounds"); schrijft, wordt dit even goed aangenomen, het is immers een string en dat wordt verwacht als eerst parameter. Je geeft hier dus nu SLECHTS 1 paramter mee, zijnde de string! De functie scanf heeft van jou dus geen variabele gekregen om zijn geconverteerde resultaat in op te slaan, maw het effect is totaal niets behalve dan dat je cpu tijd gebruikt om eigenlijk niks nuttigs te doen! Hopelijk bracht dit enige verduidelijking.

killgore

Legacy Member
ma fuck jong, denkte gij nu echt da wij achterlijk zijn? Het enige misverstand was dat em nie zag welke code ik als juist en welke als fout bestempelde :).

moest ik niet weten wat de fout juist is, ik had hem nooit kunnen verbeteren he :ironic:, ma die logica is bij jou niet echt doorgedrongen blijkbaar :).

Krueger

Legacy Member
Jormungand zei:
.. , maar ik heb dit even zitten lezen en ik kan alleen maar hieruit afleiden dat niemand eigenlijk echt weet waarom

Moet je me toch wel eens weten te zeggen waar je dat hebt uit kunnen afleiden. Kheb deze thread nog eens vlug overlezen, en ik kan dat persoonlijk nergens uit afleiden. (voor de rest is het wel een thread vol van misverstanden, maar kom :) )
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan