Другое > Hard'n'Soft
Програмирование на C++
<< < (2/25) > >>
gepar:

--- Цитата: AjaxVS ---пипец, а если надо было бы юзать 100 функций из std, он бы все их с using упоминал?
--- Конец цитаты ---
Это он чтобы прокомментить можно было сразу при надобности ну и чтобы показать что мы будем использовать от каждой из подключаемых директив в текущей программе. Имхо так нагляднее так что всё автор правильно делает. Я сам потом просто пишу using namespace std и всё.
И всё же что за "прекомпилированный заголовок" кто-нибудь знает?  :)
DeniSS:

--- Цитата: gepar от 24 Январь 2011, 00:33:40 ---И всё же что за "прекомпилированный заголовок" кто-нибудь знает?  :)

--- Конец цитаты ---
Google it!
Вот же. Учитывая сложность твоего проекта, это дело можно выключить  ;)
gepar:
Маленькая задачка: разбить число на цифры. Я это ещё на паскале не любил, но тут в книженции это задание мне даётся с расчётом что я не буду пользоваться массивом, на а строчкой символов пользоваться как-то глупо в этом случае. Тогда как это можно решить? Количество цифр заранее неизвестно.

--- Код: ---//Выводит цифры из числа через пробел

# include <iostream>
# include <iomanip>

using namespace std;

void space (int);

int main()
{
    int x; // Число, цифры которого и нужно будет вывести
    cout<<"Enter x: ";
    cin>>x;
    space(x);
    return 0;
}

void space (int x)
{
    int a; // Счётчик для подсчёта цифр в числе
    int b=x; // Копия x нужная для  того чтобы сосчитать количество цифр в числе
    do
    {
        b/=10;
        a++;

    }while (b>0);

    for (int i=a; i>=1; i--)//Попытка вывести цифры из числа с пробелами
    {
        cout<<x%10<<" ";
        x/=10;
    }
}


--- Конец кода ---
DeniSS:
itoa, atoi не?
gepar:

--- Цитата: DeniSS ---itoa, atoi
--- Конец цитаты ---
FigPoimeshKudaKakoiCikl. Больше на шифровку шпиёну похоже  :) Не настолько я воспринимаю же на слово.
DeniSS:
Например
А вообще, надо дружить с мануалами. Я так вот почти всегда MSDN-овскую справку открытой держу - мало ли  ;)

Добавлено позже:
Дык а задание-то в каком контексте дано? Знание чего тебе должно помочь  разбирать числа на цифры?
gepar:
DeniSS, ну перечислять по пунктам что уже было в книге я не буду (долго же), но то что помогло бы в этом случае вроде массивов идёт чуточку дальше, ну а строки использовать имхо глупо. ТЕ: разрешено всё (в пределах разумного) кроме строк, массивов и подключения директив, которые используют эти строки и массивы для того чтобы разбить число на цифры.
Расшифруй что ты написал в прошлый раз, ты я вижу там предлагаешь какой-то цикл, но какой и куда его я без экстрасенсорных возможностей боюсь не догадаюсь.

Добавлено позже:
Ну а вообще это я так балуюсь, мне чисто интересно реально ли это сделать без строк и массивов :)
kamre:
Ни массивов, ни строк не использовано:

--- Код: ---#include <iostream>

void digits(int i)
{
  int j = i / 10;
  if (j != 0)
    digits(j);
  std::cout << i % 10 << " ";
}

int main()
{
  std::cout << "Number: ";
  int n;
  std::cin >> n;
  std::cout << "Digits: ";
  digits(n);
  return 0;
}

--- Конец кода ---
HardWareMan:

--- Цитата: kamre от 25 Январь 2011, 06:18:41 ---Ни массивов, ни строк не использовано:
--- Конец цитаты ---
Наглая ложь! Твой массив есть в стеке. Ибо рекурсия. :3
kamre:

--- Цитата: HardWareMan от 25 Январь 2011, 07:27:10 ---Твой массив есть в стеке.
--- Конец цитаты ---
И где же указатель на первый элемент этого "массива"? )


--- Цитата: HardWareMan от 25 Январь 2011, 07:27:10 ---Ибо рекурсия.
--- Конец цитаты ---
Ну для задачки с такими ограничениями в самый раз.
HardWareMan:

--- Цитата: kamre от 25 Январь 2011, 09:27:24 ---И где же указатель на первый элемент этого "массива"? )
--- Конец цитаты ---

--- Цитата ---#include <iostream>

void digits(int i)
{
  int j = i / 10;
  if (j != 0)
    digits(j); << Указатель на следующий элемент массива
  std::cout << i % 10 << " ";
}

int main()
{
  std::cout << "Number: ";
  int n;
  std::cin >> n;
  std::cout << "Digits: ";
  digits(n); << Указатель на первый элемент массива
  return 0;
}

--- Конец цитаты ---
Кто скажет что это не так - лично плюну в глаз. :3
gepar:
kamre, засчитывается :) Интересный алгоритм получился.
kamre:

--- Цитата: HardWareMan от 25 Январь 2011, 10:52:00 ---Кто скажет что это не так - лично плюну в глаз. :3

--- Конец цитаты ---

Прикрывая глаз, цитирую:

--- Цитата ---An array is a series of elements of the same type placed in contiguous memory locations that can be individually referenced by adding an index to a unique identifier.
--- Конец цитаты ---

А в моем примере все промежуточные значения находятся в локальных переменных, которые лежат в stack frames вперемешку с параметром функции и адресом возврата.
gepar:
Вопрос на засыпку номер 2: почему в c++ новые переменные изначально не равны 0, какая польза из того что в них случайные числа? Ведь это лишний повод сделать ошибку забыв обнулить счётчик например. В это же время статические (static) новые переменные обнулены.
HardWareMan:

--- Цитата: kamre от 25 Январь 2011, 14:43:55 ---Прикрывая глаз, цитирую:
А в моем примере все промежуточные значения находятся в локальных переменных, которые лежат в stack frames вперемешку с параметром функции и адресом возврата.
--- Конец цитаты ---
Да, а стэк является массивом байт памяти. А каждый твой стэкфрэйм (если разговариваем на русском, то лучше говорить "кадр") является одним законченным элементом типа "запись". Правда согласен, рандомный доступ к этому массиву записей имеет только супервизор задач. Ладно, отвлеклись. Так что воооот!
kamre:

--- Цитата: HardWareMan от 25 Январь 2011, 18:15:55 ---Да, а стэк является массивом байт памяти.
--- Конец цитаты ---
Тогда в компьютере все связанное с памятью "является массивом байт"  :lol:
MetalliC:
kamre, насчет стека оно так и есть, на нем динамически резервируется и потом освобождается некое количество данных, структура/размер которых определяется кол-вом аргументов функции и локальных динамических (не статик) переменных
BmpCorp:

--- Цитата: DeniSS ---А вообще, надо дружить с мануалами. Я так вот почти всегда MSDN-овскую справку открытой держу - мало ли 
--- Конец цитаты ---
Она для C++ и правда чем-то может помочь? А то, работая с C#, у меня сложилось впечатление, что она в любой задаче только всё затруднит :)
gepar:
Я тут посмотрел на вес скомпилированного exe файла маленькой программки по сортировке одномерного массива с 10 элементами типа int так вес у неё 565 кб (Хотя архивируется она до 104 кб, но это сейчас опустим). Вопрос: а чего так много-то ?   :? У программы же даже граф.интерфейса нет да и сама программа небольшая ведь.

Добавлено позже:
Хм, а скомпилированное через VS2010 приложение весит только 36 кб. Не думал что у них алгоритмы компиляции так сильно отличаются что даже вес настолько разные.
MetalliC:
gepar, не сравнивал в последнее время размеры, хотя тут при одинаковых проектах скорее дело в линковке, GCC(?) видимо более туповато линкует объектники и библиотеки, а VS выбирает только нужное из них.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии