|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Массивы |
|
C/C++ - [решено] Массивы
|
Новый участник Сообщения: 24 |
У меня проблема вот с этой задачей. Ну совсем ничего не получается:
Задан вещественный массив размера N. Отсортировать все отрицательные элементы в порядке возрастания. Остальные элементы оставить без изменений. Пример: -4 5 -7 9 0 -1 3 -5 2 -6 → -7 5 -6 9 0 -5 3 -4 2 -1 |
|
Отправлено: 19:14, 30-10-2011 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать zena, а рассуждения где?
![]() Что мешает использовать дополнительные массивы? Вы же не можете на перед угадать, какая будет последовательность и как расставить отрицательные числа, чтобы они шли в порядке возрастания, значит и компьютер не может. Значит надо что-то сделать, чтобы ему помочь. |
------- Отправлено: 21:03, 30-10-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Ну у меня получилось кое что, но выдаёт бред какойто:
#pragma argsused #include <stdio.h> int main(int argc, char* argv[]) { int array[256]; int index[256],count=0; int n,i,j,temp; printf("Input n:"); scanf("%d",&n); for(i=0;i<n;i++){ printf("Input mas:"); scanf("%d",&array[i]);} for (i=0;i<n;i++){ if(array[i]>0){ index[count]=i; count++;} } for (i=0;i<count;i++){ for(j=0;j<(count-1);j++){ if(array[index[j]]<array[index[j+1]]) temp=array[index[j]]=array[index[j+1]]; array[index[j+1]]=temp;} } printf("%d",array[i]); getch(); } |
Отправлено: 21:07, 30-10-2011 | #3 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата zena:
Цитата zena:
Цитата zena:
Цитата zena:
Неверно. Раз есть переменные i,j то и надо работать с переменными i, j, а не с j, j+1. От этого только путаница. И вот это действие тоже не понятно: temp=array[index[j]]=array[index[j+1]]; array[index[j+1]]=temp; Масло масляное. Зачем повторное переприсвоение? |
||||
------- Отправлено: 09:47, 31-10-2011 | #4 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Существует очень простое и наглядное решение этой задачи. если нет необходимости писать быстрый алгоритм:
1) используете цикл do{; 2) внутри него цикл for; 3) если число отрицательное ищите следующее отрицательное и если не выполняется условие возрастания меняете их местами, используя дополнительную переменную; 4) выполняете цикл do до тех пор, пока была хотя бы одна перестановка. |
|
Отправлено: 11:45, 31-10-2011 | #5 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Eksworden, собственно это тот же "пузырек" только для отрицательных чисел.
А кстати говоря... |
------- Отправлено: 13:01, 31-10-2011 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Массивы | SarGon4eg | Программирование и базы данных | 4 | 16-02-2011 18:39 | |
C/C++ - Массивы | SS3 | Программирование и базы данных | 3 | 29-04-2009 21:47 | |
Массивы в С++ | Guest | Программирование и базы данных | 2 | 27-09-2004 10:12 | |
Массивы в ПХП | PhoeniX BoG | Вебмастеру | 4 | 09-04-2004 19:12 | |
C++ и массивы ? | IG | Программирование и базы данных | 9 | 09-06-2003 09:33 |
|