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

Нахождение абсолютного значения - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.64
colding54
Заблокирован
26.03.2012, 07:43     Нахождение абсолютного значения #1
Здравствуйте. Начинаю изучать С++.В книге прочитал что есть библиотечная функция abs() для нахождения абсолютного значения. Решел попробовать без нее.
в 12ой строке ошибка.


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
#include <iostream>
 #include <cstdio>
 #include <cstdlib>
 
 using namespace std;
 
 /* программа нахождения абсолютного значения, 
 функция absol не посредственно ищет это значение*/
 
 int absol(int d)
 {
 if(a<0) // ошибку показывает здесь 
 {
 d=-a;
 }
 else
 {
 d=a;
 }
 
 return d;
 }
 int main()
 {
 int a;
 int b;
 cout << "Введите число, абсолютное значение которогы вы хотите найти: ";
 cin >> a;
 cout << "\n";
 b=absol(a);
 cout <<"absolyt: " << b<< endl;
 cout <<"END";
 return 0;
 
 }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
26.03.2012, 08:10     Нахождение абсолютного значения #2
Во-первых, в области видимости функции absol переменная a не определена. Во-вторых, аргументом функции (формальным параметром) является переменная d, ее значение и нужно рассматривать:

C
1
2
3
4
5
6
7
int absol(int d)
{
  if(d < 0)
    return -d;
  else
    return d;
}
Или короче, с использованием тернарного оператора:

C
1
2
3
4
int absol(int d)
{
  return d < 0 ? -d : d;
}
colding54
Заблокирован
26.03.2012, 08:27  [ТС]     Нахождение абсолютного значения #3
Спасибо, разобрался и уложил в голове
Цитата Сообщение от Nameless One Посмотреть сообщение
Или короче, с использованием тернарного оператора:

C
1
2
3
4
int absol(int d)
{
  return d < 0 ? -d : d;
}
это пока еще загадка для меня.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
26.03.2012, 08:32     Нахождение абсолютного значения #4
colding54, синтаксис:
Код
expr '?' then-expr ':' else-expr
Сначала вычисляется expr. Если оно вычисляется в истину, то тогда вычисляется и возвращается значение then-expr. Иначе вычисляется и возвращается значение else-expr (т.е. оператор является short-circuit).

Тернарный оператор в функции absol можно читать так: если d меньше нуля, то вернуть -d, иначе вернуть d
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
26.03.2012, 10:55     Нахождение абсолютного значения #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
27
#include <iostream>
 using namespace std;
  int x;// глобальная переменная
int func(int d)
 {
    int c;
    c=x+d;//в функции можно обращаться к своим параметрам (d), глобальным переменным(x)
             //и локальным переменным, но только этой функции (с);
    c=b;// !запрещено! b - локальная переменная из другой функции
    return d;
 }//после завершения функции её локальные переменные уничтожаются,
//поэтому не надейся сохранить в переменной "с", например, сумму результатов всех вызовов функций
// новый вызов - новая "c"
 
 int main()
 {
   int b; 
   int a;
   a=10; x=20;
   b=func(a);//здесь мы вызываем функцию с параметром 10
   //при этом переменные a и b нам временно перестают быть видны
   //но так как мы передали параметр
   //то значение a скопируется в функцию в виде параметра d
 
   return 0;
 
}
Вот немного об области видимости.
Yandex
Объявления
26.03.2012, 10:55     Нахождение абсолютного значения
Ответ Создать тему
Опции темы

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