Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.03.2019
Сообщений: 6
1

Проблема с кодом C++

13.03.2019, 08:23. Показов 1262. Ответов 9

Author24 — интернет-сервис помощи студентам
Начал писать на C++, решил сделать программу, которая переводит числа из десятичной системы счисления в двоичную. Закинул в компилятор ошибок нет, но и вывода тоже никакого, кто знает в чем проблема, скажите.
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 <iostream>
using namespace std;
 
int main(){
 
    const int size = 20;
    int ad[size];
    int def;
cin >>def;
    while(def>1){
        for(int i=0;i<size;i++){
            def=def/2;
            ad[i]=def%2;
            if(def==1){
                ad[i]=def;
            }
        }
    }
    for(int i=0; i;i++){
        cout<<ad[size-i];
    }
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2019, 08:23
Ответы с готовыми решениями:

Проблема с кодом
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;cmath&quot; #include &lt;string&gt; #include &lt;array&gt; ...

Проблема с кодом
Не могу понять почему слово симметрична выводится 16 раз, n и m равны 4, и такое ощущение что код...

Проблема с кодом работы с матрицей
Помогите пожалуйста, таже проблема, не знаю в чем ошибка 47 строка... #include &lt;conio.h&gt;...

Проблема с кодом( итераторы и векторы)
Не так давно начал изучать с++ и добрался до векторов и итераторов. При решении задачи возникли...

9
2126 / 1208 / 503
Регистрация: 11.10.2018
Сообщений: 6,089
13.03.2019, 08:42 2
Лучший ответ Сообщение было отмечено E7o как решение

Решение

Цитата Сообщение от E7o Посмотреть сообщение
C++
1
2
def=def/2;
ad[i]=def%2;
- вот эти операторы должны идти в обратном порядке, как-то вот так:
C++
1
2
3
4
5
6
7
i = 0;
while(def)
{
    ad[i] = def%2;
    def /= 2;
    i++;
}
Внутреннего цикла быть не должно, по-моему.

Добавлено через 1 минуту
Цитата Сообщение от E7o Посмотреть сообщение
C++
1
cout<<ad[size-i];
- и вот здесь ошибка, должно быть вот так:
C++
1
cout << ad[size-i-1];
Добавлено через 8 минут
Вот так работает:
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>
#include <string>
#include <cstdlib>
using namespace std;
 
int main()
{
    const int size = 20;
    int ad[size] = {0}, i, def;
 
    cout << "Vvedite N:";
    cin >> def;
 
    i = 0;
    while(def)
    {
        ad[i] = def%2;
        def /= 2;
        i++;
    }
    for(i=0; i<size; i++)    
        cout << ad[size-i-1];
    cout << "\n";    
 
    system("pause");
    return 0;
}
0
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
13.03.2019, 08:44 3
Цитата Сообщение от E7o Посмотреть сообщение
for(int i=0; i;i++)
этот цикл ни разу не выполнится
1
0 / 0 / 0
Регистрация: 13.03.2019
Сообщений: 6
13.03.2019, 10:44  [ТС] 4
Мне кажется, что цикл
C++
1
while(def){}
будет бесконечный. И еще я не могу понят зачем делать size-i-1, зачем здесь -1?
0
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
13.03.2019, 10:59 5
Цитата Сообщение от E7o Посмотреть сообщение
Мне кажется, что цикл
C++
1
while(def){}
будет бесконечный.
если def=1 то чему по вашему равно def/2?
Цитата Сообщение от E7o Посмотреть сообщение
зачем здесь -1?
потому что индексация начинается с 0
1
0 / 0 / 0
Регистрация: 13.03.2019
Сообщений: 6
13.03.2019, 11:08  [ТС] 6
Если def =1 и его поделят на 2, это же целочисленная переменная там будет 0, а следовательно в массив будет записываться много нулей. Я считаю что там надо поставить ограничение.
C++
1
while(def>1)
0
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
13.03.2019, 11:17 7
Цитата Сообщение от E7o Посмотреть сообщение
Я считаю что там надо поставить ограничение.
E7o, вы сначала запустите тот код, что вам предложили, а затем, если результат вас не устроит, делайте то что посчитаете нужным
1
Злостный нарушитель
9510 / 5154 / 1175
Регистрация: 12.03.2015
Сообщений: 24,296
13.03.2019, 11:27 8
На, не мучайся.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// перевод беззнакового целого x в двоичное представление,
// дополняя слева нулями до длины z.
// Память не выделяет, размер буфера не проверяет! НЕ ЛОХАНИТЕСЬ. :))
char* uint32_to_bin(char* buf, unsigned x, unsigned char z)
{
  int len = 1;
  while (1 << len <= x) len++;
  if (z > len) len = z;
  
  memset(buf, '0', len);
  buf[len] = 0;
  char* ptr = buf + len - 1;
  
  while (x) *ptr-- = 0x30 + (x & 1), x >>= 1;
  return buf;
}
0
0 / 0 / 0
Регистрация: 13.03.2019
Сообщений: 6
13.03.2019, 11:42  [ТС] 9
И хоть я ничего не понял(объяснять не надо) все равно спасибо)
Это обращение к Verevkin
0
Злостный нарушитель
9510 / 5154 / 1175
Регистрация: 12.03.2015
Сообщений: 24,296
13.03.2019, 11:58 10
Цитата Сообщение от E7o Посмотреть сообщение
объяснять не надо
А я и не собирался. Всё в комментарии написано.
0
13.03.2019, 11:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2019, 11:58
Помогаю со студенческими работами здесь

Проблема с кодом программы - не работает проверка условия
Здравствуйте, у меня вот проблема. Фрагмент кода их программы. Как вы поняли, при обпределенном...

Проблема с кодом
Доброго времени суток. 1с 7.7 Проблема такова: |Свойство =...

Проблема с кодом
Здравствуйте! К сожалению, моих знаний в программировании не хватает, чтобы отладить программу по...

Проблема с кодом
Здравствуйте кто смотрит эту тему. Я только начал изучать Qt и пытаюсь создать свой калькулятор, но...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru