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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 17:31   #1
Красноглаз
 
Регистрация: 28.09.2011
Сообщений: 9
По умолчанию Оптимизация

День добрый! Помогите советом, как сделать программу короче, сохранив функционал=)

Код:
program first;
label 1, 2, 3;
var
a, b, sum, n, p, z, g:integer;
begin
writeln('Ни одно значение не может быть равным нулю');
b:=1; 
sum:=0; 
1 : writeln('1.Введите количество лет');
readln(n); 
if n<=0 then goto 1;
2 : writeln('2.Количество долларов');
readln(z);
if z<=0 then goto 2;
3 : writeln('3.Введите количество лет, сумма подарка которых вас интересует');
readln(g);
if g<=0 then goto 3;
for a:=0 to n do
  begin
    sum:=sum+a+b;
    b:=(b+a)*2;
  end;
  writeln('1.Общая сумма на эти годы ',sum);
  b:=1;
  sum:=0;
  p:=1;
  for a:=0 to g do
  begin
    b:=(p+a);
    p:=b*2;
  end;
  writeln('3.сумма подарка в эти годы ',b);
  a:=0;
  b:=1;
  sum:=0;
   repeat
  begin
    sum:=sum+a+b;
    b:=(b+a)*2;
    a:=a+1;
  end;
  until z<=sum;
writeln('2.Возраст, на который накопится энное количество денег ',a);
end.

Последний раз редактировалось Stilet; 24.10.2011 в 14:40.
Красноглаз вне форума Ответить с цитированием
Старый 24.10.2011, 14:00   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Код:
1 : writeln('1.Введите количество лет');
readln(n);
if n<=0 then goto 1;
Пишу "двадцать" и программа вылетает, но это так, между делом.

Я так понял, что программа должна посчитать, через какое время накопится сумма, достаточная на подарок? Тогда, я думаю, проще будет считывать все по очереди в одном цикле Try и ловить Except`ы, что, кстати, решит вышеуказанную проблему.

Ну и хотелось бы увидеть постановку задачи, этот код туго переваривается.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 27.10.2011, 12:06   #3
Красноглаз
 
Регистрация: 28.09.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Код:
1 : writeln('1.Введите количество лет');
readln(n);
if n<=0 then goto 1;
Пишу "двадцать" и программа вылетает, но это так, между делом.

Я так понял, что программа должна посчитать, через какое время накопится сумма, достаточная на подарок? Тогда, я думаю, проще будет считывать все по очереди в одном цикле Try и ловить Except`ы, что, кстати, решит вышеуказанную проблему.

Ну и хотелось бы увидеть постановку задачи, этот код туго переваривается.
Условие: Когда я родился, мой дядя подарил мне 1 долар. В каждый последующий день рождения он дарил сумму в 2 раза больше предыдущей плюс еще столько долларов, сколько лет мне исполнилось.
21.10.11
Написать программу, которая:
1) Находит сумму подарка, когда мне исполнится n лет
2) Какая общая сумма подаренная дядей, когда мне исполнится n лет
3) Через сколько лет сумма всего подаренного дядей станет равной или превысит введенное кол-во долларов
Красноглаз вне форума Ответить с цитированием
Старый 28.10.2011, 13:40   #4
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Ну тогда сделать цикл
Код:
repeat
until
условием поставить
Код:
(i>=n) and (summ>=summ_need)
Т.е. код находит и количество лет (проверка через сумму), и количество денег (проверка через года).
Ну естественно поставить "отсечку" после того года, когда сумма превысит искомую.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация... MikeMNN Общие вопросы C/C++ 0 15.12.2010 17:40
оптимизация Terrance! Помощь студентам 8 24.09.2010 10:58
Оптимизация Viper1287 Операционные системы общие вопросы 7 13.09.2009 15:33
Оптимизация Flangini Microsoft Office Excel 5 11.06.2009 11:48
Оптимизация Terran Общие вопросы Delphi 3 03.05.2008 19:03