Автор Тема: Сортировка одномерного массива, работаю в VS 2010.  (Прочитано 4037 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kaylas

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
/*Дан массив из N элементов (вещественные числа). Вы-
числить: 1) сумму отрицательных элементов массива; 2) произ-
ведение элементов массива, расположенных между макси-
мальным и минимальным элементами. Упорядочить элементы
по возрастанию.*/

#include <iostream>
#include <Windows.h>
#include <conio.h>
using namespace std;

char* Rus(const char* str);
char str_rus[256];

int main ()
{
int Massiv[10],i,summa=0,max,min,j,b;
//ввод массива
for(i=0;i<=9;i++)
{
cout<<Rus("Введите ")<<i;
cout<<Rus(" элемент массива \n\a");
cin>>Massiv[i];
}
//сортировка массива методом "пузырька"
for (i=0;i<=9;i++)
{
for (j=0;j<=9;j++)
{
if (Massiv[j]>Massiv[j+1])
{b=Massiv[j]; Massiv[j]=Massiv[j+1]; Massiv[j+1]=b;}
}
}
max=Massiv[0];
min=Massiv[0];
//поиск минимума и максимума
for (i=0;i<=9;i++)
{
if (max<Massiv[i]) max=Massiv[i];
if (min>Massiv[i]) min=Massiv[i];
if (Massiv[i]<=summa) summa=Massiv[i]+summa;
}
cout<<Rus("Сумма отрицательных элементов массива равна ")<<summa<<endl;
return 0;
}
char* Rus(const char* str)
{ AnsiToOem(str, str_rus);
return str_rus;}

Работаю в VS 2010. При запуске программы вылетает ошибка после ввода значений массива что сумма минимальных значений равна -86248742 примерно такое число. Подскажите что я упустил.
« Последнее редактирование: 29 Августа 2010, 19:33:21 от Asix »

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
А что Вы хотите добиться этим:
if Massiv<=summa Смысл условия непонятен.  Точнее понятен, но сравнивать с суммой? Ведь в принципе задача получается такая:
сравнивать с нулем элемент и прибавлять в случае истинности сравнения  значение к сумме  
« Последнее редактирование: 29 Августа 2010, 19:33:27 от Asix »
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Kaylas

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
if (Massiv<=summa) summa=Massiv+summa; - это вот.

Я тут сравниваю элемент массива i с переменной summa а она равна 0, если элемент массива i меньше или равен переменной summa то переменной summa присваивается значение суммы элемента массива i  и самой переменной summa.
« Последнее редактирование: 29 Августа 2010, 19:33:37 от Asix »

Оффлайн Kaylas

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
ааааа догнал блин... спасибо. щас переделаем
« Последнее редактирование: 29 Августа 2010, 19:33:43 от Asix »

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
так больше ошибок не вижу пока
« Последнее редактирование: 29 Августа 2010, 19:33:51 от Asix »
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Kaylas

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Так блин не догнал

for (i=0;i<=9;i++)
   {
      if (max<Massiv) max=Massiv;
      if (min>Massiv) min=Massiv;
      if (Massiv<=min1) summa=Massiv+summa;
   }, где min1=0;
снова получается -85476483
« Последнее редактирование: 29 Августа 2010, 19:33:58 от Asix »

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Ну смотрите: либо я Вас неверно понял, либо Вы сами ошибочно написали:
сумма отрицательных элементов. Если все верно написано, то будет выглядеть так:
 if (Massiv<0) summa=Massiv+summa;
   }    
« Последнее редактирование: 29 Августа 2010, 19:34:10 от Asix »
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
И еще в коде "пузырька" у вас насколько я вижу во втором цикле используется только переменная j, а сравниваем мы во втором цикле элемент
Massiv[i] и Massiv[j ]. То есть во втором цикле мы берем элемент с индексом i и пробегаем все элементы i+1 до конца массива сравнивая значения элемента c индексом i и заменяя по необходимости один другим.
То есть:
for (i=0;i<=9;i++){
for (j=i+1;j<=9;j++){
if (massiv[i]<Massiv[j]){
temp=massiv[i];
massiv[i]=massiv[j];
massiv[j]=temp//где temp переменная для временного хранения одного из элементов
}
}
}
   
« Последнее редактирование: 29 Августа 2010, 19:34:19 от Asix »
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Kaylas

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Все разобрался теперь работает. Спасиб товарищи.
« Последнее редактирование: 29 Августа 2010, 19:34:26 от Asix »

 

Двумерный массив в С. Как меня организовать вывод массива в таком виде?

Автор bifshtex

Ответов: 2
Просмотров: 4540
Последний ответ 30 Марта 2010, 23:41:13
от bifshtex
помогите нарисовать блок-схемы для двумерного массива паскаль

Автор вилена

Ответов: 14
Просмотров: 8889
Последний ответ 09 Ноября 2011, 01:30:19
от вилена
Помогите расположить элемента массива в заданном порядке

Автор EkaterinaOsipova

Ответов: 2
Просмотров: 5337
Последний ответ 25 Апреля 2011, 11:16:22
от Selyd
Найти среднее арифметическое положительных элементов массива

Автор FineMary

Ответов: 5
Просмотров: 12290
Последний ответ 15 Декабря 2011, 14:44:13
от Selyd
С++, найти сумму и среднее арифметическое массива

Автор CAn4ec

Ответов: 0
Просмотров: 5396
Последний ответ 12 Декабря 2010, 14:37:07
от CAn4ec