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

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

Восстановить пароль Регистрация
 
 
clown_exe
0 / 0 / 0
Регистрация: 16.01.2014
Сообщений: 20
16.01.2014, 01:17     Мусор в массиве #1
Задание: Подсчитать количество ненулевых разрядов в двоичной записи заданного натурального числа.
Например в числе 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 01:17     Мусор в массиве
Посмотрите здесь:

BitBlt выкидывает мусор C++
C++ Мусор в строках
C++ Мусор в файлах
Структура выводит мусор C++
Мусор C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2014, 13:40     Мусор в массиве
Еще ссылки по теме:

C++ Мусор в строке
Мусор в переменной C++
Мусор и оператор new C++

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

Или воспользуйтесь поиском по форуму:
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
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 ? См.рис.
Миниатюры
Мусор в массиве  
Yandex
Объявления
16.01.2014, 13:40     Мусор в массиве
Ответ Создать тему
Опции темы

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