Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.89
Jumper19
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
#1

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

23.06.2011, 22:28. Просмотров 5092. Ответов 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 - C++
Разделить число m на две части, разность которых равна 5. Помогите с кодом пожалуйста.

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

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

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

C++ разделить исходник на части - C++
вопрос новичка посоветуйте, как это можно сделать (ни разу не делал) есть файл 1.cpp в котором много повторяющегося кода для...

Разделить строки на мелкие части - C++
Помогите реализовать такую вещь: Пользователь вводит слова через запятую (one,two,three,four,five,six), программа же записывает каждое...

35
JeyKip
53 / 45 / 2
Регистрация: 23.06.2011
Сообщений: 122
23.06.2011, 22:55 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
using namespace std;
 
void main()
{
    int a,b,c;
    c=455234;
           //т.к. присваивается в int, то остаток автоматом отбрасывается
    a = c/1000;
           //просто берешь остаток от деления. Получается вторая часть 6-значного числа
    b = c%1000;
    cout<<"a = "<<a<<"\nb = "<<b<<"\n";
    getch();
}
0
Jumper19
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
23.06.2011, 23:07  [ТС] #3
ладно так у меня не проканало...
возможно ли char переобразовать в int?
ну типа в char есть чило 219 нужно его записать в int
0
grizlik78
Эксперт С++
1971 / 1464 / 122
Регистрация: 29.05.2011
Сообщений: 3,029
23.06.2011, 23:11 #4
Тот же вариант, что и выше, только с использованием функции.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int a,b,c;
    div_t ab;
    c = 455234;
    ab = div(c, 1000);
    a = ab.quot;
    b = ab.rem;
    printf("a = %d\nb = %d\n", a, b);
    return 0;
}
Цитата Сообщение от Jumper19 Посмотреть сообщение
ладно так у меня не проканало...
Почему не проканало?

Цитата Сообщение от Jumper19 Посмотреть сообщение
возможно ли char переобразовать в int?
ну типа в char есть число 219 нужно его записать в int
Бери да записывай. Или под char понимается строка?
0
Jumper19
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
23.06.2011, 23:23  [ТС] #5
char типа как массив
char x[100]
и каждый елемент массива 1 символ
0
grizlik78
Эксперт С++
1971 / 1464 / 122
Регистрация: 29.05.2011
Сообщений: 3,029
23.06.2011, 23:29 #6
Ну то есть строка, скорее всего.
Тогда atoi в помощь.
C
1
int c = atoi("219");
Добавлено через 2 минуты
правда null-terminated строка отличается от просто массива символов тем, что данные завершаются символом '\0'
0
Jumper19
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
23.06.2011, 23:58  [ТС] #7
блин чтото ничего не получается!
помогите мне решить:
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
24.06.2011, 02:16 #8
дык если за тебя решат, в чём понт?

пс: char[] тут нафиг не нужен, к тому же указано гарантированно количество цифр (6)

в функцию передаешь 2 числа (val/1000,val%1000);
возвращаешь bool

в функции стандартно разбераешь число по цифрам и суммируешь.
0
grizlik78
Эксперт С++
1971 / 1464 / 122
Регистрация: 29.05.2011
Сообщений: 3,029
24.06.2011, 04:24 #9
OstapBender, на самом деле можно и char[] заиспользовать. Мне вот что-то интересно стало, что использовали составители программ короче 180 символов?
Чёт бился-бился, а так и не удалось ужать короче 212 непробельных символов, так чтобы программа оставалась синтаксически корректной. Да и то ценой неуказания типа main, на что GCC выдаёт предупреждение. А так и вовсе 215 получится. Эх...

Добавлено через 6 минут
Хотя вот заголовок cstdio при подключённом fstream оказался не нужен. Не знаю, можно ли на это рассчитывать. Но теперь получается 196 (199).
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.06.2011, 07:39 #10
Цитата Сообщение от grizlik78 Посмотреть сообщение
OstapBender, на самом деле можно и char[] заиспользовать. Мне вот что-то интересно стало, что использовали составители программ короче 180 символов?
Чёт бился-бился, а так и не удалось ужать короче 212 непробельных символов, так чтобы программа оставалась синтаксически корректной. Да и то ценой неуказания типа main, на что GCC выдаёт предупреждение. А так и вовсе 215 получится. Эх...

Добавлено через 6 минут
Хотя вот заголовок cstdio при подключённом fstream оказался не нужен. Не знаю, можно ли на это рассчитывать. Но теперь получается 196 (199).
А я попал в топ =) Только выдирать свое решение из топа не стал, тем более что понятно в нем чуть более, чем ничего. Вот первоначальный вариант, нашел на убитом разделе с виндой, писал месяца 3 назад =)
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
#include <iostream>
using namespace std;
main(){
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    int a,b,c,d,i,r1,l1,r2,l2,j;
    cin >> b;
    for (j = 0; j < b; j++) {
        cin >> a;
        c=a;
        a++;
        r1=0;
        for (i = 0; i < 3; i++)  {
            d=a%10;
            a/=10;
            r1+=d;
        }
        l1=0;
        for (i = 0; i < 3; i++) {
            d=a%10;
            a/=10;
            l1+=d;
        }
        c--;
        r2=0;
        for (i = 0; i < 3; i++)  {
            d=c%10;
            c/=10;
            r2+=d;
        }
        l2=0;
        for (i = 0; i < 3; i++) {
            d=c%10;
            c/=10;
            l2+=d;
 
        }
        if ((l1==r1)||(l2==r2)) cout << "Yes" << endl; else cout << "No" << endl;
    }
 
    return 0;
 
}
P.S. Но как меньше 180 символов сделать - для меня тоже загадка. Лунев вообще читер, он почти во всех задачах топ1.

Добавлено через 1 час 24 минуты
Впрочем, у меня только 3е место (204 символа), поэтому выкладываю. Просьба не сдавать этот исходник =)
C++
1
2
3
4
5
6
7
8
9
10
11
12
#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");
    std::ofstream o("output.txt");
    for (v >> c; v >> a; o << (l == r?"Yes ":"No ")){
        c = a--+1;
        x(c)
        if ( l != r) x(a)
    }
}
Добавлено через 4 минуты
Впрочем, я еще на 5 символов сжал (теперь 199), так что можете сдавать, только это останется на вашей совести =)
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,385
Записей в блоге: 2
Завершенные тесты: 1
24.06.2011, 14:07 #11
Расскажите как у вас там символы считаются? А то мне интересно стало, на 190 (с пробелами и пр.) написал))
0
grizlik78
Эксперт С++
1971 / 1464 / 122
Регистрация: 29.05.2011
Сообщений: 3,029
24.06.2011, 14:11 #12
А просто выкидываются абсолютно все пробелы и переводы строки, если я правильно понял
190 с пробелами — это круто. Ты тоже читер! Моя без пробелов только 195 смог.
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.06.2011, 14:11 #13
Цитата Сообщение от Kastaneda Посмотреть сообщение
Расскажите как у вас там символы считаются? А то мне интересно стало, на 190 (с пробелами и пр.) написал))
Просто все символы с учетом комментариев и без учета пробелов, символов табуляции и ентеров.
P.S. вы оба читеры, я только до 199 догнал, при этом использовал дикий быдлокод... Зарегайтесь и киньте туда срр файл. А то ведь еще не факт, что правильно решили =)
0
Jumper19
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
24.06.2011, 14:21  [ТС] #14
спасибо,
да мне не главное сдать было а разобраться...

еще раз спасибо
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,385
Записей в блоге: 2
Завершенные тесты: 1
24.06.2011, 14:26 #15

Не по теме:

А там вот когда задачу сдаешь, написанно Waiting, это на долго? А то я минуты 3-4 уже Waiting ))



Добавлено через 4 минуты

Не по теме:

Дождался, написали "Товарисч, вы тупанули с выводом"

0
24.06.2011, 14:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2011, 14:26
Привет! Вот еще темы с ответами:

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

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

Разделить массив на две части - C++
Помогите решить адачку очень срочно надо Разделить массив на две части, поместив в первую элементы, большие среднего...

Разделить строку на две части - C++
дана задача.есть переменная char = россия. надо разделить её на две части так,чтобы получилось что a = рос,b=сия


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

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

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