Toon posts:

[Pascal] ascii tekens naar integers en bij elkaar optellen *

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

Verwijderd

Topicstarter
Heya, ik heb met Turbo Pascal het volgende probleem.

Als ik een var defineer als een char werkt het volgende wel:
Writeln ('geef een getal op');
Readln (a,b)

Als ik nu het getal 12 invoer dan wordt var a 1 en var b 2.

Maar als ik nu bijvoorbeeld var a en b wil laten optellen werkt dit niet,
wsl omdat het een char is?

Hoe kan ik de var bijvoorbeeld een integer/real maken en dat hij dan nog wel de invoer pakt?

Bij een integer moet ik namelijk 2x iets invoeren! (het eerste getal ziet hij als a en dan alles na een spatie/return als b)

Hopelijk is t een beetje duidelijk :-)

  • Canaria
  • Registratie: Oktober 2001
  • Niet online

Canaria

4313-3581-4704

Omzetten naar de ASCII waarde en daarvan precies genoeg aftrekken dat je de waarde van het ingevoerde getal overhoudt? Het verschil tussen "1" en 1 en "2" en 2 is constant.

Apparticle SharePoint | Apps | Articles


  • nightowl
  • Registratie: April 2002
  • Laatst online: 14-03-2009

nightowl

always too early to sleep

Het lijkt me zo dat er in Pascal wel een functie zit om de waarde van een tekst uit te lezen, bijvoorbeeld Val(string, integer,code)?? :?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var a_string : char;
var b_string : char;
var a_waarde : integer;
var b_waarde : integer;
var Code     : integer;

begin
  a_string := '3';
  b_string := '6';
  a_waarde := 0;
  b_waarde := 0;
  Val(a_string,a_waarde, code);
  Val(b_string,b_waarde, code);
  Writeln('a_waarde is ',a_waarde);
  Writeln('b_waarde is ',b_waarde);
  Write('product is ');
  Writeln (a_waarde * b_waarde);
end.

Ik pas in mijn jas. Mijn jas past in mijn tas. Dus ik pas in mijn tas.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:52
Leuk om te zien dat er nog mensen met Turbo Pascal werken.

Ik zou het zo doen als haas suggereerde. Eerst controleren of de char in de range '0' tot en met '9' zit en vervolgens '0' aftrekken. In de ASCII tabel zijn 0 t/m 9 opvolgend, dus '0' - '0' is 0, '1' - '0' is 1, etc.

  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

int a;
int b;
char c;
char d;
int totaal;
writeln('getal en wel NU! ');
readln(c,d);
c:=a;
d:=b;
totaal:=a+b;
writeln('Totaal:', totaal);

Weet niet meer zeker of dit in Pascal werkt, is al weer een jaar of wat geleden, maar probeer dit eens? Check de code ff voor de zekerheid, het is uit het bolle hoofdje but you got the point ;)

Maar hoe doet jouw manier het bijvoorbeeld als je 123 opgeeft?
a=12 b=3?
a=1 b=23?

Het veiligst is gewoon met ints te werken en dan bij de invoer een spatie of een enter overlaten...

Dividend for Starters


  • Canaria
  • Registratie: Oktober 2001
  • Niet online

Canaria

4313-3581-4704

PromWarMachine schreef op 14 september 2002 @ 22:49:
Weet niet meer zeker of dit in Pascal werkt, is al weer een jaar of wat geleden, maar probeer dit eens? Check de code ff voor de zekerheid, het is uit het bolle hoofdje but you got the point ;)
Het werkt misschien wel, maar netjes is het niet, net als een integer plotseling als real behandelen.
Maar hoe doet jouw manier het bijvoorbeeld als je 123 opgeeft?
a=12 b=3?
a=1 b=23?
Een char is één karakter, dus a=1 en b=2. De 3 wordt als het goed is genegeerd.
Het veiligst is gewoon met ints te werken en dan bij de invoer een spatie of een enter overlaten...
Maar het is wel handig als je van getallen cijfers wilt maken.
Een andere oplossing is wél integers gebruiken en alle decimalen met de modulus functie weg te schrijven naar andere integers. Dit lost de oorspronkelijke vraag ook op.
Soultaker schreef op 14 september 2002 @ 22:38:
Leuk om te zien dat er nog mensen met Turbo Pascal werken.
Het was de eerste programmeertaal die ik leerde, en ik vergeet het nooit meer.
edit:
Het was trouwens Lightspeed Pascal, op de Mac.

Apparticle SharePoint | Apps | Articles


  • Paul
  • Registratie: September 2000
  • Laatst online: 17:21
Turbo Pascal is ook voor mij al een hele tijd geleden, maar had je ook toen al niet zoiets als StrToInt? Ik meen me wel zoiets te herinneren.

On the fly type-casten zoals bijv. Java dat kan, kan in object pascal niet, en dus meen ik in Turbo Pascal (voorlopers hebben vaak minder functies dan hun opvolgers, ipv meer :)) ook niet.

Ik weet niet wat het uiteindelijke doel is, maar qua layout / begrijpelijkheid is het uiteraard niet zo slim om het product te willen van iets waarvan de gebruiker moet gokken dat hij dat aan elkaar zonder spaties of zo in moet voeren :)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Verwijderd

Topicstarter
nightowl schreef op 14 september 2002 @ 22:21:
Het lijkt me zo dat er in Pascal wel een functie zit om de waarde van een tekst uit te lezen, bijvoorbeeld Val(string, integer,code)?? :?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var a_string : char;
var b_string : char;
var a_waarde : integer;
var b_waarde : integer;
var Code     : integer;

begin
  a_string := '3';
  b_string := '6';
  a_waarde := 0;
  b_waarde := 0;
  Val(a_string,a_waarde, code);
  Val(b_string,b_waarde, code);
  Writeln('a_waarde is ',a_waarde);
  Writeln('b_waarde is ',b_waarde);
  Write('product is ');
  Writeln (a_waarde * b_waarde);
end.
Yes yes yes! Dit werkt!!!!

Alleen de logica er achter ontgaat mij even. Met het commando Val zet ik nu dus een character om naar een getal, integer? Alleen waarom moet je die ,code op het eind mee geven?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:01

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 14 september 2002 @ 22:17:
Hopelijk is t een beetje duidelijk :-)


niet echt, en dan doel ik op de topictitel
Verder is het wel een beetje heel erg een manual vraag hoor... maar goed

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.


  • Canaria
  • Registratie: Oktober 2001
  • Niet online

Canaria

4313-3581-4704

Paul Nieuwkamp schreef op 14 september 2002 @ 23:06:
Ik weet niet wat het uiteindelijke doel is, maar qua layout / begrijpelijkheid is het uiteraard niet zo slim om het product te willen van iets waarvan de gebruiker moet gokken dat hij dat aan elkaar zonder spaties of zo in moet voeren :)
Toepassing
- in de numerologie: voer je geboortejaar of -datum in en je krijgt een karakterschets terug
- in raadseltjes als: neem een getal in gedachten en tel de cijfers ervan bij elkaar op, dus 21378 wordt 2+1+3+7+8

Apparticle SharePoint | Apps | Articles


  • PromWarMachine
  • Registratie: Oktober 2001
  • Laatst online: 22-08 20:55

PromWarMachine

Forsaken Archer

haas schreef op 14 september 2002 @ 22:58:
[...]

Het werkt misschien wel, maar netjes is het niet, net als een integer plotseling als real behandelen.
[...]

Een char is één karakter, dus a=1 en b=2. De 3 wordt als het goed is genegeerd.
[...]

Het was de eerste programmeertaal die ik leerde, en ik vergeet het nooit meer.
edit:
Het was trouwens Lightspeed Pascal, op de Mac.
Netjes? Nee inderdaad niet, maar het werkt denk 'k wel ;)
Veel andere oplossingen als topicstarter de huidige situatie wil behouden zijn er toch niet...

Ok, maar topicstarter heeft klablijkelijk genoeg aan 99 mogelijkheden? 01 tot 99? Waarom dan zo moeilijk doen? Topicstarter is btw in geen velden of wegen te bekennen? :P

Ik vergeet de basis ook niet meer, maar het is toch niet zo als met autorijden of fietsen hoor! Dit verleer je volgens mij eerder, ik heb er nu een paar jaar niets meer aan gedaan, maar wél geprogrammeerd (C, Unix scripts, C++, HTML), dan verleer je het denk 'k eerder.

Dividend for Starters


Verwijderd

Topicstarter
De bedoeling is het omreken van een per nummer naar een user-id

  • nightowl
  • Registratie: April 2002
  • Laatst online: 14-03-2009

nightowl

always too early to sleep

Verwijderd schreef op 14 september 2002 @ 23:09:
[...]


Yes yes yes! Dit werkt!!!!

Alleen de logica er achter ontgaat mij even. Met het commando Val zet ik nu dus een character om naar een getal, integer? Alleen waarom moet je die ,code op het eind mee geven?
De reden voor deze ,code is een waarde die de functie geeft als de conversie niet zou lukken (=errorcode)

Ik pas in mijn jas. Mijn jas past in mijn tas. Dus ik pas in mijn tas.

Pagina: 1