Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 29.01.2013
Сообщений: 90
1

Из элементов введенного массива сформировать новый массив, содержащий положительные числа

11.01.2015, 15:36. Показов 878. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу ввода массива целых чисел из текстового файла. Файл содержит не
более 100 записей (строк). В одной строке размещено пять значений заданных чисел,
разделённых пробелом. Из элементов введенного массива сформировать новый массив,
содержащий положительные числа. Найти номер максимального элемента.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2015, 15:36
Ответы с готовыми решениями:

Дан массив целых чисел, содержащий 10 элементов. Составить новый массив, записать в него сначала все положительные элементы исходного массива
, потом все отрицательные элементы, потом нули... Да прибудет с вами сила...

Сформировать массив содержащий 15 случайных элементов с помощью датчика чисел, получить новый массив
Сформировать массив содержащий 15 случайных элементов с помощью датчика чисел, получить новый...

Заданы два динамических массива. Сформировать новый массив, содержащий элементы, не входящие в оба массива
Не могу сделать Заданы два динамических массива. Сформировать новый массив, содержащий элементы,...

Сформировать новый массив, содержащий элементы, не входящие в оба массива
Заданны два массива. Сформировать новый массив, содержащий элементы, не входящие в оба массива....

9
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
11.01.2015, 16:00 2
новый массив одномерный?
0
1 / 1 / 0
Регистрация: 29.01.2013
Сообщений: 90
11.01.2015, 16:36  [ТС] 3
Цитата Сообщение от JokeR.BY Посмотреть сообщение
новый массив одномерный?
видимо да )
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
11.01.2015, 17:12 4
Tarick, это ваше задание, что значит "видимо"?
0
1 / 1 / 0
Регистрация: 29.01.2013
Сообщений: 90
11.01.2015, 17:35  [ТС] 5
Цитата Сообщение от JokeR.BY Посмотреть сообщение
Tarick, это ваше задание, что значит "видимо"?
Одномерный ...решите, пожалуйста )
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
11.01.2015, 18:53 6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const
    m = 5;
 
var
    ar : Array[1..100, 1..m] Of Integer;
    ar2 : Array[1..500] Of Integer;
    arSize, j : Byte;
    ar2Size, i, maxID : Word;
    f : Text;
 
begin
    Assign(f, 'f.txt'); Reset(f);
    arSize := 0;
    while ((Not(EoF(f))) And (arSize <= 100)) do
    begin
        Inc(arSize);
        for j := 1 to m do
        begin
            Read(f, ar[arSize, j]);
            Write(ar[arSize, j], #9);
        end;
        WriteLn;
    end;
    Close(f);
    WriteLn; WriteLn; ar2Size := 0;
    for i := 1 to arSize do
        for j := 1 to m do
            if (ar[i, j] > 0)
            then
            begin
                Inc(ar2Size);
                ar2[ar2Size] := ar[i, j];
                Write(ar2[ar2Size], ' ');
            end;
    WriteLn;
    if (ar2Size = 0)
    then
        WriteLn('Polozhitelnyh elementov net.')
    else
    begin
        maxID := 1;
        for i := 2 to ar2Size do
            if (ar2[i] > ar2[maxID])
            then
                maxID := i;
        Write('maxID: ');
        for i := 1 to ar2Size do
            if (ar2[maxID] = ar2[i])
            then
                Write(i, ' ');
    end;
end.
тоже самое, но с динамическими массивами. если компилятор скушает.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const
    m = 5;
 
var
    ar : Array Of Array[1..m] Of Integer;
    ar2 : Array Of Integer;
    j : 1..m;
    i, maxID : Word;
    f : Text;
 
begin
    Assign(f, 'f.txt'); Reset(f);
    SetLength(ar, 0);
    while ((Not(EoF(f))) And (Length(ar) <= 100)) do
    begin
        SetLength(ar, Length(ar) + 1);
        for j := 1 to m do
        begin
            Read(f, ar[Length(ar) - 1, j]);
            Write(ar[Length(ar) - 1, j], #9);
        end;
        WriteLn;
    end;
    Close(f);
    WriteLn; WriteLn; SetLength(ar2, 0);
    for i := 0 to Length(ar) - 1 do
        for j := 1 to m do
            if (ar[i, j] > 0)
            then
            begin
                SetLength(ar2, Length(ar2) + 1);
                ar2[Length(ar2) - 1] := ar[i, j];
                Write(ar2[Length(ar2) - 1], ' ');
            end;
    WriteLn;
    if (Length(ar2) = 0)
    then
        WriteLn('Polozhitelnyh elementov net.')
    else
    begin
        maxID := 0;
        for i := 1 to Length(ar2) - 1 do
            if (ar2[i] > ar2[maxID])
            then
                maxID := i;
        Write('maxID: ');
        for i := 0 to Length(ar2) - 1 do
            if (ar2[maxID] = ar2[i])
            then
                Write(i, ' ');
    end;
end.
1
1 / 1 / 0
Регистрация: 29.01.2013
Сообщений: 90
11.01.2015, 19:00  [ТС] 7
спасибо огромное ))))
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
12.01.2015, 11:09 8
JokeR.BY,
Разрешите позанудствовать?

Ошибки и недочёты есть. Например,
Pascal
14
15
16
    while ((Not(EoF(f))) And (arSize <= 100)) do
    begin
        Inc(arSize);
явно должно было быть
Pascal
14
15
16
    while ((Not(EoF(f))) And (arSize < 100)) do
    begin
        Inc(arSize);
Иначе возможна попытка записи в 101 элемент.

По поводу динамики, нерационально на каждом шаге цикла увеличивать массив на 1 строку. Раз уж читаете не более 100 строк (с учетом исправленной выше ошибки), сделайте SetLength(ar, 100) в начале, посчитайте по ходу чтения количество, SetLength(ar, arSize) в конце. Аналогично для ar2.

Добавлено через 24 минуты
И попытка "утрамбовать" задачку (имеется в виду номер максимального элемента в массиве C, по крайней мере из исходное задание прочитал именно так):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const
  nmax=100; m=5;
var
  a: array [1..nmax,1..m] of Integer;
  c: array [1..nmax*m] of Integer;
  na, nc, j, jm: Integer;
begin
  Assign(input,'input.txt'); Reset(input);
  WriteLn('A=');
  jm:=1; {na:=0; nc:=0;}
  while not SeekEOF and (na<100) do begin
    Inc(na);
    for j:=1 to m do begin
      Read(a[na,j]); Write(a[na,j]:8);
      if a[na,j]>0 then begin
        Inc(nc); c[nc]:=a[na,j];
        if c[nc]>c[jm] then jm:=nc;
      end;
    end;
    ReadLn; WriteLn;
  end;
  WriteLn('C=');
  for j:=1 to nc do Write(c[j]:8); WriteLn;
  if nc>0 then WriteLn('Индекс Cmax = ',jm);
end.
Добавлено через 2 минуты
Если вывод исходного массива не нужен, убрать Write/WriteLn из строк 9, 14, 20.

Добавлено через 5 минут
Если же нужен порядковый номер максимального в A, то
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const
  nmax=100; m=5;
var
  a: array [1..nmax,1..m] of Integer;
  c: array [1..nmax*m] of Integer;
  na, nc, j, im, jm: Integer;
begin
  Assign(input,'input.txt'); Reset(input);
  WriteLn('A=');
  im:=1; jm:=1; {na:=0; nc:=0;}
  while not SeekEOF and (na<100) do begin
    Inc(na);
    for j:=1 to m do begin
      Read(a[na,j]); Write(a[na,j]:8);
      if a[na,j]>0 then begin
        Inc(nc); c[nc]:=a[na,j];
      end;
      if a[na,j]>a[im,jm] then begin
        im:=na; jm:=j;
      end;
    end;
    ReadLn; WriteLn;
  end;
  WriteLn('C=');
  for j:=1 to nc do Write(c[j]:8); WriteLn;
  if nc>0 then WriteLn('Номер Amax = ',(im-1)*m+jm);
end.
0
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
12.01.2015, 11:43 9
bormant, та да. упустил момент с проверкой количества. тогда и в случае с динамическим должно быть (arSize < 99).

по поводу динамики: смысл тогда делать динамический массив, если мы с ходу делаем тоже самое, что и в первом варианте?) вообще, динамикой поначалу я хотел сделать создание массива с, который был бы двумерным, но с разной длиной куска [1..m], то бишь массив, считанный из файла, но без отрицательных и нуля.

Не по теме:

а потом Остапа понесло в другую сторону.

0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
12.01.2015, 12:15 10
Цитата Сообщение от JokeR.BY Посмотреть сообщение
по поводу динамики: смысл тогда делать динамический массив
Смысл может быть, например, такой:
Pascal
1
2
3
4
5
6
7
8
9
10
11
var
  a: array of Integer;
  na: Integer;
begin
  na:=0; SetLength(a,100);
  while not EOF do begin
    if na>=Length(a) then
      SetLength(a,Length(a)+Length(a) div 2);
    Read(a[na]); Inc(na);
  end;
...
0
12.01.2015, 12:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2015, 12:15
Помогаю со студенческими работами здесь

Сформировать новый массив В из элементов массива А, больших 7
Если в задаче требуется сформировать новый массив,то в программе необходимо вывести его и...

Сформировать новый массив В из элементов массива А, больших 7
Задание 2.(желательно с процедурами) Если в задаче требуется сформировать новый массив,то в...

Сформировать новый массив В, состоящий из положительных элементов массива А
Задача простая, но в силу своей неопытности решить её не получается. HELP! Массив А вводится с...

Сформировать новый массив B ,состоящий из нечетных элементов массива
Дан массив A из N целых чисел.Сформировать новый массив B ,состоящий из нечетных элементов массива...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru