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

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

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

Мусор в массиве - C++

16.01.2014, 01:17. Просмотров 921. Ответов 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++):

Мусор в массиве - C++
Cчитываю значения из файла с помощью метода класса All в массив xlim void All :: InputLim() { ifstream f; f.open(&quot;2.txt&quot;,...

Мусор в массиве - C++
Не могу понять в чем проблема, выводит мусор при компиляции в массивах name, avtor, izdat. Так же крашит при попытке ввода. #include...

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

Мусор в массиве после использования malloc и memcpy - C++
Здравствуйте! Столкнулся со следующей проблемой. Подробнее в коде: #define BLOCK_SIZE = 16 ... unsigned int BlocksCount; ...

Мусор - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #define n 10 int main() { int a,b,i,q; scanf(&quot;%i&quot;,&amp;q); for(i=0;i&lt;q;i++) ...

Мусор в строках - C++
Привет всем!!! Я пишу помехоустойчивый декодер Витерби. Имеется граф 4x32. struct graf { int rebro0; int rebro1; ...

21
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
16.01.2014, 02:28  [ТС] #16
Цитата Сообщение от cooller_94 Посмотреть сообщение
clown_exe, Могу написать на С++
Мне и нужно на С++, буду очень благодарен
0
cooller
565 / 533 / 120
Регистрация: 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 / 120
Регистрация: 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
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 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
Alex5
1056 / 720 / 108
Регистрация: 12.04.2010
Сообщений: 1,847
16.01.2014, 12:51 #21
1) Диапазон переменной в цикле
C++
1
2
3
for (int i=0;i<32; i++) { /* в массиве 32 элемента,  i : 0, 1, 2, ... 30, 31  */
  // ... 
}
2) Перед началом цикла зададим начальное значение переменной c:
C++
1
2
3
4
5
6
7
8
9
int Count (int mas[]) {
 
    int c = 0;  /* начальное значение  */
 
    for (int i=0;i<32; i++) {
        if (mas[i]==1) {c++;}
    }
    return c;
}
3) В функцию main() добавим вызов функции Count().
C++
1
2
3
4
5
6
   // ...
   c = Count ( mas ); 
   printf ("\n\nKolichestvo nenulevih razrjadov\n");
   //printf ("Kolichestvo nenulevih razrjadov\n");
   printf ("%i",c);  /* вывод значения c */
   //printf ("%i",&c);  // &c - адрес переменной c
0
Alex5
1056 / 720 / 108
Регистрация: 12.04.2010
Сообщений: 1,847
16.01.2014, 13:40 #22
Цитата Сообщение от cooller_94 Посмотреть сообщение
C++
1
2
printf("Число в двоичном виде = %s\n",ltoa(N,a,2));
 printf("Количество = %d\n",Discharge(atoi(ltoa(N,a,2))));
cooller_94, 7 переводим в 111;
500 превращается 111110100.
А что если N > 1024 ? См.рис.
0
Миниатюры
Мусор в массиве  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2014, 13:40
Привет! Вот еще темы с ответами:

Мусор в консоли - C++
Ищу подстроку в строке и забиваю её в массив, в итоге в последнем cout выводится не то, что нужно: вместо &quot;ло в бою, очень ло&quot; выводится...

Мусор в файлах - C++
В файлы попадает какой-то мусор, в чём ошибка? #include &lt;iostream.h&gt; #include &lt;fstream.h&gt; #include &lt;string.h&gt; #include...

Мусор в переменной - C++
Здравствуйте, есть следующий фрагмент кода: void main() { setlocale(LC_ALL,&quot;&quot;); srand(time(NULL)); const int ar = 10; int...

Мусор в строке - C++
Добрый вечер, есть функция которая принимает строку типа char*, когда я передаю этой функции строку вида &quot;C:/SDL/Maps/1.area&quot;, вместо этой...


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

Или воспользуйтесь поиском по форуму:
22
Yandex
Объявления
16.01.2014, 13:40
Ответ Создать тему
Опции темы

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