Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
1

Мусор в массиве

16.01.2014, 01:17. Просмотров 1135. Ответов 21
Метки нет (Все метки)

Задание: Подсчитать количество ненулевых разрядов в двоичной записи заданного натурального числа.
Например в числе 13210 = 100001002 - 2 ненулевых разряда.
Вот, что я написал... Когда я вывожу на экран, после двоичного кода, у меня какой то мусор, помогите разобраться, пожалуйста!
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
45
#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
 
void GetBit (int n, int mas[]) {
    for (int i=1;n>=1;i++){
      mas[31-i]=n%2;
      n/=2;
    }
}
void ClearArray (int mas[]) {
    for (int i=0;i<31; i++) {
        mas[i]=0;
    }
}
 
int Count (int c,int mas[]) {
    for (int i=0;i<31; i++) {
        if (mas[i]==1) {c++;}
    }
    return c;
}
 
int main()
{
   int x,n,a,b,c,i;
   int mas[32];
 
   ClearArray(mas);
   printf ("Vvedite chislo: \n");
   scanf("%i",&n);
   GetBit(n,mas); 
   printf ("Chislo v dvoichnom vide:\n");
 
   for (i=0;i<n;i++){
     printf ("%i",mas[i]);
     }
 
   printf ("Kolichestvo nenulevih razrjadov\n");
   printf ("%i",&c);
   
        while (!kbhit());
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 01:17
Ответы с готовыми решениями:

Мусор в массиве
Cчитываю значения из файла с помощью метода класса All в массив xlim void...

Мусор в массиве
Не могу понять в чем проблема, выводит мусор при компиляции в массивах name,...

Мусор в массиве символов
Есть класс, который при создании принимает текстовый массив, который будет...

Мусор в строковом статическом массиве C++
Если строковый статический массив заполнить \0, а потом вводить символы,...

Мусор в массиве после использования malloc и memcpy
Здравствуйте! Столкнулся со следующей проблемой. Подробнее в коде: #define...

21
korep
52 / 45 / 18
Регистрация: 06.01.2013
Сообщений: 612
16.01.2014, 01:41 2
массив создайте динамическим и перед каждым добавлением доюовляйте элемент

Добавлено через 51 секунду
тогда у вас весь в массиве не останется пустых элементов, которые выдает непонято что.
0
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
16.01.2014, 01:46  [ТС] 3
Цитата Сообщение от korep Посмотреть сообщение
массив создайте динамическим и перед каждым добавлением доюовляйте элемент

Добавлено через 51 секунду
тогда у вас весь в массиве не останется пустых элементов, которые выдает непонято что.
Не могли бы поточнее указать на ошибку и её решение, потому что я уже совсем запутался.
0
korep
52 / 45 / 18
Регистрация: 06.01.2013
Сообщений: 612
16.01.2014, 01:53 4
Даже проще вектора.
Объявление: vector<int> array;
Добавление push_back(value);
Выбор элемента at(i);
Header #include <vector.h> или в кавычках
0
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
16.01.2014, 01:56 5
Цитата Сообщение от korep Посмотреть сообщение
Header #include <vector.h> или в кавычках
просто
C++
1
#include<vector>
0
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
16.01.2014, 01:56  [ТС] 6
Цитата Сообщение от korep Посмотреть сообщение
Даже проще вектора.
Объявление: vector<int> array;
Добавление push_back(value);
Выбор элемента at(i);
Header #include <vector.h> или в кавычках
а куда мне нужно разместить этот вектор ?
0
korep
52 / 45 / 18
Регистрация: 06.01.2013
Сообщений: 612
16.01.2014, 02:00 7
Использовать вместо массивов. Количество записанных элементов там выдает count()

Добавлено через 1 минуту
Очистить список clear, в результате Вы сможете уменьшить и упростить код.
0
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
16.01.2014, 02:02  [ТС] 8
Цитата Сообщение от korep Посмотреть сообщение
Использовать вместо массивов. Количество записанных элементов там выдает count()

Добавлено через 1 минуту
Очистить список clear, в результате Вы сможете уменьшить и упростить код.
hm... Я извиняюсь, но не могли бы вы исправить мой код, на ваш вариант ?
0
korep
52 / 45 / 18
Регистрация: 06.01.2013
Сообщений: 612
16.01.2014, 02:02 9
Но в функцию надо будет передавать ссылку на вектор.
0
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
16.01.2014, 02:03 10
Цитата Сообщение от korep Посмотреть сообщение
Использовать вместо массивов. Количество записанных элементов там выдает count()
C++
1
vec.size();
0
korep
52 / 45 / 18
Регистрация: 06.01.2013
Сообщений: 612
16.01.2014, 02:05 11
Там есть функция count это один из плюсов по отношению к динамическим массивами.
0
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
16.01.2014, 02:08  [ТС] 12
так, теперь я окончательно запутался.
0
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
16.01.2014, 02:08 13
korep, В vector нет функции count!!!
0
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
16.01.2014, 02:16  [ТС] 14
Цитата Сообщение от cooller_94 Посмотреть сообщение
korep, В vector нет функции count!!!
Не могли бы вы исправить мой код ? а то, я совсем запутался и не могу найти ошибку
0
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
16.01.2014, 02:24 15
clown_exe, Могу написать на С++
0
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
16.01.2014, 02:28  [ТС] 16
Цитата Сообщение от cooller_94 Посмотреть сообщение
clown_exe, Могу написать на С++
Мне и нужно на С++, буду очень благодарен
0
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
16.01.2014, 02:39 17
clown_exe, держи
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
#include "stdafx.h"
#include<iostream>
#include<cmath>
 
int Binary(int number)
{
    int i, b;  
    long c = 0;  
    for(i=0;number > 0;i++)  
    {
        b = number % 2;  
        number = (number-b)/2;
        c += b * pow(10,(double)i);
    }
    return c;
}
 
int Discharge(int n)
{
    int kol = 0;
    while(n>0)
    {
        if(n%10 == 1)
            kol++;
        n/=10;
    }
    return kol;
}
 
 
int main()
{
    int N;
    std::cout<<"Input number:";
    std::cin>>N;
    std::cout<<"Number in binary form:"<<Binary(N);
    std::cout<<"\nKol = "<<Discharge(Binary(N));
    
 
    system("pause");
  return 0;
}
0
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
16.01.2014, 02:47  [ТС] 18
Цитата Сообщение от cooller_94 Посмотреть сообщение
c += b * pow(10,(double)i);
можете объяснить эту строку ?

Добавлено через 5 минут
Цитата Сообщение от cooller_94 Посмотреть сообщение
std::cout<<"Input number:";
* * std::cin>>N;
* * std::cout<<"Number in binary form:"<<Binary(N);
* * std::cout<<"\nKol = "<<Discharge(Binary(N));
И что значит std , а то я ещё умею "писать" только с помощью Printf - Scanf
0
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
16.01.2014, 03:24 19
clown_exe, завтра переделаю по понятному, я офф

Добавлено через 10 минут
clown_exe,
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
#include "stdafx.h"
#include<iostream>
#include<cmath>
#include <conio.h>
 
 
 
int Discharge(int n)
{
    int kol = 0;
    while(n>0)
    {
        if(n%10 == 1)
            kol++;
        n/=10;
    }
    return kol;
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int N;
    char a[33];
    printf("Введите число:");
    scanf ("%d",&N);
    printf("Число в двоичном виде = %s\n",ltoa(N,a,2));
    printf("Количество = %d\n",Discharge(atoi(ltoa(N,a,2))));   
 
    system("pause");
    return 0;
}
1
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
16.01.2014, 11:10 20
Цитата Сообщение от cooller_94 Посмотреть сообщение
Цитата Сообщение от korep Посмотреть сообщение
Header #include <vector.h> или в кавычках
просто
C++
1
#include<vector>
В старых компиляторах с .h.

Цитата Сообщение от cooller_94 Посмотреть сообщение
#include "stdafx.h"
Студийные заголовки тоже не всем нужны.
0
16.01.2014, 11:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2014, 11:10

Мусор
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #define n 10 int main() { int...

Мусор в строках
Привет всем!!! Я пишу помехоустойчивый декодер Витерби. Имеется граф 4x32. ...

Мусор в переменной
Здравствуйте, есть следующий фрагмент кода: void main() {...


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

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

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