Помощь - Поиск - Пользователи - Календарь
Полная версия: МАССИВЫ
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
SAF
плиз помагите решить задачи очень надо:
№1
дан массив a определить суммму законочередующейся последовательности a[1]-a[2]+a[3]-a[4]+...
условный оператор и операцию возведения в степень не использовать. размерность массива 10. при задании массива использовать датчик случайных чисел.
№2
в поезде 18 вагонов в каждом из которых 36 мест информация о проданных на поезд билетах храниться в двухмерном массиве номера строк которых соответствуют номерам вагонов а номера столбцов номерам мест если место на то или иное место продан то соответствующий элемент массива имеет значение 1 в противном случае 0 составить программу определяющую число свободных мест в любом из вагонов поезда.
мисс_граффити
показывай, что пробовал делать
}0pa
На держи 1-ую, ну, а вторая по-моему элементрная...Сам попробуй начать, если не полуется, то обращайся give_rose.gif
uses crt;
const n=10;
var m:array[1..n] of integer;
i,s:integer;
begin
{Ввод массива}
for i:=1 to n do m[i]:=random(1000);
{Вывод массива}
for i:=1 to n do Writeln('m[',i,'] = ',m[i]);
{Подсчет суммы}
s:=0;
for i:= 1 to n do
begin
s:=s+m[i];
s:=-s;
end;
write('Полученная сумма равна:',s);
end.


uses crt;
const n=18;m=36;
var mas:array[1..n,1..m] of byte;
s:array[1..n] of integer;
i,j,k:integer;
begin
ClrScr;
{------------------------------------------------------------------------------}
{Ввод массива}
for i:=1 to n do
for j:=1 to m do
mas[i,j]:=random(2);
{------------------------------------------------------------------------------}
{Вывод массива}
for i:=1 to n do
begin
for j:= 1 to m do
Write(mas[i,j],' ');
writeln
end;
{------------------------------------------------------------------------------}
{Определине кол-ва свободных мест в каждом вагоне}
For i:=1 to n do
begin
s[i]:=0;k:=0;
for j:=1 to m do
begin
if mas[i,j]=0 then
k:=k+1;
end;
s[i]:=k;
end;
for i:=1 to n do writeln('Кол-во свободных мест в вагоне ',i,' : ',s[i]);
readln
{------------------------------------------------------------------------------}
end.

Хотя ладно держи
volvo
}0pa, а теперь ВНИМАТЕЛЬНО посмотри, что ты делаешь:
for i:= 1 to n do
begin
s:=s+m[i];
s:=-s;
end;


массив = <1, 5, 19>
s = 1 -> -s -> s = -1
s = -1 + 5 = 4 -> -s -> s = -4
s = -4 + 19 = 15 -> -s -> s = -15

1 - 5 + 19 чему должно равняться?
}0pa
Цитата(volvo @ 27.11.2006 21:10) *

массив = <1, 5, 19>

Ха ха ха...А у в условие четное кол-во элементов массива
Цитата
размерность массива 10
. Не так ли?
volvo
Чего ты смеешься? Ты всегда вот так пишешь программы, только чтобы они отработали на приведенных числах? Тогда, извини, но больше ТАКИЕ программы здесь не пости... Завтра придет человек, которому понадобится сделать то же самое для НЕчетного (или вообще любого) числа элементов, и что? Скажет "не работает программа", отношение к форуму уже другое...
мисс_граффити
а к чему такое ограничение:
Цитата
операцию возведения в степень не использовать
?
как ее здесь можно использовать-то?

{Ввод массива}
for i:=1 to n do m[i]:=random(1000);
{Вывод массива}
for i:=1 to n do Writeln('m[',i,'] = ',m[i]);

зачем 2 цикла?

s:=0;
k:=1;
for i:= 1 to n do
begin
s:=s+k*m[i];
k:=-k;
end;
}0pa
Цитата(мисс_граффити @ 28.11.2006 13:16) *

зачем 2 цикла?

Всегда отделяю вывод и ввод данных, чтобы не получилось путаницы...
Цитата
Чего ты смеешься? Ты всегда вот так пишешь программы, только чтобы они отработали на приведенных числах? Тогда, извини, но больше ТАКИЕ программы здесь не пости... Завтра придет человек, которому понадобится сделать то же самое для НЕчетного (или вообще любого) числа элементов, и что? Скажет "не работает программа", отношение к форуму уже другое...

Это понятно,но была конкретно поставлена задача, конечно, неуниверсальная для любого n
SAF
пасибо всем бальшое. выручили. ОГРОМЕННОЕ ССППААССИИББОО!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.