Задания на Паскаль - Форум
Воскресенье, 04.12.2016, 04:54
Задачи по информатике
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 41234»
Модератор форума: ignorer, KOT_B_MEIIIKE, PASCAL26, atvrider 
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » Задания на Паскаль (4)
Задания на Паскаль
RenДата: Четверг, 21.01.2010, 17:31 | Сообщение # 1
Лейтенант
Группа: Участник
Сообщений: 11
[ 0 ]
Статус: Offline
1. Получить все числа в заданном диапазоне, которые являются полными квадратами.
2. Написать программу, которая проверяет, не приведет ли суммирование двух чисел к переполнению.
3. Для заданного натурального числа n вычислить n!! и (-1)[в степени n+1]*n!!
n!! означает 1*3*5... n для не четных, и 2*4*6... для четных.
4. Сост. программу, для вычисления выражение, при заданном x,y,a,b.
T= [квадратный корень]sin*sin(x*x-a)+cos*cos(x*x+a)(y-|b|-1)/(x+a-1) [квадратный корень]sin*sin(y*y*y*y +|b|)+cos*cos(y*y*y*y-|b|)
5. В заданном одномерном массиве провести поиск среди пар его соседних элементов и найти те пары, разность между элементами которых, есть величина наибольшая для данного массива.
 
ignorerДата: Четверг, 21.01.2010, 18:04 | Сообщение # 2
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
вот первая
var x, y, z : integer;
begin
cls;
read(x, y);
for z:=x to y do if sqrt(z)=trunc(sqrt(z))then write(z, ' ');
end.
 
ignorerДата: Четверг, 21.01.2010, 18:10 | Сообщение # 3
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
вот третья:
var n, a, b : integer;
x : real;
begin
cls;
a:=1;
read(n);
if n mod 2=0 then
repeat
inc(b,2);
a:=a*n;
until b=n
else begin
b:=1;
repeat
b:=b+2;
a:=a*b;
until b=n;
end;
x:=power(-1,n-1)*a;
write(x);
end.
 
ignorerДата: Четверг, 21.01.2010, 18:18 | Сообщение # 4
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
var a : array[1..100] of integer;
i, n, x, j : integer;
begin
cls;
read(n);
for i:=1 to n do begin a[i]:=random(50); write(a[i], ' '); end;
for i:=2 to n do if abs(a[i]-a[i-1])>x then begin
x:=abs(a[i]-a[i-1]);
j:=i;
end;
writeln; write(j-1, ' ', j);
end.
 
RenДата: Четверг, 21.01.2010, 18:39 | Сообщение # 5
Лейтенант
Группа: Участник
Сообщений: 11
[ 0 ]
Статус: Offline
Спасибо за первую и третью, только вот последняя, это которая задача получается?
 
ignorerДата: Четверг, 21.01.2010, 20:05 | Сообщение # 6
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
Quote (Ren)
Спасибо за первую и третью, только вот последняя, это которая задача получается?

как раз и получается последняя(пятая) smile
 
RenДата: Четверг, 21.01.2010, 21:22 | Сообщение # 7
Лейтенант
Группа: Участник
Сообщений: 11
[ 0 ]
Статус: Offline
Ну, значит, правильно я думал)
 
ignorerДата: Четверг, 21.01.2010, 22:30 | Сообщение # 8
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
Quote (Ren)
правильно я думал

Красава! biggrin
 
RenДата: Суббота, 23.01.2010, 16:34 | Сообщение # 9
Лейтенант
Группа: Участник
Сообщений: 11
[ 0 ]
Статус: Offline
Quote
Написать программу, которая проверяет, не приведет ли суммирование двух чисел к переполнению.

Остальные задачи вроде сделал, осталась только эта.
 
ignorerДата: Суббота, 23.01.2010, 22:26 | Сообщение # 10
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
напиши когда переполнение наступает и я тебе решу.
 
RenДата: Среда, 27.01.2010, 15:26 | Сообщение # 11
Лейтенант
Группа: Участник
Сообщений: 11
[ 0 ]
Статус: Offline
Quote
напиши когда переполнение наступает и я тебе решу.

Тип переменных должен быть integer, соответственно и переполнение наступает, когда сумма выходит за его пределы.

Quote
вот третья:
var n, a, b : integer;
x : real;
begin
cls;
a:=1;
read(n);
if n mod 2=0 then
repeat
inc(b,2);
a:=a*n;
until b=n
else begin
b:=1;
repeat
b:=b+2;
a:=a*b;
until b=n;
end;
x:=power(-1,n-1)*a;
write(x);
end.

Есть ли вариант этой задаче без использования power?

Quote
var a : array[1..100] of integer;
i, n, x, j : integer;
begin
cls;
read(n);
for i:=1 to n do begin a[i]:=random(50); write(a[i], ' '); end;
for i:=2 to n do if abs(a[i]-a[i-1])>x then begin
x:=abs(a[i]-a[i-1]);
j:=i;
end;
writeln; write(j-1, ' ', j);
end.

Выдает ошибку: "Integer or real expression expected."

Quote
Сост. программу, для вычисления выражение, при заданном x,y,a,b.
T= [квадратный корень]sin*sin(x*x-a)+cos*cos(x*x+a)(y-|b|-1)/(x+a-1) [квадратный корень]sin*sin(y*y*y*y +|b|)+cos*cos(y*y*y*y-|b|)

При решении определить и использовать функцию.


Сообщение отредактировал Ren - Среда, 27.01.2010, 15:26
 
ignorerДата: Среда, 27.01.2010, 16:01 | Сообщение # 12
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
Quote (Ren)
Есть ли вариант этой задаче без использования power?

убираешь строчку
Code
x : real;

меняешь
Code
x:=power(-1,n-1)*a;  
write(x);

на
Code

if n mod 2=0 then a:=-1*a;
write(a);

и усё, прога готова
 
ignorerДата: Среда, 27.01.2010, 16:04 | Сообщение # 13
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
Quote (Ren)
Выдает ошибку: "Integer or real expression expected."

в каком месте выдаёт ошибку? у меня всё работает прально
 
RenДата: Среда, 27.01.2010, 16:54 | Сообщение # 14
Лейтенант
Группа: Участник
Сообщений: 11
[ 0 ]
Статус: Offline
Quote

for i:=2 to n do if abs(a[i]-a[i-1])>x then begin

апд теперь вроде запускается, только выводит он в ответе n-1 и n .
апд намбер ту числа выводятся, но явно не те, что были нужны.

Сообщение отредактировал Ren - Среда, 27.01.2010, 18:00
 
ignorerДата: Среда, 27.01.2010, 21:04 | Сообщение # 15
Генералиссимус
Группа: Модераторы
Сообщений: 602
[ 18 ]
Статус: Offline
странно, я тестил, у мну всё было в шоколаде. попробуй убрать везде abs, мож тогда буит норм
 
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » Задания на Паскаль (4)
Страница 1 из 41234»
Поиск:

Copyright MyCorp © 2016