Автор | Задача по дельфи |
Нужна помощь.
Задача по циклу.
Рыболовное судно имеет план отлова в размере D тонн. В первый день выловили А тонн рыбы, а в каждый последующий на С тонн больше. Определить в какой день будет выполнен план отлова.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a, b, c, l, s:integer;
begin
a:=strtoint(edit1.text);
b:=strtoint(edit2.text);
c:=strtoint(edit3.text);
l:=1;
s:=b+c;
while s>a do
b:=b+c;
l:=l+1;
s:=s+(b+c);
end;
Label4.caption:=inttostr(l);
end;
end.
Где я ошибся? |
while s>a do
b:=b+c;
между ними begin, не? |
s:=s+(b+c); Кажется здесь |
между ними begin, не?
не
Кажется здесь
что именно? |
var
но-но, я не при делах! |
для Mangecu:
В цикле с вычислением улова пипец какой-то |
для Раздетая:
сам знаю. Я ток вчера учил цикл. Пока сам не совсем правильно разобрался. У меня с телом цикла и с началом коряво.
А - это план конечный.
Б - это отлов в 1 день
С - это увеличение отлова в день |
Программирую на С++, держи решение, задачка на уровне 5 класса школы любой.))
#include <iostream>
using namespace std;
int main(){
int a,b,c,i,d,k=1;
cin>>a>>b>>c;
i=a; d=a;
while(i<c){
d+=b;
i+=d;
k++;}
cout<<k<<endl;
system("pause");
}
Где: а-вылов за 1 день. b-увеличение вылова. с-нужное кол-во. |
s:=b;
while s<a do
b:=b+c;
l:=l+1;
s:=s+b;
end;
Вроде так |
только мое решение идет на рассчет того, что на С тонн постоянное увеличение, аля арифметическая прогрессия, если не так, то с цикла просто одна строчка удаляется. |
А компилятор не говорит, в чем ты ошибся? |
ошибка какого типа: не запускается или считает неверно? |
для Cropon:
мне не С++ =)
для Раздетая:
по твоему запросу делфи завис хД
для Gult:
для Falcor:
ошибки по методу Раздетой нету, но дельфи виснет. приходится ctrl+f2 жать... |
Все работает теперь =)
while s<a do
тут надо было s>a =) |
while s>a do begin
b:=b+c;
l:=l+1;
s:=s+(b+c);
end;
Поверь уж старому паскальщику :) |
while А как оперетор читается? Я думала что (Пока s<a выполнять ...) |
while s>a do begin
b:=b+c;
l:=l+1;
s:=s+(b+c);
end;
Поверь уж старому паскальщику :)
begin не нужен когда один оператор в цикле.... вроде так |
для Раздетая:
Так там-то их три! Был бы один - было бы зацикливание, условие-то от него не меняется. И потом, к чему тогда относится последний end? |
procedure TForm1.Button1Click(Sender: TObject);
var a, b, c, l, s:integer;
begin
a:=strtoint(edit1.text);
b:=strtoint(edit2.text);
c:=strtoint(edit3.text);
l:=1;
s:=b;
begin
while s>a do
b:=b+c;
l:=l+1;
s:=s+b;
end;
Label4.caption:=inttostr(l);
end;
end.
Вот как правильно. Пашет все правильно. |
для ПсинаАдская:
17 я там с тобой соглашалась, за одно уточняла когда писать begin не надо
для Mangecu:
Попробуй всё таки вот так
procedure TForm1.Button1Click(Sender: TObject);
var a, b, c, l, s:integer;
begin
a:=strtoint(edit1.text);
b:=strtoint(edit2.text);
c:=strtoint(edit3.text);
l:=1;
s:=b;
while s<a do
begin
b:=b+c;
l:=l+1;
s:=s+b;
end;
Label4.caption:=inttostr(l);
end;
end.
Хотя может я в логике оператора while ошибаюсь |