Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Массивы

Ответить
Настройки темы
C/C++ - [решено] Массивы

Новый участник


Сообщения: 24
Благодарности: 1

Профиль | Отправить PM | Цитировать


У меня проблема вот с этой задачей. Ну совсем ничего не получается:
Задан вещественный массив размера 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

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


zena, а рассуждения где?
Что мешает использовать дополнительные массивы?
Вы же не можете на перед угадать, какая будет последовательность и как расставить отрицательные числа, чтобы они шли в порядке возрастания, значит и компьютер не может. Значит надо что-то сделать, чтобы ему помочь.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 21:03, 30-10-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 24
Благодарности: 1

Профиль | Отправить 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


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата zena:
int array[256];
int index[256],count=0;
int n,i,j,temp; »
ввели переменные.
Цитата zena:
printf("Input n:");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Input mas:");
scanf("%d",&array[i]);} »
Ввели массив array
Цитата zena:
for (i=0;i<n;i++){
if(array[i]>0){
index[count]=i;
count++;}
} »
получили массив индексов положительных величин index.
Цитата zena:
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;}
} »
Пузырьковая сортировка?
Неверно. Раз есть переменные i,j то и надо работать с переменными i, j, а не с j, j+1. От этого только путаница.
И вот это действие тоже не понятно:
temp=array[index[j]]=array[index[j+1]];
array[index[j+1]]=temp;
Масло масляное. Зачем повторное переприсвоение?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 09:47, 31-10-2011 | #4


Новый участник


Сообщения: 11
Благодарности: 1

Профиль | Отправить PM | Цитировать


Существует очень простое и наглядное решение этой задачи. если нет необходимости писать быстрый алгоритм:
1) используете цикл do{;
2) внутри него цикл for;
3) если число отрицательное ищите следующее отрицательное и если не выполняется условие возрастания меняете их местами, используя дополнительную переменную;
4) выполняете цикл do до тех пор, пока была хотя бы одна перестановка.

Отправлено: 11:45, 31-10-2011 | #5


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Eksworden, собственно это тот же "пузырек" только для отрицательных чисел.
А кстати говоря...

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 13:01, 31-10-2011 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Массивы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход