Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/104: Рейтинг темы: голосов - 104, средняя оценка - 4.65
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
1

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

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

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

Я точно знаю что у меня с 6 чисел... и как мне разделить их в 2 int по 3 числа
ну чтобы типа вот так:
C++
1
2
3
4
int x=445219
 
y=445
z=219
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2011, 22:28
Ответы с готовыми решениями:

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

Разделить число с неизвестным (четным) количеством цифр на 2 части
здравствуйте! помогите пожалуйста. нужно написать программу которая разделит число с N...

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

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

35
58 / 50 / 16
Регистрация: 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
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
23.06.2011, 23:07  [ТС] 3
ладно так у меня не проканало...
возможно ли char переобразовать в int?
ну типа в char есть чило 219 нужно его записать в int
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
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
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
23.06.2011, 23:23  [ТС] 5
char типа как массив
char x[100]
и каждый елемент массива 1 символ
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
23.06.2011, 23:29 6
Ну то есть строка, скорее всего.
Тогда atoi в помощь.
C
1
int c = atoi("219");
Добавлено через 2 минуты
правда null-terminated строка отличается от просто массива символов тем, что данные завершаются символом '\0'
0
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
23.06.2011, 23:58  [ТС] 7
блин чтото ничего не получается!
помогите мне решить:
http://acmp.ru/?main=task&id_task=327
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
24.06.2011, 02:16 8
дык если за тебя решат, в чём понт?

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

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

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

Добавлено через 6 минут
Хотя вот заголовок cstdio при подключённом fstream оказался не нужен. Не знаю, можно ли на это рассчитывать. Но теперь получается 196 (199).
0
Higher
1953 / 1219 / 120
Регистрация: 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
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,116
Записей в блоге: 2
24.06.2011, 14:07 11
Расскажите как у вас там символы считаются? А то мне интересно стало, на 190 (с пробелами и пр.) написал))
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
24.06.2011, 14:11 12
А просто выкидываются абсолютно все пробелы и переводы строки, если я правильно понял
190 с пробелами — это круто. Ты тоже читер! Моя без пробелов только 195 смог.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.06.2011, 14:11 13
Цитата Сообщение от Kastaneda Посмотреть сообщение
Расскажите как у вас там символы считаются? А то мне интересно стало, на 190 (с пробелами и пр.) написал))
Просто все символы с учетом комментариев и без учета пробелов, символов табуляции и ентеров.
P.S. вы оба читеры, я только до 199 догнал, при этом использовал дикий быдлокод... Зарегайтесь и киньте туда срр файл. А то ведь еще не факт, что правильно решили =)
0
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
24.06.2011, 14:21  [ТС] 14
спасибо,
да мне не главное сдать было а разобраться...

еще раз спасибо
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,116
Записей в блоге: 2
24.06.2011, 14:26 15

Не по теме:

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



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

Не по теме:

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

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
24.06.2011, 14:51 16
185 вместе с пробелами
C
1
2
3
4
5
6
7
#include <stdio.h>
int main(void){
    char s[7] = {0};
    while ( scanf("%6s", s) == 1 )
        printf("%s\n", ( abs((s[3]+s[4]+s[5])-(s[0]+s[1]+s[2])) == 1 ) ? "YES" : "NO");
    return 0;
}
запускать
Код
prog < input.txt > output.txt
только первое число (количество тестов) из входного файла надо выкинуть, оно там ни за чем...
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
24.06.2011, 14:56 17
easybudda, во-первых, читать и писать с перенаправлением — это не спортивно. Там нет возможности влиять на запуск.
Во-вторых, разве эта программа решает поставленную задачу? (определить является ли счастливым следующий или предыдущий). Я запускать не пробовал

А тем временем мой код на 195 прошёл...
0
diagon
24.06.2011, 14:59
  #18

Не по теме:


easybudda, если б все так просто было... Нужно считать число, увеличить его, проверить, уменьшить на 2, проверить, и лишь затем выводить =) И ввод-вывод обязательно должен был из input.txt в outpu.txt + ответы должны разделятся, а не идти слитно.
И таки я уже на 4м месте... Как я пониманию, все используют div_t, которого я не знаю, и один я извращаюсь с быдлоциклами? -_-

0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
24.06.2011, 15:02 19
diagon, по-крайней мере я div_t и div не использовал.
А быдлокод и ко мне в код залез. Позволил сэкономить не помню точно уже, от 1 до 3 символов
Удивительно, как программа ради экономии 1 символа может превратиться из вполне читаемой в полный бред
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
24.06.2011, 15:22 20
Цитата Сообщение от diagon Посмотреть сообщение
если б все так просто было...
а чё мудрить-то? Сумма трёх последних цифр должна быть либо больше суммы трёх первых на единицу, либо больше. Не?

Хотя нет, там последняя цифра первой тройки должна быть на 1 больше/меньше последней цифры второй тройки, а суммы первых двух цифр в тройках должны быть одинаковыми...
0
24.06.2011, 15:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2011, 15:22
Помогаю со студенческими работами здесь

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

Разделить массив на 2 части
Добрый вечер, возможно вопрос будет слишком простым для кого-то, но я информации именно по такому...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru