Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2012, 17:16   #1
bujlka
Пользователь
 
Регистрация: 01.11.2012
Сообщений: 17
Сообщение Насчет Массивов

Всем привет , немного не получается доделать задания мб кто поможет
Само задание :
В одномерном массиве, состоящем из п вещественных элементов, вычислить:
1) количество элементов массива, больших С;
2) произведение элементов массива, расположенных после максимального по модулю элемента.
Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом — все положительные (элементы, равные нулю, считать положительными).
(1 сделал , массив преобразовал , не могу только произведение)
Вот собственно сам код
Код:
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <algorithm>
using namespace std;
 
int main ()
{
	setlocale(LC_ALL, "Russian" );
    srand(time(NULL)); 
    int i;
    int n;
    double* a;
    
    cout << "Введите разменность массива n = ";
    cin >> n;
 
    a = new double [n];
    cout << "Массив a\n";
    for (i=0; i < n; ++i)
    {
        a[i] = (double)(rand()%20001)/100-100;
        cout << a[i] << " ";
    }
 
    int c;
    cout << "\nВведите c = ";
    cin >> c;
 
    int count=0;
 
    for (i=0; i < n; ++i)
    {
        if (a[i] > c)
        {
            ++count;
        }
    }
 
    cout << "Эллементов массива >C = " << count ;
    
    double max = abs(a[0]);
    int x = 0;
 
    for (i=0; i < n; ++i)
    {
        if (max < abs(a[i]))
        {
            max = abs(a[i]);
            x = i;
        }
    }
 
    double p = 1;
    for (i=x+1; i < n; ++i)
    {
        p*=a[i];
    }
 
    cout << "\np = " << p  <<"\n";
 
    int m;
    do
        {
        m=0;
            for (i = 0; i < n-1; ++i)
            {
                if (a[i] > a[i+1])
                {
                    swap(a[i], a[i+1]);
                    ++m;
                }
            }
        }
    while (m!=0);
 
    for (i=0; i < n; ++i)
    {
        cout << a[i] << " ";
    }
    cout << "\n";
    
    delete[] a;
 system("pause");
    return 0;
}
Нужно дописать : ) надеюсь на вас дорогие мои :Р

Последний раз редактировалось Stilet; 07.11.2012 в 19:21.
bujlka вне форума Ответить с цитированием
Старый 07.11.2012, 17:21   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

И на каких входных данных произведение считается неправильно?

P.S. Используйте тег форума CODE для кода, пожалуйста.
Abstraction вне форума Ответить с цитированием
Старый 07.11.2012, 18:30   #3
bujlka
Пользователь
 
Регистрация: 01.11.2012
Сообщений: 17
По умолчанию

на счет кода извините думал он автоматически помещается рамки ))
я не могу понять как написать то что мне нужно найти это произведение сижу книгу читаю а вижу фигу и не понять что делать )
bujlka вне форума Ответить с цитированием
Старый 07.11.2012, 18:35   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ваш код же всё считает; должен, по крайней мере.
Код:
//Заводим "максимум", равный первому элементу
double max = abs(a[0]);
int x = 0;

//Обходим массив
for (i=0; i < n; ++i)
{
  //Если текущий элемент лучше подходит на роль максимума
  if (max < abs(a[i]))
  {
    //Меняем запомненное
    max = abs(a[i]);
    x = i;
  }
}
//Всё, x - индекс максимального по модулю элемента

//Объявляем переменную-аккумулятор
double p = 1;
//Обходим остаток массива за найденным максимумом
for (i=x+1; i < n; ++i)
{
  //"собираем" в аккумулятор произведение
  p*=a[i];
}
//В p - произведение элементов за максимальным по модулю;
//либо 1, если максимальный по модулю элемент был последним
Abstraction вне форума Ответить с цитированием
Старый 07.11.2012, 23:49   #5
bujlka
Пользователь
 
Регистрация: 01.11.2012
Сообщений: 17
По умолчанию

выдает ошибку , где именно не пишет , попробуй скомпилировать весь код получится у тебя или нет , если получится кинь полный код :Р я прям обалдю от радости
bujlka вне форума Ответить с цитированием
Старый 08.11.2012, 00:02   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2bujlka
Цитата:
где именно не пишет
ложь и провокация
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 08.11.2012, 11:09   #7
bujlka
Пользователь
 
Регистрация: 01.11.2012
Сообщений: 17
По умолчанию

всё исправил а где была ошибка не писал оказывается я 1 строку написал 2 раза (через 2 строки) ) всё заработало
bujlka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить обработку массивов. предусмотреть описание массивов как динамических Vika_0_0 Паскаль, Turbo Pascal, PascalABC.NET 8 03.06.2012 10:12
Насчет языка D MyLastHit Свободное общение 19 24.04.2011 07:32
насчет webbrowser grafgrial Общие вопросы Delphi 1 18.05.2010 16:27
насчет строк и букв cr1mson Общие вопросы C/C++ 5 14.01.2009 16:54
Насчет формы!!! KlErik Общие вопросы Delphi 4 26.05.2007 10:59