Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2018, 00:27   #1
Delphilol
 
Регистрация: 19.10.2017
Сообщений: 3
По умолчанию Помогите понять,почему препод придирается к коду,хотя вроде как все верно,следуя условиям

Код:
function factorial(k:Integer):Integer;
var i:Integer;
begin
if k<1 then
result:=0
else begin
  result:=1;
  for i:=1 to k do result:=result*i;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
f:textfile;
i,j,max,k,t:integer;
x,y,s1,s2,s,p:Real;
a:array[1..4,1..7] of Real;
label 1;
begin
  AssignFile(f,'output.pas');
  Rewrite(f);

x:=strtofloat(edit1.text);
y:=strtofloat(Edit2.Text);
if (Abs(x)<0) or (Abs(y)>100000) then begin
  F1Book1.TextRC[1,1]:='nedopustimoe znachenie';
  Writeln(f,'Iaaiionoeiia cia?aiea');
  goto 1;end;
s1:=0;s2:=0;t:=0;
for i:=1 to 4 do
for j:=1 to 7 do
if j>3 then a[i,j]:=x+y/(i+j*x) else a[i,j]:=x+x/factorial(j)+power(x,5)/i;
for i:=1 to 4 do
for j:=1 to 7 do
F1Book1.TextRC[i,j]:=FloatToStrF(a[i,j],fffixed,7,1);
for i:=1 to 4 do begin Writeln(f);
for j:=1 to 7 do
write(f,a[i,j]:7:1,'  ');end;
for i:=1 to 4 do
s1:=S1+a[i,1];
s1:=s1/4;
for i:=1 to 4 do
s2:=s2+a[i,2];
s2:=s2/4;
s:=(s1+s2)/2;
label4.Caption:=FloatToStrF(s,ffFixed,7,1);
max:=0;
for j:=1 to 7 do begin
  k:=0;
for i:=1 to 4 do
if a[i,j]>s then k:=k+1;
if max<k then begin max:=k;t:=j;end;
end;
 for i:=1 to 4 do begin
 p:=a[i,t];
 a[i,t]:=a[i,7];
 a[i,7]:=p;
 end;
 for i:=1 to 4 do
 for j:=1 to 7 do
 F1Book2.TextRC[i,j]:=FloatToStrF(a[i,j],ffFixed,7,1);
 Writeln(f);
 for i:=1 to 4 do begin Writeln(f);
 for j:=1 to 7 do
 Write(f,a[i,j]:7:1,'  '); end;
 1:CloseFile(f);
 end;

procedure TForm1.Button2Click(Sender: TObject);
var i,j:Integer;
begin
  for i:=1 to 4 do
  for j:=1 to 7 do begin
    F1Book1.TextRC[i,j]:='';
    F1Book2.TextRC[i,j]:='';
  end;
  Edit1.text:='';
  Edit2.text:='';
  Label4.Caption:='';


end;
Изображения
Тип файла: jpg 30.jpg (68.7 Кб, 90 просмотров)

Последний раз редактировалось Аватар; 20.02.2018 в 01:02.
Delphilol вне форума Ответить с цитированием
Старый 20.02.2018, 08:15   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Я бы на месте препода за такой говнокод оторвал бы руки.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 20.02.2018, 09:16   #3
Delphilol
 
Регистрация: 19.10.2017
Сообщений: 3
По умолчанию

Честно,то меня мало волнует,что и кому Вы собираетесь оторвать,ваше право,но я не увидел элементарного ответа на свой вопрос
Если вы таким образом пытаетесь прославится,что обладаете высокими знаниями в области Делфи,то так почему же не помочь разобраться в этом тем,кто нуждается?
Delphilol вне форума Ответить с цитированием
Старый 20.02.2018, 09:53   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так а что препод-то говорил?
Цитата:
Сообщение от Delphilol Посмотреть сообщение
почему же не помочь разобраться
Слишком много помогать придется. Тут много чего не так (форматирование, имена переменных, компонентов, магические числа, запихивание всего в обработчик клика вместо нормальных функций/процедур, ...) если говорить про качество кода (задачу и правильность решения не смотрел), но зависит от требуемого уровня, если это первая лаба в ПТУ, то наверно сойдет )

Можно начать с чтения чего-нибудь типа Code Complete Макконнелла.

Или например
https://ru.hexlet.io/blog/posts/naming-in-programming
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 20.02.2018 в 09:57.
Alex11223 вне форума Ответить с цитированием
Старый 20.02.2018, 09:57   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Delphilol Посмотреть сообщение
но я не увидел элементарного ответа на свой вопрос
1) научитесь форматировать код с помощью отступов, чтобы было видна ЛОГИКА кода - какой блок кода где начинается и где заканчивается.
2) вместо 4 и 7 должны быть константы n и m
3) нужно полностью избавится от Goto
4) в коде должны быть комментарии

Это то, что видно СРАЗУ!

дальше. Что такое и для чего используются F1Book1 и F1Book2 ? Это стандартные компоненты? Это визуальные компоненты? Вам их использование предписано условиями выполнения работы (в методике это есть)?

дальше.
не разбирал подробно, но, по моему, Вы неверно поняли/реализовали "Элементы столбца, имеющим это значение наибольшим, поменять с элементами последнего столбца"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.02.2018, 09:59   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в коде должны быть комментарии
Лучше писать так, чтоб они не были нужны )
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.02.2018, 10:15   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Лучше писать так, чтоб они не были нужны )
Не согласен. Комментарии нужны даже в ИДЕАЛЬНОМ коде. Просто у них другая задача, они, разумеется, не должны дублировать (объяснять код).
Впрочем, это всё к теме не относится.

Хабр - Почему [не]нужно комментировать код

Последний раз редактировалось Serge_Bliznykov; 20.02.2018 в 10:19.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.02.2018, 10:25   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну да, они нужны для объяснения каких-то вещей типа оптимизаций, отсылок к чему-то, документирования публичного API.

Тут вряд ли понадобятся )
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.02.2018, 11:08   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Тут вряд ли понадобятся
ну, тут бы они понадобились, чтобы понять, какую задачу решает этот код (типа
"прочитать количество строк", "прочитать количество столбцов",
"среди первых двух столбцов найти столбец, в котором больше элементов, превышающих среднее",
"поменять элементы столбца с наибольшим числом с элементами последнего столбца" и т.п.)
Мне лично так было бы удобнее разбирать этот код и проверять его.

впрочем, конечно, это моё личное субъективное мнение.
Вполне возможно, что у ТС и у его преподавателя другое мнение на этот счёт.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сообщения в чат не выводятся, хотя все вроде нормально должно работать. trebush PHP 2 15.03.2016 14:55
помогите хотя бы понять как делать AHNME Помощь студентам 15 10.01.2016 11:05
Почему не работает код, хотя вроде всё правильно mpdasa Помощь студентам 3 04.06.2012 10:44
Люди проблема со змейкой ужасно долго старался но не получилось в одном месте, хотя вроде бы все правильно написал! zhenka619 Паскаль, Turbo Pascal, PascalABC.NET 4 24.01.2012 16:30