Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
killalic
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 20
#1

Вывести индексы ....... - C++

19.05.2010, 02:09. Просмотров 380. Ответов 3
Метки нет (Все метки)

Огласить массив целых чисел , и заполнить его случайными значениями. Размер массива 100. Его Диапазон от -100 до 100 .
Вывести начальные индексы всех , нерозрывных последовательностей негативных чисел , длинна которых больше 5 .

Помогите зделать , пожалуйста .
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2010, 02:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести индексы ....... (C++):

Вывести начальные и конечные индексы индексы всех непрерывных знакопеременных последовательностей чисел - C++
Даны 3 массива.Вывести начальные и конечные индексы индексы всех непрерывных знакопеременных последовательностей чисел.Решить,используя...

Дан массив натуральных чисел А[m,n] и число а. Вывести этот массив на экран, вычислит количество элементов равных а и вывести их индексы - C++
Дан массив натуральных чисел А и часло а. Вывести этот массив на экран, обчислить количество элементов равных а и вывести их индексы. ...

вывести в массиве индексы - C++
Привет всем.Помогите пожалуйста решить задачу. В массиве найти максимальный элемент(это легко) и все элементы равные ему вывести их...

Вывести индексы разделителей - C++
Добрый вечер. Не могу разобраться с проблемой Необходимо в массиве вывести все индексы разделителей Выводится первый индекс 5, потом...

Вывести индексы и значение массива - C++
Написать программу, которая проверяет, есть ли во введенном с клавиатуры массиве элементы с одинаковым значением. Вывести их индексы и...

Вывести наименьшие значения матрицы и их индексы - C++
Как вывести в двухмерном массиве наименьшее значение и его индекс , и если таких значений несколько то их все. Помогите пожалуйста)

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zViXz
3 / 3 / 0
Регистрация: 15.05.2010
Сообщений: 25
19.05.2010, 09:13 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define n 100
 
main ()
{
int a[n], x, z, i;
srand(time(NULL));
for (i=0; i<n; i++)
    {
          a[i]=-n+rand()%n;
          printf ("%d, ", a[i]);
    }
printf ("\n_______________________\n");
for (i=0; i<n; i++)
    {
          if (a[i]<0) { x=i; for (z=0; a[i]<0; i++)  {z++;} if (z>5) {printf ("%d", x);} }
    }
getch ();
}
Рандом только поправь в заполнении, до сих пор до конца не понимаю как он работает
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
19.05.2010, 12:22 #3
zViXz, в вашем примере в строке 19 переменная i увеличивается без сравнения с размером массива, вследствие чего может выходить за его пределы и считывать числа за границей массива.
Привожу пример этого:
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
#include <conio.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
#define n 100
 
int main ()
{
int a[n + 1], x, z, i;
srand(time(NULL));
for (i=0; i<n; i++)
{
    a[i] = rand() % n;
    a[n - 1] = -1;
    a[n]     = -1;
    a[n + 1] = -1;
    a[n + 2] = -1;
    a[n + 3] = -1;
    a[n + 4] = -1;
 
    std::cout << i
              << ": ";
              
    printf ("%d, ", a[i]);
    std::cout << std::endl;
}
printf ("\n_______________________\n");
for (i=0; i<n; i++)
{
    if (a[i]<0) 
    { 
        x=i; 
        for (z=0; a[i]<0; i++)  
        {z++;} 
        if (z>5) 
        {
            printf ("%d", x);
            std::cout << std::endl;
        } 
    }
}
getch ();
}

Правильный код выглядит примерно так:
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
66
67
68
69
70
71
72
73
//Объявить массив целых чисел и заполнить его случайными значениями. 
//Размер массива 100. Его диапазон от -100 до 100 .
//Вывести начальные индексы всех непрерывных последовательностей отрицательных чисел, 
//длинна которых больше 5.
#include <vector>
#include <algorithm>
#include <iostream>
#include <locale>
 
typedef std::vector<int> T_int_arr;
 
const size_t ARR_SIZE = 100;
const size_t NEG_LINE_SIZE_LOW_BOUND = 5;
 
int get_rand()
{
    return rand() % (ARR_SIZE * 2) - ARR_SIZE;
}
 
void print_arr(T_int_arr arr)
{    
    for(size_t i = 0; i < arr.size(); ++i)
    {
        std::cout << i
                  << ": "
                  << arr[i]
                  << std::endl;
    }
}
 
void print_negate_line_ind
    (
        T_int_arr  arr, 
        size_t     neg_line_size_low_bound
    )
{
    for(size_t i = 0; i < arr.size(); ++i)
    {
        if(arr[i] < 0)
        {
            size_t  count = 0;        
            while(i + count < arr.size() && arr[i + count] < 0)
            {
                ++count;
            }
            if(count > neg_line_size_low_bound)
            {
                std::cout << i
                          << std::endl;
            }
            i += count;       
        }
    }   
}
 
int main()
{
    std::locale::global(std::locale("rus"));
    srand(static_cast<unsigned>(time(0)));
    T_int_arr a(ARR_SIZE);
    std::generate(a.begin(), a.end(), get_rand);
    std::cout << "Исходный массив: "
              << std::endl;
    print_arr(a);
    std::cout << "Нач. индексы непрерывных посл-тей отриц. чисел, длиной > "
              << NEG_LINE_SIZE_LOW_BOUND
              << ": "
              << std::endl;
    print_negate_line_ind(a, NEG_LINE_SIZE_LOW_BOUND);
    std::cout << std::endl
              << std::endl;
    return 0;
}
zViXz
3 / 3 / 0
Регистрация: 15.05.2010
Сообщений: 25
19.05.2010, 12:35 #4
Чёрт, и правда. Каюсь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2010, 12:35
Привет! Вот еще темы с ответами:

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

Вывести на экран элементы массива, кратные 5, и их индексы - C++
помогите, пожалуйста 1. Дан целочисленный массив А. Вывести на экран элементы массива, кратные 5, и их индексы. 2. Дан целочисленный...

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

Вывести индексы всех седловых точек заданной матрицы - C++
1) Дана прямоугольная матрица. Вывести индексы всех седловых точек заданной матрицы. Элемент матрицы называется седловой точкой, если он...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.05.2010, 12:35
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru