Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.89
Jumper19
13 / 13 / 4
Регистрация: 27.12.2010
Сообщений: 83
#1

разделить число на 2 части - C++

23.06.2011, 22:28. Просмотров 5592. Ответов 35
Метки нет (Все метки)

как разделить число на 2 части
вот у меня есть число в int :
445219

Я точно знаю что у меня с 6 чисел... и как мне разделить их в 2 int по 3 числа
ну чтобы типа вот так:
C++
1
2
3
4
int x=445219
 
y=445
z=219
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2011, 22:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос разделить число на 2 части (C++):

Разделить число m на две части, разность которых равна 5
Разделить число m на две части, разность которых равна 5. Помогите с кодом...

Разделить дробное число на 2 части: целая часть числа и его дробная часть
Пользователь вводит с клавиатуры сумму в валюте (дробное число). Вывести по...

Разделить строку на части
Доброго времени суток. Имеется строка: char *pBuf=new char; заполняется...

Разделить массив на 4 части
Прошу прощения за глупую просьбу, подскажите пожалуйста как разбить массив...

C++ разделить исходник на части
вопрос новичка посоветуйте, как это можно сделать (ни разу не делал) есть...

Разделить массив на две части
Помогите решить адачку очень срочно надо Разделить массив на две части,...

35
grizlik78
Эксперт С++
1983 / 1476 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
24.06.2011, 15:24 #21
Цитата Сообщение от easybudda Посмотреть сообщение
а чё мудрить-то? Сумма трёх последних цифр должна быть либо больше суммы трёх последних на единицу, либо больше. Не?
В исходном файле как-раз гарантируется, что все номера именно такие. То есть суммы в левой и правой частях отличаются на единицу. Тогда бы надо было тупо выводить "Yes"
0
Daemon025
380 / 328 / 159
Регистрация: 06.12.2010
Сообщений: 894
24.06.2011, 15:42 #22
вообще, когда топ составляется по кол-ву символов ..... - это глуппо
Код
ID	Дата	Автор	Язык	Время	Память	Размер
1	15.04.2010 3:57:38	Лунёв Антон	C++	0,335	760 Кб	169
2	12.03.2010 6:01:17	Jackowski Andrzej	C++	0,054	716 Кб	175
стоит лишь сравнить время...
0
grizlik78
Эксперт С++
1983 / 1476 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
24.06.2011, 15:45 #23
Daemon025, там ещё одна-глупость. В моей версии, например, довольно много пробелов и переносов строк, которые нельзя убирать
Но топ этот — просто забавы ради, как мне кажется
0
Daemon025
380 / 328 / 159
Регистрация: 06.12.2010
Сообщений: 894
24.06.2011, 15:48 #24
grizlik78, лучше бы в первую очередб учитывалось бы следущее:
Код
Время	Память
0
Kastaneda
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 2
Завершенные тесты: 1
24.06.2011, 16:02 #25
Цитата Сообщение от grizlik78 Посмотреть сообщение
В исходном файле как-раз гарантируется, что все номера именно такие. То есть суммы в левой и правой частях отличаются на единицу. Тогда бы надо было тупо выводить "Yes"
Что то я задание не догнал... А что тогда нужно?

Добавлено через 2 минуты
Лучше б там сухим математическим языком объясняли суть задания, чем этот полет фантазии, где даже условие уловить сложно.
0
grizlik78
Эксперт С++
1983 / 1476 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
24.06.2011, 16:04 #26
Нужно проверить, является ли счастливым предыдущий или следующий билет для заданного номера билета.
Там ведь даже тестовый пример есть.
445219 не подходит, так как следующий (445220) и предыдущий (445218) счастливыми не являются, хотя в исходном суммы (13 и 12) отличаются на всего 1.
1
Kastaneda
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 2
Завершенные тесты: 1
24.06.2011, 16:48 #27
Нда, а я не то написал... Ну да ладно, могу подсказать diagon'у вот что:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
#define x(z) for ( i = l = r = 0; z; z /= 10)     (i++ < 3  ? r : l) += z % 10;
int c, a,  l, r, i;
main(){
    std::fstream v("input.txt"),o("output.txt");
    for (v >> c; v >> a; o << (l == r?"Yes ":"No ")){
        c = a--+1;
        x(c)
        if ( l != r) x(a)
    }
}
Короче на 12 символов))
0
grizlik78
Эксперт С++
1983 / 1476 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
24.06.2011, 16:55 #28
C++
1
std::fstream v("input.txt"),o("output.txt");
Так запись в файл пойдёт только если файл уже существует. Отсылать так не пробовал, но думаю, что не прокатит.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.06.2011, 16:58 #29
Цитата Сообщение от Kastaneda Посмотреть сообщение
Нда, а я не то написал... Ну да ладно, могу подсказать diagon'у вот что:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
#define x(z) for ( i = l = r = 0; z; z /= 10)     (i++ < 3  ? r : l) += z % 10;
int c, a,  l, r, i;
main(){
    std::fstream v("input.txt"),o("output.txt");
    for (v >> c; v >> a; o << (l == r?"Yes ":"No ")){
        c = a--+1;
        x(c)
        if ( l != r) x(a)
    }
}
Короче на 12 символов))
Если бы это работало.. Там output.txt вообще нету=)
Могу несколько читов для си подсказать, когда инэт заработает
0
Kastaneda
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 2
Завершенные тесты: 1
24.06.2011, 17:04 #30
C++
1
if ( l != r) x(a)
можно так
C++
1
if ( l - r) x(a)
-1 символ)

еще
C++
1
(l == r?"Yes ":"No ")
записываем так
C++
1
(l - r?"No ":"Yes ")
еще символ))

Добавлено через 4 минуты
Могу несколько читов для си подсказать,
Всмысле для того сайта? Да мне не надо) Просто решил заморочиться по поводу кол-ва символов, спортивный интерес )
1
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.06.2011, 11:21 #31
Ну читы с этим и связаны =)
Если пользоваться не fstream, а сишными библиотеками, то есть способы сократить код.
Чит первый:
C++
1
2
3
4
5
6
7
8
9
#include <map>
//or
#include <set>
int main(){
    char a[20], *b;
    scanf("%s",a);
    puts(strcpy(b = new char[strlen(a)+1], a));
    return EXIT_SUCCESS;
}
MSVS считает этот код абсолютно корректным(имеются в виду хедеры).
Второй чит:
Можно использовать макрос на freopen
C++
1
#define x(b) freopen(#b"put.txt","a+",std##b);
И писать соответственно x(in), x(out)
Чит третий:
Необязательно использовать переводы строк, можно выводить просто через пробел. В данной задаче это экономит 4 символа.
По поводу того, что лучше сделать критерием не количество кода, а скорость или память. Это утопия - если по скорости, то все будут делать через прекалк, и скорость будет стремится к нулю. По памяти - считывать посимвольно. Да и толку с этого... В качестве обучения лучше подходит именно количество символов. Заставляет экспериментировать и лучше понимать язык.
0
grizlik78
Эксперт С++
1983 / 1476 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
25.06.2011, 13:46 #32
Дожал-таки я этого двоечника. 147. Я мегачитер!
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.06.2011, 13:57 #33
Цитата Сообщение от grizlik78 Посмотреть сообщение
Дожал-таки я этого двоечника. 147. Я мегачитер!
о_О
WT@?
Это что-то вроде
C++
1
2
3
4
5
#include <cheat>
#include <fstream>
main(){
   std::ofstream("output.txt") << cheat::acmp::putAnswer();
}
0
grizlik78
Эксперт С++
1983 / 1476 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
25.06.2011, 14:01 #34
Примерно. На самом деле, читами удалось убрать только 7 символов. Первые три — это неуказание типа main, ну а ещё четыре это пробел вместо \n.
Но у меня изначально был только один цикл, тот что по файлу. Внутри никаких больше циклов, только целочисленная арифметика, в соответствии с названием раздела. В первой версии использовался sprintf, но потом оказалось, что кроме чисел вообще ничего больше не надо.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.06.2011, 14:09 #35
Цитата Сообщение от grizlik78 Посмотреть сообщение
Примерно. На самом деле, читами удалось убрать только 7 символов. Первые три — это неуказание типа main, ну а ещё четыре это пробел вместо \n.
Но у меня изначально был только один цикл, тот что по файлу. Внутри никаких больше циклов, только целочисленная арифметика, в соответствии с названием раздела. В первой версии использовался sprintf, но потом оказалось, что кроме чисел вообще ничего больше не надо.
Хм... Т.е. получается, что это чистая арифметика.
А можно узнать, какой-ввод вывод использовался? Есть у меня страшное подозрение, что есть что-то короче fstream'a
0
grizlik78
Эксперт С++
1983 / 1476 / 191
Регистрация: 29.05.2011
Сообщений: 3,048
25.06.2011, 14:11 #36
Нет, обёртка у нас полностью совпадает, только названия переменных разные
fstream и ofstream.
1
25.06.2011, 14:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2011, 14:11
Привет! Вот еще темы с решениями:

Разделить строку на две части
дана задача.есть переменная char = россия. надо разделить её на две части...

Разделить строку на две части
По индивидуальному заданию создать функцию для обработки символьных строк. За...

Разделить массив на две части
Помогите с решением задачи. Условие вот такое &quot;дан массив целых чисел, лежащих...

Разделить строки на мелкие части
Помогите реализовать такую вещь: Пользователь вводит слова через запятую...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Опции темы

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