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

муниципальная олимпиада. Странный output - C++

Восстановить пароль Регистрация
 
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
12.10.2011, 11:47     муниципальная олимпиада. Странный output #1
http://informatics.mccme.ru/moodle/m...hapterid=720#1 - сама задача
код:
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>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
    vector<int> number;
    int lolka;
    cin>>lolka;
    int c=1;
    while(lolka/pow(10.0,double(c))!=0)
        ++c;
    int b=c;
    do
    {
              number.push_back(lolka%10);
        lolka/=10;
        --b;
    }while(b!=0);
    sort(number.begin(),number.end());
    int d=0;
    while(number[d]!=0)
        ++d;
    int e=d;
    for(d;d<c+e;d++)
        cout<<number[d];
    return 0;
}
вывод на 1513:
0000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000001135

почему так и как исправить на AC?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2011, 11:47     муниципальная олимпиада. Странный output
Посмотрите здесь:

C++ Олимпиада 1999г.
Очень срочно!!!!! Олимпиада!!!! C++
Олимпиада C++
Олимпиада по программированию C++
как сделать в MS VS 2010 express output не в консоль в output windows C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.10.2011, 12:01     муниципальная олимпиада. Странный output #2
Я так делал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>
#include <algorithm>
#include <functional>
int main()
{
    std::string str;
    std::cin >> str;
    std::sort(str.begin(), str.end(), std::less<int>());
    if (str[0] == '0') // если в начале числа нуль
    {
        const std::string::iterator it = std::find_if(str.begin(), str.end(), // находим первое число, не равное нулю
                std::bind2nd(std::not_equal_to<char>(), '0') );
        if (it != str.end() ) 
            std::swap(*str.begin(), *it); //и меняем его местами с первым нулем
    }
    std::cout << str << ' ';
}
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
12.10.2011, 13:17     муниципальная олимпиада. Странный output #3
Hi4ko, проблема в том, что в строке
C++
1
 while(lolka/pow(10.0,double(c))!=0)
ты пытаешься выполнить нецелочисленное деление, соответственно, этот цикл не останавливает работу, когда получено дробное число 0.1513, а работает и дальше (0,01513!=0, 0,001513!=0 и т.д.). Для проверки можешь запустить пошагово и посмотреть на значение с. Соответственно в вектор ты пишешь все эти лишние нули, обрезанные до целого, вот и получается такая куча нулей

P.S. Зачем тебе STL, если ты не пользуешься его средствами, например, работаешь с вектором как с массивом - по индексу, а не по итератору?
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
12.10.2011, 16:27  [ТС]     муниципальная олимпиада. Странный output #4
Цитата Сообщение от aeshes Посмотреть сообщение
Hi4ko, проблема в том, что в строке
C++
1
 while(lolka/pow(10.0,double(c))!=0)
ты пытаешься выполнить нецелочисленное деление, соответственно, этот цикл не останавливает работу, когда получено дробное число 0.1513, а работает и дальше (0,01513!=0, 0,001513!=0 и т.д.). Для проверки можешь запустить пошагово и посмотреть на значение с. Соответственно в вектор ты пишешь все эти лишние нули, обрезанные до целого, вот и получается такая куча нулей

P.S. Зачем тебе STL, если ты не пользуешься его средствами, например, работаешь с вектором как с массивом - по индексу, а не по итератору?
Видимо да, нафига STL здесь)
спасибо)
Yandex
Объявления
12.10.2011, 16:27     муниципальная олимпиада. Странный output
Ответ Создать тему
Опции темы

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