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

Поиск ошибки. - C++

Восстановить пароль Регистрация
 
Bukharov11
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 46
19.04.2012, 12:21     Поиск ошибки. #1
Программа работает правильно, но преподаватель говорит, что есть нехорошая ошибка.
Никак не могу ее найти. Помогите найти ее пожалуйста..

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
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int i;
double max;
const int n = 10;
double x[n], k;
cout<<"Input "<<n<<"number:\n";
for (int i=0; i<n; i++)
cin>>x[i];
max=x[0];
k=0;
for (i=0; i<n; i++)
if (x[i]>max)
{
max=x[i];
k=i;
}
{
if(fabs(x[n])>max)max=fabs(x[n]);
{
cout<<(max<=1?"Wrong":"Right");
}
}
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2012, 12:21     Поиск ошибки.
Посмотрите здесь:

C++ Поиск ошибки в коде
C++ Поиск ошибки
C++ Поиск ошибки.
C++ поиск логической ошибки
C++ Поиск ошибки в программе.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
19.04.2012, 12:27     Поиск ошибки. #2
Что должна делать программа?
Bukharov11
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 46
19.04.2012, 12:30  [ТС]     Поиск ошибки. #3
Даны натуральное число n, действительные числа a1, …, an.
Верно ли, что наибольший член последовательности a1, …, an по модулю больше
единицы?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
19.04.2012, 12:31     Поиск ошибки. #4
Вижу как минимум одну ошибку: в строке 22 выход за пределы массива.
Bukharov11
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 46
19.04.2012, 12:32  [ТС]     Поиск ошибки. #5
Цитата Сообщение от Toshkarik Посмотреть сообщение
Вижу как минимум одну ошибку: в строке 22 выход за пределы массива.
Не могли бы вы подробно объяснить, что это значит.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
19.04.2012, 12:46     Поиск ошибки. #6
Так же не понятно само условие проверки. Вы хотели видать сравнить максимальный элемент с последним, в то время как нужно сравнивать модуль максимального элемента с единицей.

Добавлено через 6 минут
Вы объявили массив как x[ n ], где n - размер, то есть количество элементов. В С++ нумерация индексов элементов идет с 0. То есть первым будет элемент с индексом 0 а последним с индексом n - 1.

Добавлено через 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
#include <iostream>
#include <cmath>
 
 
using namespace std;
 
int main() {
   int i;
   double max;
   const int n = 10;
   double x[ n ];
 
   cout << "Input " << n << "numbers:\n";
   for ( int i = 0; i < n; i++)
      cin >> x[ i ];
 
   max = x[ 0 ];
 
   for ( i = 0; i < n; i++)
      if ( x[ i ] > max) 
         max = x[ i ];
    
   cout << ( fabs( max ) <= 1 ? "Wrong" : "Right" );
 
   return 0;
}
Примерно должно выглядеть вот так. Пробуйте.
Yandex
Объявления
19.04.2012, 12:46     Поиск ошибки.
Ответ Создать тему
Опции темы

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