С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 11

Cделать всевозможные проверки на ошибки при работе с одномерным массивом

20.04.2018, 07:53. Показов 1447. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Помогите пожалуйста с кодом.
Нужно сделать всевозможные проверки на ошибки.
В случае если нет нулевых элементов чтобы выдавало сообщение типа "Отрицательные элементы отсутствуют" и т.д. для остальных случаев.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <clocale>
#include <conio.h>
#include "time.h"
using namespace std;
int main()
{
setlocale(LC_ALL, "russian");
srand(time(0));
int *x, max, sum = 0, count, n, s_max, CurrentArray, i;
cout << "Введите размерность массива: ";
int r = scanf_s("%d", &n);
if (r != 1)
{
printf("Введено некорректное значение! \n");
_getch();
exit(0);
}
x = new int[n];
int *mas = new int[n];
for (int i = 0; i < n; i++)
{
x[i] = rand() % 100 - 60;
printf("\n x[%d]=%d ", i, x[i]);
}
//Вычислить количество элементов массива,не равных нулю. 
count = 0;
for (int i = 0; i<n; i++)
if (x[i] != 0)
count++;
cout << "\n Количество элементов не равных 0: " << count << endl;
 
//Вычислить произведение элементов массива,расположенных после максимального элемента. 
max = x[0];
count = 0;
for (int i = 0; i < n; i++)
if (x[i]>max)
{
max = x[i];
count = i;
}
long long int mult = 1;
for (int i = count + 1; i < n; i++)
mult *= x[i];
if (count == n - 1)
mult = 0;
cout << endl << " Произведение элементов массива после максимального элемента: " << mult << endl;
 
// Вычислить сумму элементов массива, расположенных между первым и последним отрицательным элементом. 
int firstMinus = 0, lastMinus = n - 1; // ставим маркер первого отрицательного элемента на первый элемент, а последнего отрицательного - на последний элемент
while (firstMinus < n && x[firstMinus] >= 0) // пока элементы не закончились, и пока мы не дошли до отрицательного элемента, увеличиваем маркер первого отрицательного
firstMinus++;
while (lastMinus >= 0 && x[lastMinus] >= 0) // аналогично с последним отрицательным, только тут мы идем с конца
lastMinus--;
sum = 0; // теперь посчитаем сумму. пока что она нулевая.
for (int i = firstMinus + 1; i < lastMinus; i++) // собственно, считаем сумму
sum += x[i];
cout << "Сумма элементов массива между первым и последним отрицательным элементом: " << sum << endl;
 
delete[]x; // освобождаем память
_getch();
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2018, 07:53
Ответы с готовыми решениями:

Ошибки при работе с динамическим массивом: неверный числовой формат при вводе
Выдаёт ошибку &quot;неверный числовой формат при вводе&quot; и &quot;попытка разыменовать нулевой указатель&quot;

Ошибки при работе со статическим массивом. C++ Windows Forms
Здравствуйте! Пишу в Windows Forms C++ тетрис. Он практически готов, но возникла следующая проблема: В приложении есть основной...

Cделать систему проверки по номеру ID
Всем доброго времени суток. Подскажите пожалуйста, как сделать систему проверки по номеру ID - примерно такую, как этом сайте. Для...

5
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.04.2018, 09:17
Acid1488, сбросьте оригинал условия задачи
0
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 11
20.04.2018, 20:52  [ТС]
Цитата Сообщение от Yetty Посмотреть сообщение
Acid1488, сбросьте оригинал условия задачи
1 вариант
Миниатюры
Cделать всевозможные проверки на ошибки при работе с одномерным массивом  
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.04.2018, 21:48
Лучший ответ Сообщение было отмечено Acid1488 как решение

Решение

так устроит?:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );
    srand((int)time(0));
    int n, k=0, m=0, count=0, imax=0, i1=0, i2=0, max=0, mult=1, sum=0;   
 
    do
    {
    cout <<"Enter n: "; cin >>n;
    if (n<1) cout <<"n>=1 !!! Повторите ввод..."<<endl;
    }
    while (n<1);
 
    int*a = new int[n];
 
    for (int i = 0; i < n; i++)
      {
      a[i]=rand()%21 -10;
      if (a[i] != 0) count++;
      if (i==0 || a[i]>max) {max = a[i]; imax=i;}
      if ((a[i]<0)&(k==0)) {i1=i; k++;}      
      if (a[i]<0) {i2=i; m++;}
      cout <<a[i]<<" ";     
      }    
 
    for (int i = imax+1; i<n; i++)  
    mult*=a[i]; 
    
    for (int i = i1+1; i<i2; i++)
    sum+=a[i];
 
    cout <<"\nКоличество элементов не равных нулю: "<<count;
    if(imax!=n-1)
    cout <<"\nПроизведение элементов после первого максимального: "<<mult;
    else cout <<"\nПосле максимального элементы отсутствуют";
    if (m==0) cout <<"\nОтрицательные элементы отсутствуют";
    else if (i2==i1) cout <<"\nОтрицательный элемент один";
    else  if (i2==i1+1) cout <<"\nМежду отрицательными элементами элементы отсутствуют";
    else cout <<"\nСумма элементов между первым и последним отрицательным: "<<sum<<"\n";
   
    delete[]a;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 11
20.04.2018, 22:25  [ТС]
Да, более чем, недостающее теперь смогу сам оформить.
Большое спасибо. Как я могу вас отблагодарить?
0
20.04.2018, 23:21

Не по теме:

Цитата Сообщение от Acid1488 Посмотреть сообщение
Как я могу вас отблагодарить?
Вы ведь в разделе для начинающих. Достаточно спасибо. А спасибо Вы уже сказали. :)
И если не секрет, что Вы ещё собираетесь привинтить, что имеете в виду под недостающим ?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2018, 23:21
Помогаю со студенческими работами здесь

Нарушение прав доступа при чтении при работе с большим массивом
Здравствуйте. Пытаюсь заполнить большой массив, вроде правильно объявил его, но на разных итерациях (от i=92106 и выше ...) появляется...

Прерывание при работе с массивом
Доброго времени суток! Наткнулся в нитернете на пример программы соритровки одномерного массива, вообщем разобрался, но для меня осталось...

Ошибка при работе с массивом
Здравствуйте! Я только начинаю разбираться в Java и в связи с этим, у меня возникли некие сложности и проблемы с программой. Вся суть того,...

Ошибка при работе с массивом
В чем ошибка? Dim m_k(2, 25) m_k() = Sheets(3).Range(Sheets(3).Cells(2, 1), Sheets(3).Cells(26, 2)) ...

Ошибка при работе с массивом
var a:array of integer; i,L,M:integer; begin randomize; for i:=1 to n do begin a:=random(100); write(a,' '); end;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 05.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru