Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Ce parere aveti de viteza/ modul ...

Love Lies Bleeding - 2024

Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...
 Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica

Ce componenta e asta si ce ziceti...

Dupa 20 ani de facultate, am uita...
 Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...
 Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio
 

Pascal,record ,problema atriuire

- - - - -
  • Please log in to reply
2 replies to this topic

#1
dan3s2020

dan3s2020

    Junior Member

  • Grup: Members
  • Posts: 93
  • Înscris: 30.01.2014
type abonat=record
nume:string;
tel:integer;
end;
var x:array[1..20]of abonat;
a:array[1..20]of integer;
i,n,k,nr,par6:integer;
ok:boolean;
begin
  readln(n);
for i:=1 to n do
    begin
  writeln('Nume abonat:');readln(x[i].nume);
  writeln('Numar Telefon:');readln(x[i].tel);
    end;
for i:=1 to n do
begin
par6:=x[i].tel;    writeln('par6 la ',i,' ',par6);
nr:=0; writeln('nr=',nr);
repeat
ok:=false;    writeln('ok=',ok);
  if ((par6 mod 10) mod 2)=0 then
    begin
nr:=nr+1; writeln('nr devine ',nr);
par6:=par6 div 10;     writeln('par6 devine ',par6);
ok:=true;writeln('ok devine',ok);
    end;
until ok=false;
  if nr=6 then
  begin
  k:=k+1;    writeln('k devine ',k);
  a[k]:=x[i].tel;    writeln('a[',k,'] devine',a[k]);
  end;
  writeln(a[k]);
end;
end.

de ce imi atribuie valoarea -19720 in loc de 242424? am dat sa scrie la fiecare instructiune ce se afiseaza ca imi afisa valoarea 0 si nu intelegeam unde se pierde.

Attached Files



#2
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,957
  • Înscris: 24.04.2013
Folosesti un compilator de 16 biti (de exemplu unul pentru MS-DOS), asa-i? Posted Image

Acolo tipul integer este pe 16 biti si poate reprezenta [doar] numerele din intervalul -3276832767, deci 242424 da pe-afara. In aceasta situatie se pastreaza doar cei 16 biti mai putin semnificativi care, interpretati ca un intreg de 16 biti cu semn, reprezinta exact valoarea -19720.

Ar fi bine:
  • Sa citesti/inveti despre reprezentarea numerelor (si nu numai) in calculator. De exemplu <https://en.wikipedia...representations>, pentu intregi uzual se foloseste complement fata de doi (‘Two’s complement’).
  • Sa fi atent la limitele de reprezentare pentru diferite tipuri de date si sa ai grija ca in programele tale sa nu ‘dai pe-afara’.


#3
dan3s2020

dan3s2020

    Junior Member

  • Grup: Members
  • Posts: 93
  • Înscris: 30.01.2014

View Postsags, on 13 ianuarie 2016 - 20:48, said:

Folosesti un compilator de 16 biti (de exemplu unul pentru MS-DOS), asa-i? Posted Image

Acolo tipul integer este pe 16 biti si poate reprezenta [doar] numerele din intervalul -3276832767, deci 242424 da pe-afara. In aceasta situatie se pastreaza doar cei 16 biti mai putin semnificativi care, interpretati ca un intreg de 16 biti cu semn, reprezinta exact valoarea -19720.

Ar fi bine:
  • Sa citesti/inveti despre reprezentarea numerelor (si nu numai) in calculator. De exemplu <https://en.wikipedia...representations>, pentu intregi uzual se foloseste complement fata de doi (‘Two’s complement’).
  • Sa fi atent la limitele de reprezentare pentru diferite tipuri de date si sa ai grija ca in programele tale sa nu ‘dai pe-afara’.

Asa,multumesc,observasem cam tarziu,nefiind obisnuit sa folosesc numere care sa intre in longint,am "dat pe afara" :)))

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate