• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Операторы цикла

  • Автор темы Автор темы Pchelka
  • Дата начала Дата начала

Pchelka

Ученик
Регистрация
27 Май 2011
Сообщения
9
Реакции
0
Баллы
0
Операторы цикла

Здравствуйте, помогите пожалуйста решить эту задачу через операторы цикла.
1. Имеется серия изменений элементов треугольника. Группы элементов пронумерованы. В серии в произвольном порядке могут встречаться такие группы элементов треугольника:

1) основании и высота;

2) две стороны и угол между ними ( угол задан в градусах );

3) три стороны.

Составить программу, которая запрашивает номер группы элементов, вводит соответствующие элементы и вычисляет площадь треугольника. Вычисления прекратить, если в качестве номера группы введен 0.

Вот посмотрите у меня решено,но только не через операторы цикла.
Var a,b,c,alpha,h,s:real;
num:byte;
begin
writeln('Esli nugno nayti ploshad treugolnika po:');
writeln(' 1)osnovaniyu i visote najmite |1|');
writeln(' 2)po dwum storonam i uglu najmite |2|');
writeln(' 3)po trem storonam najmite |3|');
writeln('Dlia vihoda najmite |0|');
readln(num);
case num of
0:exit;
1:
begin
write('vvedite dlinu osnovania: ');
readln(a);
write('vvedite visotu: ');
readln(h);
s:=a*h/2;
end;
2:
begin
write('vvedite dlinu odnoy storoni: ');
readln(a);
write('vvedite dlinu drugoy storoni: ');
readln(b);
write('vvedite ugol v radianah: ');
readln(alpha);
s:=a*b*sin(alpha)/2;
end;
3:
begin
write('vvedite dlinu pervoy storoni: ');
readln(a);
write('vvedite dlinu vtoroy storoni: ');
readln(b);
write('vvedite dlinu tretiey storoni: ');
readln(c);
alpha:=(a+b+c)/2;
s:=sqrt(alpha*(alpha-a)*(alpha-b)*(alpha-c));
end;
end;
writeln('Ploshad = ',s:4:2);
readln;
end.
 
в начале вставьте repeat
перед пустым readln вставьте until num=0
Это цикл с постусловием, будет работать до тех пор, пока вы не введете вариант 0, потом происходит выход из программы :)
Код:
Var a,b,c,alpha,h,s:real;
    num:byte;
begin
[COLOR="#ff0000"]repeat[/COLOR]
writeln('Esli nugno nayti ploshad treugolnika po:');
writeln('  1)osnovaniyu i visote najmite |1|');
writeln('  2)po dwum storonam i uglu najmite |2|');
writeln('  3)po trem storonam najmite |3|');
writeln('Dlia vihoda najmite |0|');
readln(num);
case num of
1:
begin
  write('vvedite dlinu osnovania: ');
  readln(a);
  write('vvedite visotu: ');
  readln(h);
  s:=a*h/2;
end;
2:
begin
  write('vvedite dlinu odnoy storoni: ');
  readln(a);
  write('vvedite dlinu drugoy storoni: ');
  readln(b);
  write('vvedite ugol v radianah: ');
  readln(alpha);
  s:=a*b*sin(alpha)/2;
end;
3:
begin
  write('vvedite dlinu pervoy storoni: ');
  readln(a);
  write('vvedite dlinu vtoroy storoni: ');
  readln(b);
  write('vvedite dlinu tretiey storoni: ');
  readln(c);
  alpha:=(a+b+c)/2;
  s:=sqrt(alpha*(alpha-a)*(alpha-b)*(alpha-c));
end;
end;
writeln('Ploshad = ',s:4:2);
[COLOR="Red"]until num=0;[/COLOR]
end.
Для аварийной остановки программы лучше использовать команду halt()
 
repeat ставить в начале программы? если да, то у меня выдает ошибку
 
К сожалению, нет у меня под рукой Excel :)
 
Посмотрите пожалуйста еще эту программу, мне ее тоже нужно решить через оператор цикла
1. Дано натуральное число N . Вычислить: на картинке пример

uses crt;
var n,i:integer;
s,z:real;
begin
write('n=');
readln(n);
s:=1;
z:=1;
for i:=2 to n do begin
z:=-z/2;
s:=s+z;
end;
write('S=',s:0:5);readln
end.
Правильно ли решено?если нет, то помогите пожалуйста
 

Вложения

  • mage011.gif
    mage011.gif
    443 байт · Просмотры: 78
Правильно
 
Назад
Сверху