PDA

Показать полную графическую версию : Помогите решить задачу(Pascal)


Страниц : [1] 2

verdix
16-06-2008, 21:43
1) С клавиатуры ввести 5 чисел, вывести масив, сосчитать сумму негативных чисел.
2) Заполнить двумерный масив 5х8 рандомными числами, в диапозоне от -5 до 5. Вывести на экран. Сосчитать сумму элементов, каторые находятся под главной диагональю.
3) Дана матрица с позитивными числами 4х4. Вввести элементы с клавиатуры. Найти четные числа. Вывести матрицу и результат.
4) Масив 2х4х3 заполнить рандомными числами, в диапозоне от 0 до 5. Сосчитать сумму элементов, которые находятся во втором ряду.
Зарание спасибо.

Admiral
16-06-2008, 21:55
Зачем же тему уже создали Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) (http://forum.oszone.net/thread-107695.html)?
Как раз по содержанию первого поста может подойти.
Понимаю, индивидуализм. А собственно в чём то помощь требуется? Есть какие-то загвостки в исходнике или отсутствие полного понимания вопроса?
Для первого или второго случая подойдёт в разной степени этот линк
Лабы Pascal (http://www.allcode.ru/content/category/8/20/53/)

verdix
16-06-2008, 22:00
Admiral,
Понимаю, индивидуализм. А собственно в чём то помощь требуется? Есть какие-то загвостки в исходнике или отсутствие полного понимания вопроса?
Если ты знаешь язык, то я очень за тебя рад. Я его не знаю!

Admiral
16-06-2008, 22:13
verdix, сорри, не хотел обидеть. :cry: :drug:
Я просто по теме не понять в чём заключается помощь: в самом решении примеров или в подсказке по их решению?
Погуляй пока по той ссылке, что я дал, найди приблизительный пример, попробуй подогнать его к твоим задачам, если что не так будет выходить кидай его в тему через тег {code} будем разбираться всем форумом.
Ещё раз сорри если обидел, цели такой себе не ставил.

Drongo
16-06-2008, 22:44
негативных чисел » несколько оффтоповый вопрос, а как понимать, слово - негативные, это значит, отрицательные?!позитивными числами » значит позитивные - это положительные.

Сосчитать сумму элементов, каторые находятся под главной диагональю. »И ещё не понимаю, какую диагональ считать главной? Если их две...

verdix
16-06-2008, 22:51
Drongo,
несколько оффтоповый вопрос, а как понимать, слово - негативные, это значит, отрицательные?!
значит позитивные - это положительные.
ДА, именно это я и имел ввиду. Сорри, с другого языка переводил, допустил ошибку.

ещё не понимаю, какую диагональ считать главной? Если их две...
НУ вот, их две, выбираем которая главнее и считаем. =) Больше на эту тему сказать ничего не могу! :(

Admiral
16-06-2008, 22:52
Drongo, да это так и есть. Ноль тоже к позитивно-положительным.
Вероятно что та которая длиннее, если не равномерная фигура.
Не те вопросы будут задавать при приёме, а по коду.

В 4м задании Масив 2х4х3 ... Сосчитать сумму элементов, которые находятся во втором ряду. » трёх мерный массив. О ком втором ряде идёт речь? Там есть варианты.

Drongo
16-06-2008, 23:00
1 задание решил на С++, если можно перевести на требуемый язык...

//1) С клавиатуры ввести 5 чисел, вывести масив, сосчитать сумму негативных чисел.
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;

int main()
{
int const size = 5;
int array[size] = {0};
int summNegativ = 0,
z;

for(int i = 0; i < size; i++){
cout<<" Element [ "<<i<<" ] = ";
cin>>array[i];
}

cout<<endl<<"-----===Vivod massiva===-----"<<endl;

for(int i = 0; i < size; i++)
cout<<" Element [ "<<i<<" ] = "<<array[i]<<endl;

cout<<endl<<"-----===Rashot negativ number===-----"<<endl;

for(int i = 0; i < size; i++){
if(array[i] < 0)
summNegativ += array[i];
}

cout<<endl<<"-----===Vivod Resultata Rashota negativnich chisel===-----"<<endl;

cout<<endl<<" Summa Negativnih chisel ravna = "<<summNegativ<<endl;

cin>>z;

return 0;
}
//---------------------------------------------------------------------------

Drongo
16-06-2008, 23:16
3) Дана матрица с позитивными числами 4х4. Вввести элементы с клавиатуры. Найти четные числа. Вывести матрицу и результат.


//3) Дана матрица с позитивными числами 4х4. Вввести элементы с клавиатуры. Найти четные числа. Вывести матрицу и результат.
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;

int main()
{
int const a = 4;
int const b = 4;
int array[a][b] = {0};
int summNegativ = 0,
z;

for(int i = 0; i < a; i++){
for(int j = 0; j < b; j++){
cout<<" Element [ "<<i<<" ] [ "<<j<<" ] = ";
cin>>array[i][j];
}
}

cout<<endl<<"-----===Vivod massiva===-----"<<endl;

for(int i = 0; i < a; i++)
for(int j = 0; j < b; j++)
cout<<" Element [ "<<i<<" ] [ "<<j<<" ] = "<<array[i][j]<<endl;

cout<<endl<<"-----===Rashot chotnih number===-----"<<endl;

for(int i = 0; i < a; i++){
for(int j = 0; j < b; j++)
if((array[i][j] % 2) == 0 && (array[i][j] != 0)){
summNegativ += array[i][j];
cout<<" Element [ "<<i<<" ] [ "<<j<<" ] = "<<array[i][j]<<endl;
}
}

cout<<endl<<"-----===Vivod Resultata Rashota chotnih chisel===-----"<<endl;

cout<<endl<<" Summa Negativnih chisel ravna = "<<summNegativ<<endl;

cin>>z;

return 0;
}
//---------------------------------------------------------------------------

Масив 2х4х3 заполнить рандомными числами, в диапозоне от 0 до 5. Сосчитать сумму элементов, которые находятся во втором ряду.
Но решил только эту часть. Масив 2х4х3 заполнить рандомными числами, в диапозоне от 0 до 5. вторую не могу, поскольку не могу понять, где второй ряд у трехмерного массива?!

Думаю, это можно перевести на нужный язык?!

//4) Масив 2х4х3 заполнить рандомными числами, в диапозоне от 0 до 5. Сосчитать сумму элементов, которые находятся во втором ряду.
// Но решил только эту часть. Масив 2х4х3 заполнить рандомными числами, в диапозоне от 0 до 5. вторую не могу, поскольку не могу понять,
// где второй ряд у трехмерного массива.
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;

#include <cstdlib>

int main()
{
int const a = 2;
int const b = 4;
int const c = 3;
int array[a][b][c] = {0};
int summNegativ = 0,
z;

for(int i = 0; i < a; i++){
for(int j = 0; j < b; j++){
for(int r = 0; r < c; r++){
array[i][j][r] = rand() % 5;
cout<<" Element [ "<<i<<" ] [ "<<j<<" ] [ "<<r<<" ] = "<<array[i][j][r]<<endl;
}
}
}

cin>>z;

return 0;
}
//---------------------------------------------------------------------------

Drongo
16-06-2008, 23:33
Admiral, Вероятно что та которая длиннее, » в этом массиве, вернее размерность
5х8 »То:

1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8Диагональ, в любом случае одинаковая, либо от первого ряда и 1 и вниз слева направо по рядам к 8 снижается. Либо от первого ряда и 8 и вниз справа налево по рядам к 1 снижается. Не могу толком объяснить, но я знаю, что вы поймёте.

Admiral
16-06-2008, 23:41
Drongo, это частный случай. А я указал, что если фигура не равномерна. Просто на вопрос какую диагональ считать главной я ассоциативно вспомнил геометрию, а не задание сабжа.

Drongo
16-06-2008, 23:53
Admiral, это частный случай. А я указал, что если фигура »Спасибо, за разъяснения, а я наоборот, задание вспомнил. :)

azbest
17-06-2008, 00:16
Здесь скорее всего речь идёт о подсчёте чисел или определении матрицы. У них там какая то диагональ главная :sorry:
А 2 ряд в трёхмерном массиве - это по простому :yes: сначала плоскость 2х4, а потом ещё 2 плоскости 2х4 получаем 2х4х3 и считаем вторую - среднюю плоскость 2х4. (если числа у нас негативные и позитивные - то моё рассуждение наверное тоже правильное) :)

Admiral
17-06-2008, 00:21
azbest, конечно, это правильно рассуждение, если речь о плоскостях, которые тоже могут принимать два варианта. В задачи сказан второй ряд, у которого ещё больше вариантов.

Drongo
17-06-2008, 12:27
azbest, У них там какая то диагональ главная »Как я понял, главная диагональ (http://ru.wikipedia.org/wiki/%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C) - считается от верхнего левого угла к нижнему правому углу. Только я думал, что искомые числа находятся под диагональю, а по ссылке, я понял, что и под и над ней. Но я понял, если матрица равномерная, например: 5х5 или 8х8, а тут ведь, 5х8. по любому диагональ не пройдёт от одного угла к другому, хотя может я не знаю чего-то?! Потом, у главной диагонали индексы одинаковые.
a[0][0]
a[1][1]
a[2][2]
a[3][3] Но ведь опять-таки, это равномерные матрицы\массивы. А где она в неравномерном?!

Admiral, В задачи сказан второй ряд, у которого ещё больше вариантов. »Ещё больше? А я думал, 1-я диагональ строго по вертикали второй ряд, 2-я диагональ по горизонтали, и 3-я диагональ в глубину по плоскости. Тоесть три варианта...

Дигональ (http://festival.1september.ru/2006_2007/index.php?numb_artic=417384)

Admiral
17-06-2008, 13:37
Drongo речь уже про 4е задание.

Drongo
17-06-2008, 15:28
Admiral, Drongo речь уже про 4е задание. » Так я понял, просто вы сказали В задачи сказан второй ряд, у которого ещё больше вариантов » а я не могу понять, сколько больше? Я вижу только три. О чём и написал. Ещё больше? А я думал, 1-я диагональ строго по вертикали второй ряд, 2-я диагональ по горизонтали, и 3-я диагональ в глубину по плоскости. Тоесть три варианта... »

Admiral
17-06-2008, 16:18
Drongo, ну так и правильно: три больше чем два.
если речь о плоскостях, которые тоже могут принимать два варианта. В задачи сказан второй ряд, у которого ещё больше вариантов. »

verdix
18-06-2008, 17:59
Вообшем вот, есть программа. В которой есть заполеный масив (рандом)

Program Z4;
uses Crt;
const X=2;
Y=4;
Z=3;
Q=2;
var M1:array[1..X,1..Y,1..Z,1..Q] of integer;
i,k,j,l,S:integer;
begin
ClrScr;
Randomize;
S:=0;
For i:=1 to X do
For k:=1 to Y do
For j:=1 to Z do
For l:=1 to Q do
begin
M1[i,k,j,l]:=Random(5)+1;
S:=S+M1[i,k,j,l];
Writeln(M1[i,k,j,l]);

end;

Writeln(S);
Readln;



end.

Как сделать так, чтобы он вывел этот масив в приблезительно таком виде


1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8

Admiral
18-06-2008, 18:13
Хм... Программа заполняет массив 4го порядка 2х4х3х2, это видно по эти строчкам кода
const X=2;
Y=4;
Z=3;
Q=2;
...
For i:=1 to X do
For k:=1 to Y do
For j:=1 to Z do
For l:=1 to Q do
Так что для требуемого вывода массива 2го порядка 5x8 программу не то что стоит переделать но и упростить. :wink:
Program Z4;
uses Crt;
const X=5;
Y=8;
var M1:array[1..X,1..Y] of integer;
i,j:integer;
begin
ClrScr;
Randomize;
For i:=1 to X do
Begin
For j:=1 to Y do
begin
M1[i,j]:=Random(5)+1;
Writeln(M1[i,j]);Write(M1[i,j],' ');
end;
Writeln;
end;
Readln;
end.
P.S.
Если упрощение не нужно, то к исходной проге требуется добавить выделенные строки и исправить перечёркнутую строчку кода.




© OSzone.net 2001-2012