0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 16
1

В массиве найти второй по порядку отрицательный и предпоследний положительный элементы и поменять их местами

07.12.2012, 14:24. Показов 889. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В массиве найти второй по порядку отрицательный и предпоследний положительный элементы и поменять их местами. Предусмотреть случай, когда таких элементов в векторе нет.
Не могу понять что означают переменные k, t, j и p.
Вот код программы:

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
Var V:array[1..100] of integer;
    n,vmin,vmax,i,j,p,k,t,buf:integer;
Begin
    write('Введите n: ');readln(n);
    write('Введите vmin: ');readln(vmin);
    write('Введите vmax: ');readln(vmax);
    k:=0;t:=0;
    writeln('Исходный');
    For i:=1 to n do
    Begin
      V[i]:=random(31)-15;
      write(V[i]:4);
      if (V[i]<0)and(t=0)and(k=1) then t:=i;//второй отрицательный
      if (V[i]<0) then k:=1;
    End;
    j:=0;p:=0;
    For i:=n downto 1 do
    Begin
      if (V[i]>0)and(p=0)and(j=1) then p:=i;//предпоследний положительный
      if (V[i]>0) then j:=1;
    End;
    writeln;
    if (t>0)and(p>0) then
    Begin
      writeln('Второй отрицательный = ',V[t],' он находится V[',t,']');
      writeln('Предпоследний положительный = ',V[p],' он находится V[',p,']');
      buf:=V[t];
      V[t]:=V[p];
      V[p]:=buf;
      writeln('Преобразованный');
      For i:=1 to n do
       write(V[i]:4);
    End
    else writeln('Нету второго отрицательного или предпоследнего положительного');
    readln;
End.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2012, 14:24
Ответы с готовыми решениями:

Одномерный массив. Найти второй по порядку отрицательный и предпоследний положительный элементы и поменять их местами.
Помогите пожалуйста с решением данной задачи. В целочисленном векторе vector(n) найти второй по...

Массив: найти второй по порядку отрицательный и предпоследний положительный элементы и поменять их местами
Доброго времени суток программисты, помогите пожалуйста перевести с Pascal на Си данный код. Вот...

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

В одномерном массиве поменять местами 1й положительный и последний отрицательный элементы
В одномерном массиве поменять местами 1й положительный и последний отрицательный элементы....

1
314 / 273 / 272
Регистрация: 25.09.2011
Сообщений: 477
07.12.2012, 15:51 2
попробуем более понятную версию
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
Var
  V:array[1..100] of integer;
  n,votr,vpol,i,k,buf:integer;  //убрал непонятные переменные
Begin
  write('Введите n: ');readln(n);  
  k:=0; vpol:=0; votr:=0;    // количество найденных(k) и индексы найденных положит(vpol) и отриц(vort) равны 0
  writeln('Исходный');
  For i:=1 to n do Begin
    V[i]:=random(31)-15;
    write(V[i]:4);  // отображаем элементы массива
    if (V[i]<0) then inc(k); // если нашелся отрицательный - увеличиваем счетчик отрицательных
    if (V[i]<0)and(k=2) then votr:=i; // если отрицательный и он уже второй, сохраняем его в индексе
  End;
  k:=0;
  For i:=n downto 1 do Begin  // так же и для положительных , но считаем от последнего к первому
    if (V[i]>0) then inc(k);
    if (V[i]>0)and(k=2) then vpol:=i;  // нашелся 2 сзади положительный - сохраняем его индекс
  End;
  writeln;
  if (vpol>0)and(votr>0) then Begin // если индесы не нулевые, можно менять найденные через буффер (buf)
    writeln('Второй отрицательный = ',V[votr],' он находится на ',votr,' месте');
    writeln('Предпоследний положительный = ',V[vpol],' он находится на ',vpol,' месте');
    buf:=V[votr]; V[votr]:=V[vpol]; V[vpol]:=buf;
    writeln('Преобразованный');
    For i:=1 to n do write(V[i]:4);
  End else
    writeln('Нету второго отрицательного или предпоследнего положительного');
  readln;
End.
0
07.12.2012, 15:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2012, 15:51
Помогаю со студенческими работами здесь

В заданном массиве поменять местами элементы: первый и последний, второй и предпоследний и т.д
Дан массив А размером 2N. Поменять местами первый и последний, второй и предпоследний, третий и...

Поменять местами первый положительный и последний отрицательный элементы в одномерном массиве
Дан массив целых чисел (n=10), заполненный случайным образом числами из промежутка поменять...

Найти второй положительный и предпоследний отрицательный элемент массива
Всем доброго вечера! Собственно помогите доделать код :) Не могу сделать так чтобы получилось: Не...

Поменять местами первый положительный и последний отрицательный элементы генераторам случайных чисел в одномерном массиве
Помогите составить программу, которая могла менять местами последний максимальный элемент с...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru