Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72

Локальные, глобальные переменные и функции

10.04.2015, 16:18. Показов 3856. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив типа char.
char b;
Он заполнен нулями и единицами. b находится в main.
Нужно вывести на консоль b в ф-ции main, но уже в десятичном виде.

Вопрос: Как определить b другой функции, которая осуществляет перевод?

То есть мне надо как-то обратиться к этому массиву, чтоб он существовал для функции BinToDec.

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
36
37
38
39
40
41
42
43
44
int main()
{
    char b[31];
    /*
    Тут часть программы, которая не важна в данном вопросе. Происходит заполнение мсассива.
    */
    cout << "Колесо катится со скоростью " << BinToDec() << " километров в час." << endl;
 
    return 0;
}
 
void BinToDec (...)
{
    int digit = b;
    int i = 0;
    int digitT = digit;
    int rest = 1;
    //Определение числа разрядов
    while (digitT >= 1 && rest <= 1)
    {
        rest = digitT % 10;
        digitT = digitT / 10;
        i++;
    }
    int two = 1;
    int sum = 0;
    digitT = digit;
    if (rest>1) 
    {
        cout<<"Это не двоичная система!\n";
    }
    else
    {
        while (i > 0)
        {
            rest = digitT % 10;
            digitT = digitT / 10;
            sum = sum + rest * two;
            two = two * 2;
            i = i - 1;
        }
            cout << "Число " << digit << " в десятичной системе = " << sum << endl;
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2015, 16:18
Ответы с готовыми решениями:

Курсовой проект с темой "Локальные и глобальные переменные. Правила видимости переменных в С++"
Суть програмы заключается в том чтобы показать суть и разницу локальных и глобальных переменных в с++ и правила видимости в с++ также можно...

Глобальные и локальные переменные: что лучше (или что для чего и в чем конкретная разница)?
Что лучше (или как надо (или что для чего и в чем конкретная разница)): 1. // объявление в глобальной области видимости ...

Глобальные переменные в функции
Подскажите плиз, а можна ли глобальную переменную обявить как то в функции?

36
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72
10.04.2015, 17:58  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от John Prick Посмотреть сообщение
Не придумывай. Вот эта ошибка:
Сообщение от BsSlayer
error C3861: BinToDec: идентификатор не найден
исправится.
Странно... Сейчас попробовал и исправилась. Ума не приложу как так, ведь до этого (чесслово) не помогало. Это я какой-то кривой, видимо

Добавлено через 15 минут
John Prick,
Цитата Сообщение от John Prick Посмотреть сообщение
Остальные ошибки исправляются другими действиями.
Поможете разобраться с этими действиями?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.04.2015, 18:00
Цитата Сообщение от BsSlayer Посмотреть сообщение
Никак не пойму что не нравится ему. Раньше вроде как получалось так переводить из массива char в int.
b[i] внезапно не массив char, а элемент массива (собственно, сам char). Может вам учебник сначала почитать? А то, грубо говоря, вы просите объяснить вам правила склонений, но при этом с трудом отличаете глагол от предлога.
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72
10.04.2015, 18:09  [ТС]
Renji, я понимаю это прекрасно.

C++
1
2
3
4
for(int i =31; i>=0; i--)
        {
            digit += atoi(b[i]);
        }
В том-то и дело, что я ПОЭЛЕМЕНТНО приплюсовываю массив, чтоб ЦЕЛИКОМ его вытащить в int.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.04.2015, 18:19
Цитата Сообщение от BsSlayer Посмотреть сообщение
Renji, я понимаю это прекрасно.
Тогда зачем пихаете char в atoi, когда компилятор у вас просит const char* (массив символов)? И вообще, на кой черт вам там atoi понадобился, если все это записывается как b[i]-'0'?
Цитата Сообщение от BsSlayer Посмотреть сообщение
В том-то и дело, что я ПОЭЛЕМЕНТНО приплюсовываю массив, чтоб ЦЕЛИКОМ его вытащить в int.
И получаете количество единиц в массиве. += как ни странно, оператор сложения.
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72
10.04.2015, 18:21  [ТС]
Renji, Я ведь и прошу помощи, потому что не до конца всё понимаю. Подскажите, если не сложно, Вы ведь знаете, как я понял...
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.04.2015, 18:34
Цитата Сообщение от BsSlayer Посмотреть сообщение
Renji, Я ведь и прошу помощи, потому что не до конца всё понимаю. Подскажите, если не сложно, Вы ведь знаете, как я понял...
digit=strtol(b,0,2). Вместо цикла.
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72
10.04.2015, 21:41  [ТС]
Renji, в итоге доработки и изменения программы вышло так, что я понял, что там лучше использовать тип String. Только теперь вылазит ошибка. Как тут быть?

C++
1
2
3
4
int BinToDec (string b)
{
        int digit;
        digit=strtol(b,0,2);
Миниатюры
Локальные, глобальные переменные и функции  
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.04.2015, 21:45
Цитата Сообщение от BsSlayer Посмотреть сообщение
Renji, в итоге доработки и изменения программы вышло так, что я понял, что там лучше использовать тип String. Только теперь вылазит ошибка. Как тут быть?
stol(b,0,2)
Ну и int BinToDec (string b) int BinToDec (const string&b)
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72
10.04.2015, 21:54  [ТС]
Renji, спасибо, скомпилировалось.
Но потом опять в процессе выполнения получаю ошибку в строке
C++
1
digit=stol(b,0,2);
Миниатюры
Локальные, глобальные переменные и функции  
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.04.2015, 22:04
Цитата Сообщение от BsSlayer Посмотреть сообщение
Но потом опять в процессе выполнения получаю ошибку в строке
b не распозналось как число в двоичной системе. Проверяйте чего там такого лежало, что stol подавилось.
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72
10.04.2015, 22:34  [ТС]
Renji, нашёл.
В функции main я преобразовывал массив char в string. Вышло неудачно... Подскажите, как тут лучше перевести из char[] в string?

C++
1
2
3
    int g;
    string s = b;
    g = BinToDec(s);
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.04.2015, 22:43
Раз вышло неудачно, значит что-то не так с b. Запустите программу под отладчиком и посмотрите что там в b лежит.
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72
10.04.2015, 22:53  [ТС]
Renji, там массив с единицами и нулями. В данном массиве 31 ноль и 1 единица

Получается b пока ещё нормальный массив, а вот уже в s что-то не то... И я не пойму что.
Миниатюры
Локальные, глобальные переменные и функции  
Изображения
 
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.04.2015, 22:56
Ага, понятно. Нужно записать в массив не 1 и 0, а '1' и '0' (именно с кавычками). А после них поставить ноль (0 без кавычек).
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72
10.04.2015, 22:58  [ТС]
Renji, но ведь запись в массив у меня идёт вот где...

Не пойму как тут кавычками обрамлять каждый символ...

C++
1
2
3
4
5
6
7
8
9
10
11
12
for (unsigned int ii = 0; ii < 2; ii++)
            {
                for (int j = 31; j >= 0; --j)
                {
                    cout << (ii>>j)%2 << " ";
                    if(ii==1)
                    {
                        mass[j]=(ii>>j)%2;
                    }
                }
                cout << endl;       
            }
P.S. Тут сначала идёт запись в массив mass. Из него я потом переношу в массив b. Это я делаю, чтоб поменять "левую" и "правую" части массива местами... Можно считать mass за b.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.04.2015, 23:24
(ii>>j)%2 (ii>>j)%2?'1':'0'
0
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 72
10.04.2015, 23:36  [ТС]
Renji, спасибо большое.

Только теперь всё записывается в 48 и 49, то есть через код символа, поэтому функция DecToBin у меня выводит на экран "Это не двоичная система"... Как сделать, чтоб в функции оно определялось как нули и единицы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.04.2015, 23:36

Локальные переменные в функции и её аргумент
Привет! Пишу функцию перевода десятичного числа в текст (не обсуждайте зачем и правильно ли я делаю) Суть такова, начало функции: ...

Передать локальные переменные другой функции
Есть функция (допустим, main), в ней объявлены локальные переменные. Есть другая функция, к которой обращается main. Эта функция (func) по...

Какие в коде имеются глобальные переменные, процедуры и функции
И за что они отвечают? #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;locale&gt; #include &lt;cstdlib&gt; using namespace std; ...

Глобальные и статические глобальные переменные
Скажите, чем отличаются глобальные переменные от статических глобальных переменных?

Что такое глобальные и локальные объекты класса?
Что такое глобальние и локальные обекты класа. Напишыте пожалуста с примерами.


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru