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

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

Восстановить пароль Регистрация
 
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
02.06.2014, 21:36     Разбить число на массив #1
Ребят, второй час сижу и не пойму в чем проблема:

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

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

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 цифр, при попытке вывода шестой начинается все самое плохое.
Библиотеки все подключены.

Приму любую помощь, с меня + в репу.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 13:40  [ТС]     Разбить число на массив #2
все еще нужна помощь
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
03.06.2014, 13:47     Разбить число на массив #3
Цитата Сообщение от Dee Snider Посмотреть сообщение
при попытке вывода шестой начинается все самое плохое
У вас тут вообще нет никого ввода. Показывайте полный код.
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 << "Только шестизначное число";
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 << "Только шестизначное число";
Dee Snider
25 / 25 / 5
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 18:25  [ТС]     Разбить число на массив #6
ExModE, При вводе числа "123456" в массиве остаются значения "161100"
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 << "Только шестизначное число";
Прошу прощения
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 - не срабатывает
ExModE
2 / 2 / 2
Регистрация: 04.03.2011
Сообщений: 27
03.06.2014, 18:41     Разбить число на массив #9
Скиньте полный код, будем разбираться
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();
}
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 строчка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 19:40     Разбить число на массив
Еще ссылки по теме:

C++ Разбить число на целую и дробную часть
Как можно разбить длинное число на множители? C++

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

Или воспользуйтесь поиском по форуму:
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
Yandex
Объявления
03.06.2014, 19:40     Разбить число на массив
Ответ Создать тему
Опции темы

Текущее время: 16:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru