Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести параллелограммы и посчитать их площадь применяя классы Задание: Задать четырехугольники. Найти и вывести все параллелограммы, прямоугольники из них и их площади. -------------------------------------------------------------------- Прямоугольник... https://www.cyberforum.ru/ cpp-beginners/ thread2559698.html C++ Ошибка в вызове функции
Помогите пожалуйста в с++ только начинаю разбираться. Времени читать книги нет, надо завтра сдавать работу. Но в 19 строчке вылетает ошибка помогите ее исправить пожалуйста. скрин с ошибкой сам...
C++ Вывести слова заканчивающиеся на согласную https://www.cyberforum.ru/ cpp-beginners/ thread2559663.html
Вывести слова заканчивающиеся на согласную Почему мой код не работает? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> int main() {
C++ Задача на работу со структурами Помогите пожалуйста. Нужно создать указатель на структуру WORKER в динамической памяти #include <iostream> #include "locale.h" #include "windows.h" #include "string.h" https://www.cyberforum.ru/ cpp-beginners/ thread2559658.html
Кто может перевести две программы с C на C++ C++
#include <stdio.h> #include <stdlib.h> #include <math.h> int main (void) { double a, b, f ; printf("a="); scanf("%lf", &a); printf("b="); scanf("%lf", &b);
C++ составить программу для нахождения суммы ряда Доброго времени суток! Необходимо написать программу для нахождения суммы ряда: x-((x^2)/2!)+((x^4)/4!) Вот набросал но что-то не получается #include <iostream> #include <cmath> using... https://www.cyberforum.ru/ cpp-beginners/ thread2559654.html
C++ Определить произведение и количество элементов одномерного массива, не равных 0 и меньших 1 https://www.cyberforum.ru/ cpp-beginners/ thread2559641.html
Определить произведение и количество элементов одномерного массива, не равных 0 и меньших 1. Массив задается рандомно
Вычислить сумму ряда C++
S=\sum_{n=0}^{\infty }\frac{{(-1)}^{2n}}{2n!}
C++ Функции Ввести двумерные массивы X1(N1XM1) , X2(N2XM2) . Переписать элементы столбцов обоих матриц, содержащих максимальные элементы в своих матрицах в одномерный массив Y(N1+N2) . Обе матрицы и массив Y... https://www.cyberforum.ru/ cpp-beginners/ thread2559632.html C++ Вычислить операторами do-While, For https://www.cyberforum.ru/ cpp-beginners/ thread2559631.html
P=\prod_{i=1}^{3}\sum_{j=1}^{4}\frac{i+j}{2} p=\sum_{k=1}^{n}({2k}^{2}+1!)
Двойной интеграл (метод средних прямоугольников), параллельное программирование C++
Здравствуйте. Пытаюсь решить интеграл методом средних прямоугольников. Но проблема в том, что аналитическое решение (22,4894) не сходится с тем, что в методе. Что не так?? Спасибо #include...
C++ Вычисление выражения через объявленные переменные. Бинарное дерево Здравствуйте. Поставлена задача, вычислить выражение заданное пользователем используя бинарное дерево. Код написан и полностью работает, но только в выражении вместо переменных числа. Например... https://www.cyberforum.ru/ cpp-beginners/ thread2559628.html
случайный прохожий
1687 / 1089 / 376
Регистрация: 20.07.2013
Сообщений: 2,984
23.12.2019, 04:14 0

Вывести начальные индексы всех непрерывных знакопеременных последовательностей чисел - C++ - Ответ 14120297

23.12.2019, 04:14. Показов 2212. Ответов 1
Метки (Все метки)

Ответ

Если я правильно понял задание (и нигде не ошибся), то с учетом того, что 0 не имеет знака и "сбрасывает" последовательность, получилось следующее.
Делал в билдере, вывод массива идет слева направо и сверху вниз. Думаю, вывод нетрудно заменить на "консольный".

Сначала 2 вспомогательных функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int sign (int x)  // знак целого числа
{
  if (x < 0)
    return -1;
  if (x > 0)
    return 1;
//  if (x == 0)
  return 0;
}
//---------------------------------------------------------------------------
int random_int_from_interval (int start_value, int end_value)  // "случайное" целое число из диапазона
{
  return random(end_value - start_value + 1) + start_value;
}
Основной код:
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
  const n = 100;
  int array[n], i, start_value = -50, end_value = 50, current_sign, current_index, count;
 
  // "запускаем" ГПСЧ
  randomize();
 
  // заполняем массив
  String temp = "Массив:\n";
  for (i = 0; i < n; i++)
  {
    array[i] = random_int_from_interval(start_value, end_value);
    temp = temp + String(array[i]) + ((i % 10 != 9) ? "   " : ((i > 0) ? "\n" : "   "));
  }
  temp = temp + "\n\nИндексы:\n";
 
  // запоминаем знак и индекс первого (с индексом 0) элемента массива
  current_sign = sign(array[0]);
  current_index = 0;
  // кол-во (счетчик) чисел последовательности
  count = (current_sign != 0) ? 1 : 0;
 
  for (i = 1; i < n; i++)  // проверяем со второго (с индексом 1) элемента массива
  {
    if (sign(array[i]) == current_sign || sign(array[i]) == 0)  // если знак не меняется или равен 0
    {
      if (count > 1)  // если счетчик > 1
      {
        // ShowMessage(current_index + 1);  // выводим индекс + 1
        temp = temp + String(current_index + 1) + "   ";
      }
 
      count = (sign(array[i]) != 0) ? 1 : 0;  // сбрасываем счетчик
      current_index = i;  // меняем текущий индекс
      if (sign(array[i]) == 0)  // если знак равен 0
        current_index++;  // наращиваем индекс
    }
    else if (sign(array[i]) == -current_sign && sign(array[i]) != 0)  // если знак меняется и не равен 0
      count++;  // наращиваем счетчик
 
    current_sign = sign(array[i]);  // запоминаем текущий знак числа
  }
  // случай, когда последовательность меняет знак (с какого-то момента) до самого конца массива
  if (count > 1)  // если счетчик > 1
  {
//  ShowMessage(current_index + 1);  // выводим индекс + 1
    temp = temp + String(current_index + 1) + "   ";
    ShowMessage(temp);  // выводим массив
  }
Некоторые результаты ниже.

P.S.: в каких-то ситуациях из-за наличия 0 в массиве некоторые последовательности могут пропускаться при выводе результатов (мне не удалось выявить точную причину данного бага; если получится решить эту проблему, то выложу новый код).

Вернуться к обсуждению:
Вывести начальные индексы всех непрерывных знакопеременных последовательностей чисел C++
Миниатюры
Вывести начальные индексы всех непрерывных знакопеременных последовательностей чисел  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2019, 04:14
Готовые ответы и решения:

Вывести начальные и конечные индексы индексы всех непрерывных знакопеременных последовательностей чисел
Даны 3 массива.Вывести начальные и конечные индексы индексы всех непрерывных знакопеременных...

В одномерном массиве вывести начальные индексы всех непрерывных знакопеременных последовательностей чисел
1. В одномерном массиве вывести начальные индексы всех непрерывных знакопеременных...

Вывести начальные индексы всех непрерывных знакочередующихся последовательностей чисел
Объявить массив целых чисел и заполнить его случайными значениями с помощью функций srand() и...

Вывести начальные индексы всех непрерывных последовательностей неотрицательных чисел
Дан массив размером 100. Заполнить его случайными числами в диапазоне от -100 до 100. Вывести...

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2019, 04:14

Вывести начальные индексы всех непрерывных последовательностей чисел со значениями, которые не увеличиваются
Разработать программу, которая в одномерном массиве действительных чисел (размер задайте...

Вывести начальные индексы всех непрерывных последовательностей
(С)Вывести начальные индексы всех непрерывных последовательностей чисел с неувеличивающимися...

Найти начальные индексы непрерывных последовательностей
ребята помогите доделать лабу ато у меня не получаетса плз вот условие вот недоделаная лаба...

Вывести начальные индексы всех непрерывных неубывающих подпоследовательностей цифр
Дана последовательность целых чисел. Вывести начальные индексы всех непрерывных неубывающих...

Вывести индексы массива непрерывных невозрастающих последовательностей
всем привет! пишу впервые.... сделал програмку но она выводит не правильный ответ смысл задачки...

Вывести начальные индексы всех непрерывных последовательностей отрицательных чисел
Вывести начальные индексы всех непрерывных последовательностей отрицательных чисел, длинна которых...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru