33. даны три действительных числа. возвести в квадрат те из них, значения которых неотрицательны, и в четвертую степень — отрицательные. написать в vba и дельфе
Delphi у меня 7-й версии. будет чем проект открыть? Код модуля в файле Unit1.pas.
P.S. Что-то zip не грузится, код - ниже:
procedure TForm1.Button1Click(Sender: TObject); var N1, N2, N3: Real; begin //Проверок на введённе значения для простоты не делаю N1:=StrToFloat(Edit1.Text); N2:=StrToFloat(Edit2.Text); N3:=StrToFloat(Edit3.Text);
if N1<0 then N1:=N1*N1*N1*N1 else N1:=N1*N1; if N2<0 then N2:=N2*N2*N2*N2 else N2:=N2*N2; if N3<0 then N3:=N3*N3*N3*N3 else N3:=N3*N3;
Для проверки, закрыты ли все скобки, можно было бы просто их посчитать, но мы будем проверять правильность вложенности. Для этого нам пригодится std::stack (да, и решаем на С++).
#include <iostream> #include <stack> #include <string> using namespace std; typedef unsigned short int USI;
bool hasCorrectBracing(string);
int main() { setlocale(0, ""); // кириллица USI N; cout << "N = "; cin >> N; string row;
for(size_t i = 1; i <= N; i++) { cout << "Строка " << i << ": "; cin >> row; if ( hasCorrectBracing(row) ) { cout << "Good\n"; } else { cout < "Bad\n"; } }
Посмотрел решение на С++. Ну что же, я недаром зову его "полуассемблер" - нечего ему в общеобразовательных школах делать... Писать долго, много и непонятно для непосвященных. А сколько при этом можно ошибок сделать - просто жуть. Вот для сравнения решение на Паскале. Я тоже использовал стек, чтобы проще было сравнивать)))
// PascalABC.NET 3.2, сборка 1370 от 24.12.2016 // Внимание! Если программа не работает, обновите версию!
function IsGood(s:string):Boolean; begin var St:=new Stack<char>; foreach var c in s do case c of '(':St.Push(c); ')':if St.Count>0 then St.Pop else begin Result:=false; Exit end; end; Result:=St.Count=0 end;
begin var n:=ReadlnInteger('N='); var s:=ReadArrString(n); s.Select(x->IsGood(x)).Select(x->x?'Good':'Bad').Println(NewLine) end.
Контрольный пример (скобки "разбавлены" числами, чтобы было ясно, что программа не только скобки умеет читать, но и проверять их расстановку в произвольной строке)
N= 4 12(3)456(7)8 123((67)8) 12)34(5 (1(234)567 Good Good Bad Bad
Delphi у меня 7-й версии. будет чем проект открыть? Код модуля в файле Unit1.pas.
P.S. Что-то zip не грузится, код - ниже:
procedure TForm1.Button1Click(Sender: TObject);
var
N1, N2, N3: Real;
begin
//Проверок на введённе значения для простоты не делаю
N1:=StrToFloat(Edit1.Text);
N2:=StrToFloat(Edit2.Text);
N3:=StrToFloat(Edit3.Text);
if N1<0 then N1:=N1*N1*N1*N1 else N1:=N1*N1;
if N2<0 then N2:=N2*N2*N2*N2 else N2:=N2*N2;
if N3<0 then N3:=N3*N3*N3*N3 else N3:=N3*N3;
Edit4.Text:=FloatToStr(N1);
Edit5.Text:=FloatToStr(N2);
Edit6.Text:=FloatToStr(N3);
end;