Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите решить задачу(Pascal) (http://forum.oszone.net/showthread.php?t=109316)

verdix 16-06-2008 21:43 827579

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

Admiral 16-06-2008 21:55 827589

Зачем же тему уже создали Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC)?
Как раз по содержанию первого поста может подойти.
Понимаю, индивидуализм. А собственно в чём то помощь требуется? Есть какие-то загвостки в исходнике или отсутствие полного понимания вопроса?
Для первого или второго случая подойдёт в разной степени этот линк
Лабы Pascal

verdix 16-06-2008 22:00 827597

Admiral,
Цитата:

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

Admiral 16-06-2008 22:13 827608

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

Drongo 16-06-2008 22:44 827634

Цитата:

Цитата verdix
негативных чисел »

несколько оффтоповый вопрос, а как понимать, слово - негативные, это значит, отрицательные?!
Цитата:

Цитата verdix
позитивными числами »

значит позитивные - это положительные.


Цитата:

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

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

verdix 16-06-2008 22:51 827640

Drongo,
Цитата:

несколько оффтоповый вопрос, а как понимать, слово - негативные, это значит, отрицательные?!
Цитата:

значит позитивные - это положительные.
ДА, именно это я и имел ввиду. Сорри, с другого языка переводил, допустил ошибку.

Цитата:

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

Admiral 16-06-2008 22:52 827641

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

В 4м задании
Цитата:

Цитата verdix
Масив 2х4х3 ... Сосчитать сумму элементов, которые находятся во втором ряду. »

трёх мерный массив. О ком втором ряде идёт речь? Там есть варианты.

Drongo 16-06-2008 23:00 827649

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 827657

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 827668

Admiral,
Цитата:

Цитата Admiral
Вероятно что та которая длиннее, »

в этом массиве, вернее размерность
Цитата:

Цитата verdix
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 827675

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

Drongo 16-06-2008 23:53 827683

Admiral,
Цитата:

Цитата Admiral
это частный случай. А я указал, что если фигура »

Спасибо, за разъяснения, а я наоборот, задание вспомнил. :)

azbest 17-06-2008 00:16 827703

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

Admiral 17-06-2008 00:21 827706

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

Drongo 17-06-2008 12:27 828027

azbest,
Цитата:

Цитата azbest
У них там какая то диагональ главная »

Как я понял, главная диагональ - считается от верхнего левого угла к нижнему правому углу. Только я думал, что искомые числа находятся под диагональю, а по ссылке, я понял, что и под и над ней. Но я понял, если матрица равномерная, например: 5х5 или 8х8, а тут ведь, 5х8. по любому диагональ не пройдёт от одного угла к другому, хотя может я не знаю чего-то?! Потом, у главной диагонали индексы одинаковые.
Код:

a[0][0]
a[1][1]
a[2][2]
a[3][3]

Но ведь опять-таки, это равномерные матрицы\массивы. А где она в неравномерном?!

Admiral,
Цитата:

Цитата Admiral
В задачи сказан второй ряд, у которого ещё больше вариантов. »

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

Дигональ

Admiral 17-06-2008 13:37 828128

Drongo речь уже про 4е задание.

Drongo 17-06-2008 15:28 828268

Admiral,
Цитата:

Цитата Admiral
Drongo речь уже про 4е задание. »

Так я понял, просто вы сказали
Цитата:

Цитата Admiral
В задачи сказан второй ряд, у которого ещё больше вариантов »

а я не могу понять, сколько больше? Я вижу только три. О чём и написал.
Цитата:

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


Admiral 17-06-2008 16:18 828320

Drongo, ну так и правильно: три больше чем два.
Цитата:

Цитата Admiral
если речь о плоскостях, которые тоже могут принимать два варианта. В задачи сказан второй ряд, у которого ещё больше вариантов. »


verdix 18-06-2008 17:59 829386

Вообшем вот, есть программа. В которой есть заполеный масив (рандом)

Код:

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 829401

Хм... Программа заполняет массив 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.
Если упрощение не нужно, то к исходной проге требуется добавить выделенные строки и исправить перечёркнутую строчку кода.

Barrel 17-03-2009 22:15 1066686

я ващев pascal не врубаюсь :( :o

contrafuckt 28-04-2009 12:07 1106205

mozgabyte, держи :)

№1
читать дальше »
Код:

const
 infile='input.txt';
 outfile='output.txt';
var
 s,s1:string;
 i:integer;
 f,f1:text;
begin
 assign(f,infile);
 reset(f);
 assign(f1,outfile);
 rewrite(f1);
 while not eof(f) do
  begin
  s1:='';
  readln(f,s);
  for i:=1 to length(s) do
    if s[i]='A' then
    if i>1 then s1:=s1+s[i-1];
  writeln(f1,s1);
  end;
 close(f);
 close(f1);
end.



№2
читать дальше »
Код:

const
 infile='input.txt';
 outfile='output.txt';
 N=10; {число N}
var
 base:array[1..N]of integer;
 f,f1:text;
 mx,i:integer;
begin
 assign(f,infile); 
 reset(f); 
 assign(f1,outfile); 
 rewrite(f1);
 while not eof(f) do
  begin
  for i:=1 to n do
    read(f,base[i]);
  mx:=base[1];
  for i:=2 to n do
    if base[i]>mx then mx:=base[i];
  writeln(f1,mx);
  end;
 close(f);
 close(f1);
end.



Время: 13:51.

Время: 13:51.
© OSzone.net 2001-