Да се напише програма, съдържаща функции за пресмятане на лице и обиколка на правоъгълник и квадрат. С тяхна помощ да се пресметне:
- площта на имоти с форма на буквата L и П, с дължина и широчина 40 метра и дебелина на „линията“ на буквата 10 м
- колко линейни метра мрежа ще са необходими за ограждането им


//дано да става, като изчисленията са така - за имоти с друг размер програмата //няма да работи program Project1; function LicePr(a,b:integer):integer; begin Result:=a*b; end; function ObikolkaPr(a,b:integer):integer; begin Result:=2*(a+b); end; function LiceKv(a:integer):integer; begin Result:=a*a; end; function ObikolkaKv(a:integer):integer; begin Result:=4*a; end; begin Write('Ploshta na imot s formata na bukva L e '); WriteLn(LiceKv(40)-LiceKv(30)); Write('Neobhodima mrega (v metri): '); WriteLn((ObikolkaPr(40,10)-10)+(ObikolkaPr(30,10)-10)); WriteLn; Write('Ploshta na imot s formata na bukva P (na kirilica) e '); WriteLn(LiceKv(40)-LicePr(20,30)); Write('Neobhodima mrega (v metri): '); WriteLn(2*ObikolkaPr(40,10)+20); ReadLn; end.Браво, много добре! Да, добре си съобразила и това, че за имоти с други размери няма как това да работи. Виж коментарът ми към решението на Светли как може да стане така, че да работи и тогава.
(*Да се напише програма, съдържаща функции за пресмятане на лице и обиколка на правоъгълник и квадрат. С тяхна помощ да се пресметне: площта на имоти с форма на буквата L и П, с дължина и широчина 40 метра и дебелина на „линията“ на буквата 10 м колко линейни метра мрежа ще са необходими за ограждането им*) program Project1; function Lice(a,b:integer):integer; begin if a=b then Result:=a*a else Result:=a*b; end; function Obikolka(a,b:integer):integer; begin if a=b then Result:=4*a else Result:=(2*a)+(2*b); end; var a,b,S1,S2,O1,O2 :integer; begin Writeln('Vavedi a i b:'); Readln(a,b); (*площта на имот с форма L*) S1:=Lice(a,b)+Lice(30,b); (*площта на имот с форма П*) S2:=2*(Lice(a,b))+Lice(20,10); (*колко линейни метра мрежа ще са необходими за ограждането им*) (*площта на имот с форма L*) O1:=Obikolka(a,b)+2*30; (*площта на имот с форма П*) O2:=2*(Obikolka(a,b))+20; Writeln('Liceto na imot s forma L: ',S1); Writeln('Liceto na imot s forma P: ',S2); Writeln('Neobhodimi sa ',O1, ' metra mreja'); Writeln('Neobhodimi sa ',O2, ' metra mreja'); Readln; end.Браво, Светли, много добре! И добре си го коментирал! Но според мен няма нужда от командата if a=b then в двете функции – за компютърът е все едно дали ще смята a*a или a*b, а проверката на условието е още една команда, която той трябва да изпълнява, а и малко усложнява кода на програмата. Друго, което може да се отбележи, е или да укажеш a и b като твърди стойности, или където ти е 30 да е a-b, защото така както си го направил, ако въведа за a и b 50 и 20, програмата няма да смята вярно.
#include <cstdlib> #include <iostream> using namespace std; int Lice(int a, int b) { return a*b; } int Obikolka(int a, int b) { return 2*a+2*b; } int main() { cout<<"Lice L e"<<Lice(30,10)+(40,10)<<endl; // ????????? ?????? ?? L cout<<"Obikolka L e"<<Obikolka(40,10)+(30,10)<<endl; // ????????? ?????????? ?? L cout<<"Lice ? e"<<Lice(30,10)+(40,10)+(30,10)<<endl; // ????????? ?????? ?? ? cout<<"Obikolka ? ?"<<Obikolka(30,10)+(30,10)+(40,10)<<endl; // ????????? ?????????? ?? ? return 0; }Браво Марине! Виж коментара ми към решението на Цвети, те важат и за теб. Превключвай на кирилица преди copy и paste, за да ти се запази кирилицата в коментарите…