|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.12.2014, 01:59 | #1 |
Пользователь
Регистрация: 17.11.2014
Сообщений: 35
|
Массивы С++
Ребят, помогите исправить ошибку, задание такое, в вещественном одномерном массиве, вычислить:
произведение элементов массива, расположенных между первым и вторым нулевыми элементами. Прога как бы работает, но если я добавляю условия, что будет только один ноль, или его вообще не будет, то выдает ошибку, я никак не могу въехать где она прячется. Вот такой код, Код:
Последний раз редактировалось Stilet; 13.12.2014 в 09:07. |
13.12.2014, 09:15 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Я бы делал примерно так:
Код:
I'm learning to live...
|
13.12.2014, 14:31 | #3 |
Пользователь
Регистрация: 17.11.2014
Сообщений: 35
|
Что то она у меня не компилируется.
|
13.12.2014, 19:46 | #4 |
Заблокирован
Регистрация: 12.11.2014
Сообщений: 120
|
галовастика подключи, увас странный компелятор уменя все работает.
Код:
|
14.12.2014, 01:26 | #5 |
Пользователь
Регистрация: 17.11.2014
Сообщений: 35
|
Не получается объединить ваш код с моим, все ошибки выкидывает. В моем случае считает правильно когда есть 2 нуля. Если только 1 или вообще нету - пишет ошибку.
Вот весь целый код, как его правильно объединить, что бы выводил на экран например, что есть 1 ноль, или вообще нету. #include <iostream> #include <time.h> #include <iomanip> using namespace std; long int main() { setlocale(LC_ALL, "RU"); int n, choice, max, c, i; double a, b, p, v; cout << "Задайте размер массива: "; cin >> n; cout << endl << "1. Ручной ввод" << endl << "2. Автоматический ввод" << endl; cout << endl << "Ваш выбор: "; cin >> choice; float *arr = new float[n]; cout << endl; if (choice == 2)// автоматический ввод массива { cout << "Введите диапазон значений массива [a;b]" << endl << endl; cout << "a: "; cin >> a; cout << "b: "; cin >> b; cout << endl; srand(time(NULL)); c = (b - a)*10.0 + 1;// задаем, что массив будет из вещественных чисел for (int i = 0; i < n; i++) { arr[i] = (rand() % c + a * 10) / 10.0;// для вещественного if (i % 10 == 0) { cout << endl; } cout << setw(7) << arr[i]; } } if (choice == 1)//ввод руками for (i = 0; i < n; i++) { cout << "Введи значение " << i + 1 << ": "; cin >> arr[i]; } { double max = arr[0];// первая ячейка массива for (i = 0; i < n; i++)//ищем номер макимального числа if (max < arr[i]) { max = arr[i]; } cout << endl << endl << "Номер(a) максимального = "; for (i = 0; i < n; i++)// ищем само число if (arr[i] == max) cout << i + 1 << ", "; cout << " Само число: " << max << endl; cout << endl; } for (i = 0; i < n; i++)// ищем первый ноль в массиве if (arr[i] == 0) { p = i; // если нашли первый, то тормозим программу break; } for (i = p + 1; i < n; i++) //ищем второй ноль в массиве if (arr[i] == 0) { v = i; //нашли, программу остановили break; } double sum = 1; for (i = p + 1; i < v; i++)//перебираем числа в массиве от 1 нуля до 2-го { sum = arr[i] * sum; } cout << endl << endl << sum << endl << "результат"; delete[] arr; cout << endl; return 0; } |
14.12.2014, 09:13 | #6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,964
|
Зачем такие сложности? Можно всё это написать более компактно:
Код:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Одномерные массивы, двумерные массивы, строки | Sand093 | C++ Builder | 11 | 20.05.2012 21:48 |
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры | nuriyat | Помощь студентам | 1 | 21.01.2012 16:16 |
Двумерные массивы(массивы указателей на массивы) | krytishka99 | Помощь студентам | 1 | 29.12.2011 19:51 |
Динамические массивы и массивы варианты | N@stya | Помощь студентам | 0 | 11.06.2010 21:09 |
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент | LyaLya | Помощь студентам | 15 | 20.12.2009 14:12 |