Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
34 / 26 / 0
Регистрация: 24.12.2010
Сообщений: 165
1

Найти первые равные элементы массива и заменить их на элемент с противоположным знаком

24.12.2010, 17:23. Показов 1517. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
условие: 1. Дан массив положительных чисел. Среди них есть равные. Найти первые равные элементы массива и заменить их на элемент с противоположным знаком.
мою решение:
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
 program array3;
 var a, b:array [1..100] of integer;
 i, j, t, p: integer;
 n:byte;
 begin
 
 writeln('n=');
 read(n);
 for i:=1 to n do
 read(a[i]);
 p:=1;
 repeat
  for i:=2 to n do
  if a[i]=a[p] then
  begin
 
  t:=i;
  a[t]:=-a[t];
  a[p]:=-a[p];
  end;
  if (i=n) then
  p:=p+1;
  until (p>=n) ;
  writeln;
  for i:=1 to n do
  writeln(a[i]);
  readln;
  end.
проблемма вот в чём, она наробает не совсем правильно
например вводим: n=5 и числа 1 2 3 2 3 получается 1 2 -3 2 -3 а должно выйти 1 -2 3 -2 3
с другими числа может правильно работать

где я ошибку допустил?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2010, 17:23
Ответы с готовыми решениями:

В заданной матрице заменить максимальный элемент каждой строки на такой же с противоположным знаком
Дан двумерный массив размера 5х6, заполненный случайным образом. Заменить максимальный элемент...

В массив B скопировать элементы массива А с противоположным знаком
Из массива А(10) состоящего из 40 вещественных знаков получить массив В, в который войдут все...

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

Является ли каждый следующий элемент последовательности удвоенным предыдущим с противоположным знаком?
Дана числовая последовательность, значения ее элементов могут быть не уникальны, и не превышают по...

6
Фрилансер
Эксперт С++
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
24.12.2010, 20:43 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
for i:=1 to n-1 do
for j:=i+1 to n do
if arr[i]=arr[j] then
begin
arr[i]:=-arr[i];
arr[j]:=-arr[j];
break;
end;
пробуйте такой вариант
1
34 / 26 / 0
Регистрация: 24.12.2010
Сообщений: 165
24.12.2010, 22:44  [ТС] 3
не помогло(
ps ведь эту часть проги должен был вписать вместо:??
Pascal
1
2
3
4
5
6
7
8
9
10
11
for i:=2 to n do
  if a[i]=a[p] then
  begin
  k:=k+1;
  t:=i;
  a[t]:=-a[t];
  a[p]:=-a[p];
  end;
  if (i=n) then
  p:=p+1;
  until (p>=n) ;
0
Фрилансер
Эксперт С++
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
24.12.2010, 22:46 4
тип того
0
34 / 26 / 0
Регистрация: 24.12.2010
Сообщений: 165
25.12.2010, 19:36  [ТС] 5
Цитата Сообщение от Dekio Посмотреть сообщение
тип того
увы, но не вышло(
может я что не правильно вставил в программу??
если не трудно, то покажите как должна выглядеть эта программа
0
Фрилансер
Эксперт С++
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
25.12.2010, 19:45 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

У меня всё работает.
Вот код:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program array3;
var
arr:array [1..100] of integer;
i, j : integer;
n:byte;
begin
writeln('n=');
read(n);
for i:=1 to n do
read(arr[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if arr[i]=arr[j] then
begin
arr[i]:=-arr[i];
arr[j]:=-arr[j];
break;
end;
for i:=1 to n do
writeln(arr[i]);
end.
1
34 / 26 / 0
Регистрация: 24.12.2010
Сообщений: 165
25.12.2010, 20:12  [ТС] 7
одна проблема, прога должна заменить только Первые равные элементы массива, а не все равные(( т.е. при вводе n=5 и чисел 1 2 3 2 3 должно вывести 1 -2 3 -2 3, а не 1 -2 -3 -2 -3
если знаете как это сделать, то пожалуйста подскажите
0
25.12.2010, 20:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2010, 20:12
Помогаю со студенческими работами здесь

C использованием функции найти максимальный элемент квадратной матрицы и заменить все элементы равные ему 0
С помощью функции найти максимальный элемент квадратной матрицы и заменить все элементы равные ему...

Получить все первые элементы массива, равные 1
Помогите пожалуйста с сортировкой массива. Я написал но ошибку не вижу. Должно получить ся первые...

Переставьте элементы, равные 0, 1, и 2 на первые места массива в порядке возрастания
В одномерном массиве есть элементы 0,1,2. Переставьте их на первые три места в порядке возрастания....

Заменить каждый элемент массива его знаком
Дан массив из n целых чисел.Заменить каждый элемент массива его знаком(положительный элемент-знаком...


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

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