Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

27.05.2011, 17:27. Просмотров 647. Ответов 16
Метки нет (Все метки)

вот код
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тизначное число, непонятно как образованное...
вопрос:"в чем, собственно, проблема?")))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2011, 17:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос неправильное значение переменной (C++):

Присвоить значение наименьшего элемента массива переменной М1, номер строки, где находится этот элемент, - переменной Т, номер столбца - переменной С - C++
Массив С действительных чисел имеет 5 строк и 11 столбцов. Присвоить значение наименьшего элемента массива переменной М1, номер строки, где...

this возвращает неправильное значение - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class oops{ public: oops():key(10){} int key; oops&amp; oper1(int...

Неправильное значение итератора end() - C++
Здравствуйте! Создаю лист и итератор. Заполняю структуру данными. Передаю в функцию пустой контейнер - лист и данные структуры, чтобы...

Програмка выдает неправильное значение - C++
Здравствуйте форумчане, относительно недавно стал изучать C++ как хобби. Изучив немного операторов решил закрепить знания написав...

Неправильное значение объема конуса - C++
В чем проблема? Комментарии в коде: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;locale&gt; using namespace...

Неправильное значение в атрибуте класса - C++
всем доброго времени суток. пишу курсовую - программа-калькулятор двоичных чисел. заметил несколько проблем. в функции f_2_to_10 не...

16
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
27.05.2011, 17:51 #2
Вы не описали функцию min...
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
27.05.2011, 17:53 #3
Цитата Сообщение от Mиxaил Посмотреть сообщение
Вы не описали функцию min...
Я так понял, что имеется ввиду шаблонная функция из пространства std.
0
Mиxaил
533 / 438 / 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>
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
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);
    }
0
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 18:11  [ТС] #6
дак а функция min онаж стандартная... как и max. зачем ее описывать?
0
kjahert
49 / 49 / 5
Регистрация: 08.04.2011
Сообщений: 124
27.05.2011, 18:13 #7
Я так тоже подумал
0
diagon
Higher
1930 / 1196 / 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;
0
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 (не верно)))
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.05.2011, 18:24 #10
Ну как бы если min(положительное число,0) всегда будет равно нулю. Если отрицательное-отрицательному числу. К чему этот min здесь вообще
0
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 18:34  [ТС] #11
a=min(koeff[i],0);
нужно для определения наименьшего эл-та массива и присвоения переменной "а" значения этого эл-та.
0
diagon
Higher
1930 / 1196 / 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, если отрицательное
1
wanowin
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 27
27.05.2011, 18:39  [ТС] #13
спасибо. а как тогда будет правильно?
0
diagon
Higher
1930 / 1196 / 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);  //если число меньше а, то присваем его а
}
0
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 (не верно)))
0
27.05.2011, 18:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2011, 18:53
Привет! Вот еще темы с ответами:

Неправильное возвращаемое значение функции time - C++
что за бардак мне time возвращает??? что типа щас 10 месяц, а год вообще 114 :D пишу так: time_t t; time(&amp;t); tm tt; ...

Почему функция возвращает неправильное значение - C++
Пробовал дебажил функцию и каждый раз проверка проходит условие, хотя оно выполняется... в итоге возвращается false //проверка...

Элементы структуры: неправильное значение после 10 элемента - C++
При создании массива из собственной структуры, после 10 элемента, начинает неправильно заполняться одно из полей (Target). using...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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