Progra obliczajacy sume PASCAL

0

Witam !!

Pisze w sprawie pewnego zadania z mojej pracy domowej. Jego tresc jest nastepujaca Napisz program obliczający sumę liczb: 1 + 11 + 111 + 1111+ 1...1(n składników) gdzie n wprowadzamy z kalwiatury. siedze juz od godziny mysle i nic mi nie wychodzi nie prosze o gotowy kod tylko jakies naprowadzenie z jakiej funkcji mam skorzystac albo cos dzieki z gory za wszelka pomoc

0
function suma(n:byte):longint;
var 
   i,j:byte;
   a,b:longint;
begin
  a:=0;
  for i:=1 to n do
    begin
      b:=0;
      for j:=1 to i do b:=b*10+1;
      a:=a+b
    end;
  suma:=a
end;

var n:byte;
begin
  write('podaj liczbe cyfr : ');
  readln(n);
  writeln('suma : ',suma(n))
end.

Przepraszam, że nie spełniłem Twej prośby, ale nie mogłem się
powstrzymać i napisałem. Wierz mi starłem się, ale nie mogłem
wytrzymać. [wstyd]

[diabel]

// do anonima: zmieniłem w drugiej petli n na i
// i działa poprawnie, dzięki, troszku się ropędziłem.
// ewentualnie możesz napisać cos takiego:

var n:byte;
begin
  readln(n);
  writeln('suma : ' ,copy('123456789',1,n))
end.

W końcu chodzi tylko o wynik. :P Aha, działa dla 1<=n<=9. :p

Wodzu chodziło mi o to, aby nie robić pracy magisterskiej z byle dwóch pętelek na krzyż. Żeby było jak najmniej zmiennych i jak najprostszy, czołgowy algorytm. Na tym polega piękno programowania, a nie na pięciu stronach kodu.

Grzesiu: gratuluję, to, co wiekszość zrobiłaby w dwóch, Ty zrobiłeś w jednej pętli.

0

fajnie ze napisalem ale twoj algorytm nie dziala prawidłowo jak wpisuje n=3 to wysetla mi wynik 333 a powino wysetlic 1+11+111=123

0

Rzeczywiscie flarbie chyba cos sie pokickalo...poniewaz nie mam co robic(czytaj: czekam na pomoc z moim postem;) to postanowilem Ci pomoc, oto rozwiazanie, mam nadzieje ze poprawne;)

//funkcja tworzy ciagi jedynek 1 11 111 1111 itd

function TworzJedynki(liczbajedynek: byte):longint;
var
liczba,liczba2,i: longint;
begin
liczba:=0;
liczba2:=1;
for i:=1 to liczbajedynek-1 do
begin
liczba2:=liczba2*10;
liczba:=liczba+liczba2;
end;
liczba:=liczba+1;
TworzJedynki:=liczba;
end;

//funkcja sumuje jedynki, czyli podajesz n=3 to masz 1+11+111=123

function ZsumujJedynki(n :Integer):longint;
var
i, Suma: Integer;
begin
suma:=0;
for i:=1 to n do
Suma:=Suma+Tworzjedynki(i);
ZsumujJedynki:=Suma;
end;

begin
twojazmienna:=ZsumujJedynki({tu podajesz n});

writeln('suma: ',twojazmienna);
end;

Mam nadzieje ze o to chodzilo, pamietaj ze twojazmienna powinna byc typu longint dla duzych sum.

Pozdrawiam,

Wodzu

0

Ehh...myslalem ze bylem zalogowany...w kazdym razie, napisz czy o to Ci chodzilo.

Pozdrawiam,

Wodzu

0

tak o to :D ale juz wczesniej na podstawie kod zamieszczonego wyzej doszedlem do rozwiazania a wystarczylo mi tylko podac cos takiego b:=b*10+1; i doszedl bym do reszty sam :D ale dziekuje za pomoc poza tym chcialem powiedziec ze to forum jest bardzo przyjemne poniewaz uzuskuje sie pomoc bardzo szybko a jest to pomoc efektywna podoba mi sie i bede tutaj zagladac czesciej dzieki jeszcze raz a oto moj kod troche nie poukladany ale ja dopiero zaczynam :p

[code]var
i,n,suma:integer;
a,b:longint;
begin
a:=0;
b:=0;
write('podaj licbe cyfr : ');
readln(n);
for i:=1 to n do
begin
b:=b*10+1;
a:=a+b;
end;
suma:=a;
writeln('suma : ',suma);
readln;
end. [/code]

1 użytkowników online, w tym zalogowanych: 0, gości: 1