Нужна помощь с сортировкой массива [C++]

C++, Assembler, PHP и т.д. и т.п...

Модератор: Tiger

Аватара пользователя
GOBLIN
Сообщения: 391
Зарегистрирован: Вт 30 ноя, 2004 11:49
Откуда: Ул Свободы Д 38
Контактная информация:

Нужна помощь с сортировкой массива [C++]

Сообщение GOBLIN » Пт 09 ноя, 2007 0:40

Всем привет!)

Ребят помогите решить задачку по С++, чесно говоря ломаю 3й день голову и ни как, решил попросить о помощи вас )
Вобщем есть программа, в ней 2 функции, в 1 функции, мы вводим элементы массива, и передаём заполненный массив во 2ю функцию.
Во 2й функции, мы сортируем массив, тоесть находим сумму отрицательных эллементов массива, и произведение положительных. (то есть она должна перемножить положительные, и найти сумму отрицательных.)
Вот проблема, в том что когда мы передаём массив из первой функции, во 2ю то все весь массив заполняется первой строкой.
Пример:
вводим
1
5
-2
Передаём во вторую функцию, получаем.
1
1
1

Почему это происходит я и немогу понять(
Ребят помогите пожалуйста, в субботу сдавать экзамен, а я сам неуспею(
Помогите найти ошибку))

Заранее ОГРОМНОЕ СПАСИБО!)


Код: Выделить всё

#include <iostream.h>
#include <windows.h>

char bufRus[256];
char *Rus (const char* text)

{
 CharToOem(text,bufRus);
 return bufRus;
}

int n;

double *func () // Объявляем функцию, и переменные в ней
{

    cout <<Rus ("Введите колличество эллементов массива: ");
    cin >>n;

    double *ptr = new double[n];

 for (int i=0; i < n; i++)
 {
    cout << "array["<<i <<"] :"; // Пополняем массив!)
    cin >>ptr[i];
 }

return ptr;
}

int main ()
{

 double otr = 0,pol = 0;

 double *numb = func (); // Передаём массив в функцию!

 system("cls");

 for (int f=0; f<n; f++)
    cout <<"array[" <<f <<"] = " <<numb[f] <<endl;


 for (int r=0; r<n; r++)
 {
     cout <<">>" <<*numb <<endl;


 }


 for (int d=0; d <n; d++)
 {
    if (numb[d] > 0)
    pol = numb[d] * numb[d]; //Сортируем массив

    if (numb[d] < 0)
    otr = numb[d] + numb[d];
 
 }

 cout <<Rus ("Произведение положительных элементов = "); cout <<pol <<endl;
 cout <<Rus ("Сумма отрицательных элементов = "); cout <<otr <<endl;

 delete []numb;
 
 
 return 0;
}

http://goblin.tushino.com/ - Сайт для программистов :lol:

Аватара пользователя
The Lord of the Rings
Модератор
Сообщения: 342
Зарегистрирован: Вс 10 апр, 2005 14:30
Контактная информация:

Сообщение The Lord of the Rings » Пт 09 ноя, 2007 13:39

Всё дело в double. Исправь на int, должно помочь.
Пришёл, увидел, победил.

Гай Юлий Цезарь.


Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость