Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

sabiranje i množenje 6cifrenih brojeva

[es] :: Pascal / Delphi / Kylix :: sabiranje i množenje 6cifrenih brojeva

[ Pregleda: 3991 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

atlas

Član broj: 20158
Poruke: 167
*.as.ka.bih.net.ba.



Profil

icon sabiranje i množenje 6cifrenih brojeva26.04.2004. u 22:30 - pre 243 meseci
Kako napraviti u PASCALU program da prepoznaje brojeve vece od onih kojih nam on dozvoljava??
primjer;

treba mi program koji traži da unesemo dva broja sa 6 cifara i da napiše njihov zbir i proizvod?

[Ovu poruku je menjao -zombie- dana 27.04.2004. u 18:18 GMT]
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: pascal-(..PROGRAM)????????????????I need that26.04.2004. u 23:25 - pre 243 meseci
Pa stavi broj kao LongInt.
 
Odgovor na temu

atlas

Član broj: 20158
Poruke: 167
*.as.ka.bih.net.ba.



Profil

icon Re: pascal-(..PROGRAM)????????????????I need that27.04.2004. u 08:44 - pre 243 meseci
Ne moze preko tipa LONGINT.
Skoro je bilo na takmicenju,kazu da se moze uraditi.
VJEROVATNO POSTOJI NEKA CAKA..
mozda nekako preko brojnih stringova
 
Odgovor na temu

Sasa A
Sasa Adzic
C:\Montenegro\Podgorica

Član broj: 18654
Poruke: 150
*.crnagora.net



Profil

icon Re: pascal-(..PROGRAM)????????????????I need that27.04.2004. u 08:49 - pre 243 meseci
Mozes da koristis nizove, dakle svaka cifra jedan clan niza ili da koristis liste
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.dialup.xtra.co.nz



+3 Profil

icon Re: pascal-(..PROGRAM)????????????????I need that27.04.2004. u 13:57 - pre 243 meseci
Evo ja cu da ti dam ideju pa ti uradi nesto a mi cemo da ispravimo greske.
Definisi a,b,c i d kao longint. Ucitaj prva dva broja u neka dva stringa.
Prva 3 karaktera u prvom stringu pretvori u broj i smesti u a. druga 3 karaktera pretvori u broj i smesti u b (imas funkcije za to, ne secam se imena funkcija davno sam se igrao sa Pascalom).
Isto tako uradi sa drugim brojem i smeti odgovarajuce brojeve u c i d.
Sada uradi ovo:
poslednje3cifre:=b*d mod 1000;
pretposlednje3cifre:=(b*d div 1000) + ((a*d+b*c) mod 1000);
prvih6cifara:=a*c+ ((a*d+b*c) div 1000);
Write(prvih6cifara:6, pretposlednje3cifre:3, poslednje3cifre:3);

To resenje se dobija iz sledece formule:
(a*10000+b)*(c*10000+d)=a*c*1000*1000+a*d*1000+b*c*1000+b*d

To ti je resenje za mnozenje a za sabiranje ne moras da izvodis nikakve formule nego samo pretvori prva 2 stringa u longintove i saberi ih.
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
*.ptt.yu.

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: sabiranje i množenje 6cifrenih brojeva27.04.2004. u 19:31 - pre 243 meseci
Ako ne moze longint, moze li extended? Sa ovim tipom mozes da vrsis operacije i samnoooooogo vecim brojevima od onih sa sest cifaraa ...

p0z.
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
*.ptt.yu.

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: pascal-(..PROGRAM)????????????????I need that27.04.2004. u 19:35 - pre 243 meseci
Citat:
srki:
Evo ja cu da ti dam ideju pa ti uradi nesto a mi cemo da ispravimo greske.
Definisi a,b,c i d kao longint. Ucitaj prva dva broja u neka dva stringa.
Prva 3 karaktera u prvom stringu pretvori u broj i smesti u a. druga 3 karaktera pretvori u broj i smesti u b (imas funkcije za to, ne secam se imena funkcija davno sam se igrao sa Pascalom).
Isto tako uradi sa drugim brojem i smeti odgovarajuce brojeve u c i d.
Sada uradi ovo:
poslednje3cifre:=b*d mod 1000;
pretposlednje3cifre:=(b*d div 1000) + ((a*d+b*c) mod 1000);
prvih6cifara:=a*c+ ((a*d+b*c) div 1000);
Write(prvih6cifara:6, pretposlednje3cifre:3, poslednje3cifre:3);

To resenje se dobija iz sledece formule:
(a*10000+b)*(c*10000+d)=a*c*1000*1000+a*d*1000+b*c*1000+b*d

To ti je resenje za mnozenje a za sabiranje ne moras da izvodis nikakve formule nego samo pretvori prva 2 stringa u longintove i saberi ih.


Eh, da... ovo me pomalo podseca na mnozenje u dvostrukoj preciznosti koje se "povlaci" jos od asemblera ...

 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
195.252.103.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: sabiranje i množenje 6cifrenih brojeva28.04.2004. u 13:00 - pre 243 meseci
ucitavaj direktno u niz cifara, i to u inverznom redosledu tako da cifra najvece tezine bude skroz desno. tako ti je lakse da uradis ako imas prenos cifara, da ne shiftas cifre. ne moras cak nigde da koristis (long) integer. aj ako me ne mrzi poslacu ti source u toku dana...
pozdravi
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
195.252.103.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: sabiranje i množenje 6cifrenih brojeva28.04.2004. u 14:18 - pre 243 meseci
evo ti kod. napisao sam u delphi, al ako ne umes da prebacis onda bem li ga :)

Code:

program Mnozenje;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var A, B, C, D: string;
    Action: char;

function Vrednost(c: char): byte;
begin
  Result := Ord(c) - 48;
end;

procedure Saberi(A, B: string; var C: string);
var p, i: byte;
begin
  //da se izjednace duzine A, B i C
  while Length(A) > Length(B) do
    B := '0' + B;
  while Length(A) < Length(B) do
    A := '0' + A;
  SetLength(C, Length(A));

  //sabiranje cifra po cifra
  p := 0;
  for i := Length(A) downto 1 do
   begin
     C[i] := Chr((p + Vrednost(A[i]) + Vrednost(B[i])) mod 10 + 48);
     p := (p + Vrednost(A[i]) + Vrednost(B[i])) div 10;
   end;

  //ako ima prenos dodati na pocetak
  if p > 0 then
   C := Chr(p + 48) + C;
end;

procedure Mnozi(A, B: string; var C: string);
var i, j, p: byte;
    temp: char;
begin
  //da se izjednace duzine A, B i C i postaviti C na 0;
  while Length(A) > Length(B) do
    B := '0' + B;
  while Length(A) < Length(B) do
    A := '0' + A;
  SetLength(C, 2 * Length(A));
  for i := 1 to Length(C) do
   C[i] := '0';

  //mnozenje cifra po cifra
  p := 0;
  for i := Length(A) downto 1 do
   begin
     for j := Length(A) downto 1 do
       begin
         temp := Chr((p + Vrednost(C[i + j]) + Vrednost(A[i]) * Vrednost(B[j])) mod 10 + 48);
         p := (p + Vrednost(C[i + j]) + Vrednost(A[i]) * Vrednost(B[j])) div 10;
         C[i + j] := temp;
       end;
     //ako ima prenosa dodati na pocetak tekuceg sabirka
     if p > 0 then
      begin
        C[i] := Chr(p + 48);
        p := 0;
      end;
   end;

  //obrisati prve nule
  while C[1] = '0' do
    Delete(C, 1, 1);
end;

begin
  while True do
   begin
     Write('A = '); ReadLn(A);
     Write('B = '); ReadLn(B);
     WriteLn;
     Saberi(A, B, C);
     WriteLn('A + B = ', C);
     Mnozi(A, B, D);
     WriteLn('A * B = ', D);
     WriteLn(#13, 'Nastaviti? (D/N)');
     ReadLn(Action);
     if UpCase(Action) = 'N' then
      Break;
   end;
end.


pozdravi
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: sabiranje i množenje 6cifrenih brojeva

[ Pregleda: 3991 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.