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

Работа с массивом (исправте ошибки плз) - C++

Восстановить пароль Регистрация
 
dimon4ik2008
2 / 2 / 0
Регистрация: 21.09.2010
Сообщений: 128
07.04.2011, 21:17     Работа с массивом (исправте ошибки плз) #1
Найти максимальное значение и заменить его индексом элементы массива меньше чем -5
массив от 100 до -100

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int Ar[200];
int i;
int j;
int max=-100;
int main(void)
{
   for(i=0; i<200; Ar[i++]=rand()/((RAND_MAX/200)-100))
   {
       if Ar[i]>max;
       max=Ar[i];
   }
   for(j=0; j<200;j++)
   if Ar[j]=-5;
   {
printf("%4d",Ar[j]);}
putchar('\n');
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2011, 21:17     Работа с массивом (исправте ошибки плз)
Посмотрите здесь:

C++ Исправте ошибки в коде программы(их два варианта).
ПРОВЕРТЕ НА ОШИБКИ ПЛЗ! C++
Исправте ошибки, Пожалуйста!) C++
Исправте ошибки C++
исправте ошибки пожалуйста C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Katenkka
 Аватар для Katenkka
30 / 30 / 6
Регистрация: 04.04.2011
Сообщений: 86
07.04.2011, 21:31     Работа с массивом (исправте ошибки плз) #2
Не нашла, где определён Ar[0] - это раз. Кроме того, после if стоят точки с запятой... а еще сравнение во втором условии... И в-общем, как-то так:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int Ar[200];
int i;
int j;
int max = -100;
int maxind;
int main(void)
{
   Ar[0] = rand()/((RAND_MAX/200)-100));
   for(i=0; i<200; Ar[i++]=rand()/((RAND_MAX/200)-100))
           if (Ar[i]>max)
            {  
                max = Ar[i];
                maxind = i;
            }
 
   for(j=0; j<200;j++)
     if (Ar[j] < -5)
      Ar[j] = maxind;
 
for(j=0; j<200; j++)
   printf("%d ",Ar[j]);
 
return 0;
}
dimon4ik2008
2 / 2 / 0
Регистрация: 21.09.2010
Сообщений: 128
07.04.2011, 21:39  [ТС]     Работа с массивом (исправте ошибки плз) #3
о спасибо, а что за такая переменная maxind?

и почему числа заполняются не в том диапазоне что указаны в условии? вроде ж все правильно задано...
Katenkka
 Аватар для Katenkka
30 / 30 / 6
Регистрация: 04.04.2011
Сообщений: 86
07.04.2011, 21:41     Работа с массивом (исправте ошибки плз) #4
Цитата Сообщение от dimon4ik2008 Посмотреть сообщение
о спасибо, а что за такая переменная maxind?
ну так элементы < -5 надо заменить индексом максимального элемента.
Цитата Сообщение от dimon4ik2008 Посмотреть сообщение
и почему числа заполняются не в том диапазоне что указаны в условии? вроде ж все правильно задано...
не знаю, это я вроде не меняла
dimon4ik2008
2 / 2 / 0
Регистрация: 21.09.2010
Сообщений: 128
07.04.2011, 21:48  [ТС]     Работа с массивом (исправте ошибки плз) #5
Цитата Сообщение от Katenkka Посмотреть сообщение
ну так элементы < -5 надо заменить индексом максимального элемента.

а типо индекс?

не знаю, это я вроде не меняла
хмм...странно как то...Оо
dimon4ik2008
2 / 2 / 0
Регистрация: 21.09.2010
Сообщений: 128
09.04.2011, 17:36  [ТС]     Работа с массивом (исправте ошибки плз) #6
Как всё таки сгенерировать массив именно в пределах от -100 до 100?
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
09.04.2011, 17:39     Работа с массивом (исправте ошибки плз) #7
Можно например так:
C++
1
a[i] = pow(-1.0,rand()%2)*rand()%101;
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.04.2011, 17:45     Работа с массивом (исправте ошибки плз) #8
А можно без лишних вызовов функций
C++
1
a[i] = -100 + 200 * rand() / RAND_MAX;
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
09.04.2011, 17:49     Работа с массивом (исправте ошибки плз) #9
silent_1991, ваш пример врядли будет работать, так как rand()/RAND_MAX будет возвращать либо 0 (в большинстве случаях), либо 1.
Мой пример, действительно, не очень красивый. Наверное так красивее:
C++
1
a[i] = -100 + rand()%201 // rand()%201 возвратит число от 0 до 200
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.04.2011, 17:53     Работа с массивом (исправте ошибки плз) #10
PraZuBeR,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    srand(static_cast< unsigned >(time(0)));
    
    int x = 0;
 
    while (x != 100)
    {
        x = -100 + 200 * rand() / RAND_MAX;
 
        std::cout << x << std::endl;
    }
 
    return 0;
}
Код
-76
83
-32
-91
-42
-65
-82
61
-55
81
20
-69
20
-20
31
-46
42
46
19
94
-64
-38
55
71
22
24
7
-73
-46
28
95
66
21
-91
9
35
24
32
58
5
65
-56
-68
1
84
97
-33
36
66
-57
86
21
-40
-94
97
-20
33
46
-65
60
96
-88
-71
54
-79
-6
67
-67
-93
79
-56
-89
89
-74
-10
-85
-41
-56
26
16
-2
-90
-39
71
-26
4
99
-64
-77
-9
27
-90
54
33
-11
-42
98
-33
-100
-25
-57
-83
-92
41
80
90
57
-59
96
18
-37
77
-60
92
58
55
-8
63
94
89
81
-64
98
86
59
-44
32
-47
81
90
-23
12
24
-82
83
40
-45
-69
99
26
-98
-50
-59
-18
48
67
94
66
-13
19
-78
-24
-45
-9
67
74
94
-26
24
-7
57
56
67
-21
2
-16
11
-69
90
-26
-11
-1
-61
98
-73
78
-61
43
96
79
85
-60
26
-89
47
98
-39
46
-99
-86
-65
14
66
-11
50
90
79
-52
41
-78
-83
-25
-91
-30
-73
-43
96
91
80
58
-6
-50
-30
27
58
-8
-83
29
-85
52
-23
-66
-55
-67
9
43
-90
41
18
-22
-74
0
-79
-76
-56
-70
-57
-52
29
-72
-1
-15
26
14
81
10
74
97
-20
-13
-34
23
-23
-78
36
49
38
6
-61
10
-62
-32
28
-66
48
38
86
-47
17
25
-87
80
78
-75
-62
90
15
-48
-61
85
-93
7
61
-26
-91
98
-2
41
-35
94
-67
56
-89
-53
-89
74
96
-32
34
-7
-63
76
-59
15
-43
12
-23
77
-78
45
-78
-3
28
-44
52
-2
-58
14
28
-30
56
-43
-5
-82
-32
74
-50
-49
-78
-3
-7
83
49
-85
-88
-13
-70
9
-98
-43
-87
15
-100
55
-75
-70
95
72
-4
-48
-71
79
36
75
-64
17
96
38
-76
77
38
36
75
-58
53
92
32
27
-51
-87
-25
-11
52
-82
-46
61
40
58
57
52
-49
-75
-91
-8
84
-41
70
56
38
63
18
-52
14
31
96
-34
6
86
-87
-50
21
-50
-35
-81
-41
-60
-27
1
70
-99
-94
78
42
79
-17
-88
35
-49
21
19
92
-100
23
37
73
-44
-19
35
-80
-93
-27
-49
11
-21
-53
-31
12
0
52
41
-34
48
-79
-32
60
90
-26
25
-19
27
-83
-30
-86
33
-62
0
96
18
-41
-91
-35
97
38
6
39
89
-98
45
-56
-52
91
-74
-61
-78
84
23
-48
-35
-93
-100
71
-10
-8
56
-84
78
-33
76
22
56
-34
29
68
-71
-64
75
80
2
-81
-65
45
-36
-1
-15
54
-22
84
26
22
44
18
85
-90
77
-13
-96
66
-19
-80
84
44
-62
46
-81
-91
8
-94
95
-31
68
-8
-95
-39
-39
88
-72
32
99
-83
40
-69
-5
-54
-92
-43
-44
-51
22
86
21
13
22
11
-36
-54
-19
-73
70
-9
-13
-7
72
20
-94
94
-17
79
45
52
2
85
9
95
21
-63
82
-69
-74
32
1
59
5
70
74
30
68
-79
-99
-83
-20
40
54
97
28
10
-32
3
3
97
9
-52
34
-4
-40
85
53
45
99
5
-84
95
-89
20
75
-80
0
63
10
-66
46
28
-62
-91
-24
84
-19
75
3
1
-73
75
71
10
-27
-36
-2
31
-44
-73
31
7
89
-96
-94
-38
-99
-2
-55
-71
-13
50
63
-32
72
59
20
11
9
34
3
-39
-6
-48
68
-14
30
10
-87
18
-76
50
-66
24
36
-68
18
34
87
-54
35
-98
22
45
81
0
43
-41
29
-9
19
12
43
-90
-29
71
14
77
46
60
-25
88
84
84
44
-2
-18
-44
-38
-58
-33
12
-26
-86
-27
-3
-89
-57
44
84
31
-4
-48
40
78
30
-42
-16
-93
-57
92
-52
-67
36
93
-93
-22
-73
-18
61
-64
-53
6
50
52
-49
-72
93
43
-27
-4
-86
34
50
-22
57
-54
62
-15
49
-76
-99
73
13
21
19
-61
4
-66
66
-78
38
15
67
1
-80
-64
59
6
25
52
22
-46
-64
26
38
99
-94
-36
-99
16
28
25
-79
-77
-100
-49
-56
-56
63
92
-75
-80
-16
-41
76
78
89
76
-64
-43
-8
-10
-22
-95
44
-22
98
-51
-62
-68
0
-57
92
-50
31
8
-38
-82
79
-43
-19
14
71
-75
-97
8
-96
98
29
-95
-62
-37
-100
-8
86
-35
-64
42
25
-9
9
-71
-33
-9
17
23
-84
-74
55
-2
46
-38
61
41
-71
-84
-96
82
38
51
21
34
78
38
-42
76
-55
-19
-81
-50
70
-78
82
-81
-34
-84
-16
-55
-84
-95
-54
-52
25
73
12
97
-24
-94
3
-15
-79
58
-51
58
25
24
86
-61
-87
-66
-96
17
-59
68
25
-57
-80
5
-17
1
28
5
-97
6
-51
-67
-51
86
-50
-64
-77
-1
-48
-29
-95
-49
-97
-2
-95
-40
-97
-67
10
-62
3
-12
15
-74
-96
77
9
57
-95
-83
-95
92
-90
-80
-8
95
42
81
90
90
86
-24
-13
69
93
66
-53
-1
-15
22
-39
-10
75
72
-68
74
-47
81
61
-40
56
-37
33
7
-44
-60
71
-9
-100
46
41
-96
34
-13
100
Для продолжения нажмите любую клавишу . . .
Добавлено через 2 минуты
PraZuBeR, остаток от деления даёт куда меньший разброс, чем деление. Поэтому везде рекомендуют использовать именно мой вариант, нежели ваш.
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
09.04.2011, 17:54     Работа с массивом (исправте ошибки плз) #11
Спасибо, понял свой косяк.
dimon4ik2008
2 / 2 / 0
Регистрация: 21.09.2010
Сообщений: 128
12.04.2011, 21:55  [ТС]     Работа с массивом (исправте ошибки плз) #12
for(j=0; j<200; j++)
printf("%d ",Ar[j]);


поясните пожалуйсто вот эти две строчки а именно первую из них, ну вторая понятно что выводит на экран, а первая что именно делает в этой программе? Оо (они находятся в конце программы) Думал что они перебирают индексы и числа которые меньше чем -5 заменяют индексами, но это вроде не првильно, так что же все таки эта строчка делает ?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.04.2011, 21:56     Работа с массивом (исправте ошибки плз) #13
Тупо проходит по всем элементам массива.
dimon4ik2008
2 / 2 / 0
Регистрация: 21.09.2010
Сообщений: 128
12.04.2011, 21:59  [ТС]     Работа с массивом (исправте ошибки плз) #14
Цитата Сообщение от silent_1991 Посмотреть сообщение
Тупо проходит по всем элементам массива.
наверно глупо спрашивать но зачем?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.04.2011, 22:01     Работа с массивом (исправте ошибки плз) #15
dimon4ik2008, а как вы собираетесь вывести все элемента массива, не пройдясь по ним?
К сведению - первая и вторая строка связаны - вторая строка (вывод) - тело первой (цикл).
dimon4ik2008
2 / 2 / 0
Регистрация: 21.09.2010
Сообщений: 128
12.04.2011, 22:07  [ТС]     Работа с массивом (исправте ошибки плз) #16
ну после второго цикла фор записать принтф, например? или нет?

зачем еще раз их перепроверять? Оо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2011, 22:10     Работа с массивом (исправте ошибки плз)
Еще ссылки по теме:

Исправте ошибки в программе C++
C++ исправте ошибки в программе
C++ Исправте ошибки в программе

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.04.2011, 22:10     Работа с массивом (исправте ошибки плз) #17
dimon4ik2008, можно и так, и так. Автор избрал такой вариант, почему он так поступил - допытывайтесь у него. Я ответил всего лишь на ваш конкретный вопрос.
Yandex
Объявления
12.04.2011, 22:10     Работа с массивом (исправте ошибки плз)
Ответ Создать тему
Опции темы

Текущее время: 00:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru