Program na obliczanie ilosci cegieł piramidy.

0

Witam!

Dostałem zadanie domowe, w którym muszę stworzyć program obliczający ilość cegieł w piramidzie na podstawie ilości cegieł w jednym boku podstawy.

Znalazłem program w c++ ale po przeanalizowaniu nie jest on do końca poprawny.

#include <iostream>
#include <stdlib.h>

using namespace std;

int main(int argc, char *argv[])
{
int bok;
int ilceg;

cout << "Podaj liczbę cegieł w podstawie piramidy:";
cin >> bok;

ilceg = 0;
while (bok > 0)
{
ilceg += bok * bok;
--bok;
}

cout << "Ilość cegieł w tej piramidzie to: " << ilceg << endl;

system("PAUSE");
return 0;
} 

Dlatego pomyślałem i ułożyłem działanie na potrzeby programu a wygląda ono tak:

c=a*4-4*n
d=c+1
gdzie:
d - ilość cegieł z czubkiem
c - ilość cegieł bez czubka
a - zmienna ilość cegieł w jednym boku podstawy
n - mnożnik kondygnacji piramidy

I tu moje pytanie - mianowicie jak powinienem to zapętlić aby to działało? Jak na chwile obecną proszę o modyfikacje tego:

uses crt;
var a,:integer;

begin
clrscr;
writeln ('Podaj ilość cegieł w jednym boku podstawy');
readln (a);
Repeat
c:=a*4-4*n;
d:=c+1
writeln ('Ilość cegiel w piramidzie to: ',d);
end.

Z góry dziękuje za pomoc.

0

Tutaj repeat jest zbędne i musisz zadeklarować pozostałe zmienne oraz zapytać o nie, polecam raczej sposób Write('Pytanie: '); i poniżej Readln(Zmienna); A jeżeli chcesz zadbać aby program był idiotoodporny i nie pozwalał wpisać nic innego niż dodatnie liczby całkowite to wykorzystaj procedurę Val - opisaną tutaj: Val .

0

No ale tutaj właśnie jest pies pogrzebany. Jak na razie jestem laikiem w tym języku no i nie do końca wiem jak to zadeklarować. Najłatwiej było by mi z repeatem bo tą funkcje rozumiem i na tym chciałbym się oprzeć. Program stworzony jako tako jest tylko nie wiem jak go zapętlić.

0

Moim zdaniem (na C++ znam się słabo) to chyba powinno wyglądać tak:

program piramida;

uses crt;

var 
bok, iloc: integer;

begin
write('Podaj ilość cegieł w jednym boku podstawy? ');
readln(bok);
iloc:=0;
While bok>0 do begin
iloc:=iloc+bok;
dec(bok);
end;
Writeln('Ilość cegiel w piramidzie to: ',iloc);
end.
0

Ten program na pewno jest błędny. Wiem to na podstawie liczby własnej - piramida o boku 5 cegiel musi mieć 61 cegiel a tu pokazuje niestety 15.

0

Chyba ma być:

iloc:=iloc+(bok*bok);

ale to wychodzi 55 przy 5? nie wiem czemu 61?

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