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

неправильное значение переменной - C++

Восстановить пароль Регистрация
 
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 17:27     неправильное значение переменной #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
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int _tmain(int argc, _TCHAR* argv[]){
setlocale(LC_CTYPE,"rus");
int m,n,koeff[9],a;
cout<<"Введите степень уравнения ";
cin>>n;
cout<<"\nВведите "<<n+1<<" коэффициентов ";
for (int i=0;i<n+1;i++){
 cin>>koeff[i];  
    if(koeff[i]<0) {
        m=i+1; break;
        }
    a=min(koeff[i],0);
}
cout<<"\nиндекс первого отицательного коэффициента "<<m<<endl
<<"максимальный по модулю отрицатльный коэффициент "<<a<<endl;
system("PAUSE");
return 0;
}
после ввода необходимых данных в консольном окошке переменной "a" присваивается 9тизначное число, непонятно как образованное...
вопрос:"в чем, собственно, проблема?")))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
27.05.2011, 17:51     неправильное значение переменной #2
Вы не описали функцию min...
HighPredator
 Аватар для HighPredator
5351 / 1734 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
27.05.2011, 17:53     неправильное значение переменной #3
Цитата Сообщение от Mиxaил Посмотреть сообщение
Вы не описали функцию min...
Я так понял, что имеется ввиду шаблонная функция из пространства std.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
27.05.2011, 17:55     неправильное значение переменной #4
C++
1
2
3
4
int min (int a, int b)
{
    a < b ? return a : return b;
}
Добавлено через 1 минуту
Predator_2004, тогда нужно было подключить библиотеку с алгоритмами
C++
1
#include <algorithm>
HighPredator
 Аватар для HighPredator
5351 / 1734 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
27.05.2011, 18:01     неправильное значение переменной #5
Автору: я сейчас при n=2 и коэффициентах 1,2,3 соответственно ничего такого не нашел. Рискну предположить, что вы ввели первый коэффициент отрицательный, и по условному переходу покинули цикл получив а=*что-то там*.

Добавлено через 3 минуты
Цитата Сообщение от Mиxaил Посмотреть сообщение
Predator_2004, тогда нужно было подключить библиотеку с алгоритмами
По ходу нет. Отладчик меня сразу отправил в <xutility> как и предположил.

Добавлено через 1 минуту
А туда попал из iostream. Логично. Одно пространство имен.

Добавлено через 55 секунд
Вот кстати раз уж завели дискуссию:
C++
1
2
3
4
5
6
// TEMPLATE FUNCTION min
template<class _Ty> inline
    const _Ty& (__CLRCALL_OR_CDECL _IMPL_MIN)(const _Ty& _Left, const _Ty& _Right)
    {   // return smaller of _Left and _Right
    return (_DEBUG_LT(_Right, _Left) ? _Right : _Left);
    }
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 18:11  [ТС]     неправильное значение переменной #6
дак а функция min онаж стандартная... как и max. зачем ее описывать?
kjahert
48 / 48 / 5
Регистрация: 08.04.2011
Сообщений: 124
27.05.2011, 18:13     неправильное значение переменной #7
Я так тоже подумал
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.05.2011, 18:15     неправильное значение переменной #8
Действительно...
C++
1
2
3
4
5
6
7
#include <iostream>
using namespace std;
int main(){
    int a=2,b=3;
    cout << min(a,b);
    return 0;
}
g++ нормально это компилирует
Окончательно разочаровался в using namespace std;
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 18:22  [ТС]     неправильное значение переменной #9
при подключении #include <algorithm> переменной "а" присваивается 0.
некоторые коэффициенты должны быть отрицательными.(условие)

Введите степень уравнения 3
Введите 4 коэффициентов 2 -2 4 -4
индекс первого отрицательного коэффициента 2 (все верно)
максимальный по модулю отрицательный коэффициент 0 (не верно)))
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.05.2011, 18:24     неправильное значение переменной #10
Ну как бы если min(положительное число,0) всегда будет равно нулю. Если отрицательное-отрицательному числу. К чему этот min здесь вообще
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 18:34  [ТС]     неправильное значение переменной #11
a=min(koeff[i],0);
нужно для определения наименьшего эл-та массива и присвоения переменной "а" значения этого эл-та.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.05.2011, 18:35     неправильное значение переменной #12
А образуется оно так-первым числом вы вводите отрицательное, тогда срабатывает условие if(koeff[i]<0) ... break; считывание прерывается и a в итоге не считывается. Криво программа сделана=)

a=min(koeff[i],0);
Да нет, это эквивалентно a=koeff[i];если число положительное, и a=0, если отрицательное
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 18:39  [ТС]     неправильное значение переменной #13
спасибо. а как тогда будет правильно?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.05.2011, 18:42     неправильное значение переменной #14
C++
1
2
3
4
5
6
7
int m=-1,a=0;
for (int i=0;i<n+1;i++){
 cin>>koeff[i];
    if(koeff[i]<0) //если число отрицательное
        if (m==-1) m=i;  //и до этого не встречалось(иначе m не будет равно -1) , то присваиваем m нужный индекс
    a=min(koeff[i],a);  //если число меньше а, то присваем его а
}
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 18:53  [ТС]     неправильное значение переменной #15
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
#include "stdafx.h"
#include <algorithm>
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int _tmain(int argc, _TCHAR* argv[]){
setlocale(LC_CTYPE,"rus");
int n,koeff[9],a;
cout<<"Введите степень уравнения ";
cin>>n;
cout<<"\nВведите "<<n+1<<" коэффициентов ";
int m=-1;
for (int i=0;i<n+1;i++){
 cin>>koeff[i];
    if(koeff[i]<0) 
        if (m!=-1) m=i;
    a=min(koeff[i],a);
}
cout<<"\nиндекс первого отрицательного коэффициента "<<m
<<endl<<"\nмаксимальный по модулю отрицательный коэффициент "<<a<<endl<<endl;
system("PAUSE");
return 0;
}
Введите степень уравнения 3
Введите 4 коэффициентов 2 -2 4 -4
индекс первого отрицательного коэффициента -1 (не верно)))
максимальный по модулю отрицательный коэффициент -858993460 (не верно)))
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.05.2011, 18:55     неправильное значение переменной #16
Я там поправил...
m!=-1 на m==-1
И обратите внимание, что a нужно проинициализировать
И если по считывания чисел m=-1, то отрицательных чисел нету, тоже учтите
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2011, 19:01     неправильное значение переменной
Еще ссылки по теме:

C++ Неправильное значение итератора end()
Неправильное возвращаемое значение функции time C++
Неправильное значение объема конуса C++

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

Или воспользуйтесь поиском по форуму:
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 19:01  [ТС]     неправильное значение переменной #17
а все...
забыл
а=0;
но индекс первого отрицательного коэффициента все равно считает не правильно

Добавлено через 4 минуты
всем спасибо!
Yandex
Объявления
27.05.2011, 19:01     неправильное значение переменной
Ответ Создать тему
Опции темы

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