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

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

Войти
Регистрация
Восстановить пароль
 
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
#1

Разбить число на массив - C++

02.06.2014, 21:36. Просмотров 704. Ответов 11
Метки нет (Все метки)

Ребят, второй час сижу и не пойму в чем проблема:

Дано натуральное число.
Проверить, является ли число шестизначным и выполняется ли следующее условие: сумма первой и четвертой цифр равна сумме второй и пятой и равна сумме третьей и шестой.

Разбить число на массив

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int a;
char b[8];
cout << "Введите шестизначное число: ";   
 
itoa(a,b,10); //Функция преобразует целое значение в строку символов
 
if(a < 99999)
{
    if( ((b[0] + b[3]) == (b[1] + b[4]) ) && ((b[0] + b[3]) == (b[2] + b[5])))
       cout << "Cумма первой и четвертой цифр РАВНА сумме второй и пятой и РАВНА сумме третьей и шестой.";
    else
       gotoxy(2,5); cout << "Условие не выполнено.";
}
else
   cout << "Только шестизначное число";
Выводит правильно только 5 цифр, при попытке вывода шестой начинается все самое плохое.
Библиотеки все подключены.

Приму любую помощь, с меня + в репу.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2014, 21:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разбить число на массив (C++):

Ввести число n, разбить число на цифры, и найти сумму этих цифр - C++
Здравствуйте.Очень нужно сделать задание, кто может? Заранее спасибо!!! Ввести число n, разбить число на цифры, и найти сумму этих...

Как разбить массив по 3 елемента и засунуть в другой массив - C++
Здарова форумчане. Помогите, кому не лень решить задачу по программированию на c++ Кароче нам дан массив чисел от 1 до 18. Сначала нам...

Как разбить одно число HEX число на два числа HEX ? - C++
Задача в том, что бы одно число в виде HEX (к примеру 0xD681) разбить на 2 числа HEX (из 0xD681 - &gt; 0xD6 и 0x81) именно что бы вот так...

Разбить десятичное число на разряды - C++
Добрый день. Подскажите, а существует ли какая-нибудь функция, позволяющая отделить n-й разряд от числа в десятичной системе счисления? К...

Разбить число на целую и дробную часть - C++
Определить равна ли сумма цифр целой части действительного числа сумме такого же количества цифр в дробной части. Привет форумчане! ...

Разбить заданное целое число на 2 слагаемых - C++
2. Разбейте заданное целое число на 2 слагаемых всеми различными способами. Разбиения, отличающиеся лишь порядком слагаемых, разными не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 13:40  [ТС] #2
все еще нужна помощь
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
03.06.2014, 13:47 #3
Цитата Сообщение от Dee Snider Посмотреть сообщение
при попытке вывода шестой начинается все самое плохое
У вас тут вообще нет никого ввода. Показывайте полный код.
0
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 17:17  [ТС] #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int a;
char b[8];
cout << "Введите шестизначное число: ";   
 
itoa(a,b,10); //Функция преобразует целое значение в строку символов
 
for(int i = 0; i < 7; i++)
   cout << b[i];
 
if(a > 99999 && a < 1000000)
{
    if( ((b[0] + b[3]) == (b[1] + b[4]) ) && ((b[0] + b[3]) == (b[2] + b[5])))
       cout << "Cумма первой и четвертой цифр РАВНА сумме второй и пятой и РАВНА сумме третьей и шестой.";
    else
       gotoxy(2,5); cout << "Условие не выполнено.";
}
else
   cout << "Только шестизначное число";
0
ExModE
2 / 2 / 2
Регистрация: 04.03.2011
Сообщений: 27
03.06.2014, 17:59 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int a;
char b[8];
cout << "Введите шестизначное число: ";   
cin >> a;
 
 
if(a > 99999 && a <1000000)
{
itoa(a,b,8);//Функция преобразует целое значение в строку символов
    if( ((b[0] + b[3]) == (b[1] + b[4]) ) && ((b[0] + b[3]) == (b[2] + b[5])))
       cout << "Cумма первой и четвертой цифр РАВНА сумме второй и пятой и РАВНА сумме третьей и шестой.";
    else
{
       gotoxy(2,5); cout << "Условие не выполнено.";
}
}
else
   cout << "Только шестизначное число";
0
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 18:25  [ТС] #6
ExModE, При вводе числа "123456" в массиве остаются значения "161100"
0
ExModE
2 / 2 / 2
Регистрация: 04.03.2011
Сообщений: 27
03.06.2014, 18:31 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int a;
char b[8];
cout << "Введите шестизначное число: ";   
cin >> a;
 
 
if(a > 99999 && a <1000000)
{
itoa(a,b,10);//Функция преобразует целое значение в строку символов
    if( ((b[0] + b[3]) == (b[1] + b[4]) ) && ((b[0] + b[3]) == (b[2] + b[5])))
       cout << "Cумма первой и четвертой цифр РАВНА сумме второй и пятой и РАВНА сумме третьей и шестой.";
    else
{
       gotoxy(2,5); cout << "Условие не выполнено.";
}
}
else
   cout << "Только шестизначное число";
Прошу прощения
0
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 18:37  [ТС] #8
ExModE, А что вы поменяли из моего кода? Просто сравниваю, и ничего нового не нахожу

Я itoa(a, b, 10) - 3 параметр radix, я пробовал менять в допустимом диапазоне от 2 до 36, нам нужна 10, вот все правильно работает до тех пор пока мы вводим только 5 цифр, при попытке ввести 6 - не срабатывает
0
ExModE
2 / 2 / 2
Регистрация: 04.03.2011
Сообщений: 27
03.06.2014, 18:41 #9
Скиньте полный код, будем разбираться
0
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 18:42  [ТС] #10
ExModE,

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
44
45
46
47
48
49
50
51
52
53
54
55
#include<conio.h>
#include<iomanip.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#include"..\\h\\wind.h"
#include"..\\h\\page_1.h"
void main()
{
    page_1();
    window(1, 1, 80, 25); textbackground(7); clrscr();
    window(14,4,63,15);textbackground(0);clrscr();
    window(12,3,61,14);textbackground(2);clrscr();
 
     int a;
     char b[8]; // Выделяем память для занесения шестизначного числа в массив
     char ans = 'y';
     FILE *f;
     if ((f = fopen("..\\fil_dat\\pr13_gbr.dat", "w")) == NULL)
    {
     fprintf(stderr, "Ошибка! Не удается открыть файл...\n");
 
    }
     while(ans == 'y')
     {
       clrscr();
       gotoxy(2,3);cout << "Введите шестизначное число: "; cin >> a;
 
       itoa(a, b, 10);
 
       for(int i = 0; i < 7; i++)
       cout << b[i];
       break;   // вот на этом все и заканчивается
 
        if(a > 99999 && a < 1000000)
        {
            if( ((b[0] + b[3]) == (b[1] + b[4]) ) && ((b[0] + b[3]) == (b[2] + b[5])))
            {
                gotoxy(2,5);cout << "Cумма первой и четвертой цифр РАВНА сумме второй и пятой и РАВНА сумме третьей и шестой.";
            }
            else
            {
                gotoxy(2,5); cout << "Условие не выполнено.";
            }
        }
        else
        {
               gotoxy(2,5);cout << "Только шестизначное число";
        }
        gotoxy(2,9); cout << "Проверить ещe? [y/n] "; cin >> ans;
      }
       fclose(f);
 
    getch();
}
0
ExModE
2 / 2 / 2
Регистрация: 04.03.2011
Сообщений: 27
03.06.2014, 18:47 #11
1)Не было ввода
2)Неверное условие
3)itoa стояло не в том месте, возможна ошибка переполнения
4)Ветка else: не проставлены скобки

Добавлено через 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
44
45
46
void main()
{
    page_1();
    window(1, 1, 80, 25); textbackground(7); clrscr();
    window(14,4,63,15);textbackground(0);clrscr();
    window(12,3,61,14);textbackground(2);clrscr();
 
     int a;
     char b[8]; // Выделяем память для занесения шестизначного числа в массив
     char ans = 'y';
     FILE *f;
     if ((f = fopen("..\\fil_dat\\pr13_gbr.dat", "w")) == NULL)
    {
     fprintf(stderr, "Ошибка! Не удается открыть файл...\n");
 
    }
     while(ans == 'y')
     {
       clrscr();
       gotoxy(2,3);cout << "Введите шестизначное число: "; cin >> a;
 
       itoa(a, b, 10);
       for(int i = 0; i < 7; i++)
       cout << (int)b[i];
       break;
        if(a > 99999 && a < 1000000)
        {
            if( ((b[0] + b[3]) == (b[1] + b[4]) ) && ((b[0] + b[3]) == (b[2] + b[5])))
            {
                gotoxy(2,5);cout << "Cумма первой и четвертой цифр РАВНА сумме второй и пятой и РАВНА сумме третьей и шестой.";
            }
            else
            {
                gotoxy(2,5); cout << "Условие не выполнено.";
            }
        }
        else
        {
               gotoxy(2,5);cout << "Только шестизначное число";
        }
        gotoxy(2,9); cout << "Проверить ещe? [y/n] "; cin >> ans;
      }
       fclose(f);
 
    getch();
}
29 и 31 строчка
0
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 19:40  [ТС] #12
В общем попробовав не свой c builder древний, а онлайн компилятор, у меня все получилось, выводит и 5 и 6 цифр.
Все было правильно с самого начала по идее
http://www.compileonline.com/compile_cpp_online.php
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 19:40
Привет! Вот еще темы с ответами:

Разбить число на целую и дробную часть - C++
Возможно-ли разбить число x, допустим, это- &quot;3.142&quot;, на целую и дробную часть. Именно чтобы было &quot;3&quot; и &quot;14&quot;, а не &quot;3.000&quot; и &quot;0.142&quot; как на...

Разбить число типа double на 2 числа - C++
Добрый день! Попалась мне такая задача - есть 2 интовые переменные, есть число double. Их нужно сложить таким образом : к 1-му интовому...

Как можно разбить длинное число на множители? - C++
есть число 217381274817248719824812648612; как программно его разбить на большие множители?

Разбить число на цифры при помощи цикла - C++
Как разбивать число на цифры, когда заведомо не известно сколько в этом числе будет цифр. Циклом? Задание: Пользователь вводит с...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.06.2014, 19:40
Ответ Создать тему
Опции темы

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