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

Подскажите что не так? - C++

Восстановить пароль Регистрация
 
NeRRouZ
 Аватар для NeRRouZ
4 / 4 / 0
Регистрация: 19.12.2010
Сообщений: 54
13.04.2011, 17:32     Подскажите что не так? #1
Нужно заменить цифры в числе на ноль, если цифра равна "a". А затем вывести получившееся число.
число N - натуральное, а - является цифрой (от 0 до 9).
например N = 12223 a = 2
должно получится 10003

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
#include <iostream>
using namespace std;
 
int main()
{
    int n;
    int a;
    int i;
    int m = 0;
    int r;
    int k=0;
    int b[10];
    
    cout << "N= "; cin>>n;
    cout<< "a= ";cin>>a;
    
    while (n > 0)
    {
          r = n % 10;
          if (r == a) r = 0;
          b[k] = r;
          k++;
          n/=10;
    }
    for (i = k; i>=0; i--)
    cout << b[i];
    system ("pause");
 return 0;   
}
перед правильным числом, выводит какой-то "мусор", как от него избавится???
Миниатюры
Подскажите что не так?  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2011, 17:32     Подскажите что не так?
Посмотрите здесь:

Подскажите, что не так? C++
C++ Подскажите что не так ?
C++ Подскажите пожалуйста, что не так
Фигуры, которые разбивают плоскость на области C++
C++ Подскажите что я не так делаю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
13.04.2011, 17:52     Подскажите что не так? #2
Цитата Сообщение от NeRRouZ Посмотреть сообщение
for (i = k; i>=0; i--)
заменить на:
C++
1
for (i = k-1; i>=0; i--)
NeRRouZ
 Аватар для NeRRouZ
4 / 4 / 0
Регистрация: 19.12.2010
Сообщений: 54
13.04.2011, 18:00  [ТС]     Подскажите что не так? #3
Пасиба,
я тута еще сделал через <vector> стало норм выводить)))
IrineK
Заблокирован
13.04.2011, 18:55     Подскажите что не так? #4
Вариация на тему:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
 
int main()
{   string N;
    int a, i;
    cout<<"N = ";
    cin>>N;
    cout<<"a = ";
    cin>>a;
    
    for(i=0;i<N.length();i++)
        if(N[i]-'0'== a) N[i]='0';
 
    cout<<"No= "<<N<<"\n";
 
    cin.sync(); cin.get();
    return 0;
}
Миниатюры
Подскажите что не так?  
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
13.04.2011, 19:08     Подскажите что не так? #5
Еще вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <boost/lexical_cast.hpp>
#include <algorithm>
#include <string>
 
int main(){
  int num, a;
  std::cin >> num >> a;
  std::string s_num = boost::lexical_cast<std::string>(num);
  std::replace(s_num.begin(), s_num.end(), boost::lexical_cast<char>(a), '0');
  std::cout << s_num;
  return 0;
}
Yandex
Объявления
13.04.2011, 19:08     Подскажите что не так?
Ответ Создать тему
Опции темы

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