Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 20
1

Вывести индексы .......

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

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

Помогите зделать , пожалуйста .
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2010, 02:09
Ответы с готовыми решениями:

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

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

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

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

3
3 / 3 / 1
Регистрация: 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 ();
}
Рандом только поправь в заполнении, до сих пор до конца не понимаю как он работает
1
Эксперт С++
3225 / 1752 / 436
Регистрация: 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;
}
0
3 / 3 / 1
Регистрация: 15.05.2010
Сообщений: 25
19.05.2010, 12:35 4
Чёрт, и правда. Каюсь.
0
19.05.2010, 12:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2010, 12:35
Помогаю со студенческими работами здесь

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

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

Вывести индексы нескольких элементов массива
В массиве найти максимальный по значению элемент, вывести его индекс, если таких элементов...

Как вывести ещё индексы и значения указателей?
Добрый день!Как сделть что везде ещё выводились кроме значений индексы и значения указателей......


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru