Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Dee Snider
25 / 25 / 9
Регистрация: 18.04.2013
Сообщений: 132
1

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

02.06.2014, 21:36. Просмотров 898. Ответов 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
Ответы с готовыми решениями:

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

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

Как разбить одно число HEX число на два числа HEX ?
Задача в том, что бы одно число в виде HEX (к примеру 0xD681) разбить на 2...

Разбить на группы вводимое число
Ввод: 1000 Вывод: 1.000

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

11
Dee Snider
25 / 25 / 9
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 13:40  [ТС] 2
все еще нужна помощь
0
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
03.06.2014, 13:47 3
Цитата Сообщение от Dee Snider Посмотреть сообщение
при попытке вывода шестой начинается все самое плохое
У вас тут вообще нет никого ввода. Показывайте полный код.
0
Dee Snider
25 / 25 / 9
Регистрация: 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 / 3
Регистрация: 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 / 9
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 18:25  [ТС] 6
ExModE, При вводе числа "123456" в массиве остаются значения "161100"
0
ExModE
2 / 2 / 3
Регистрация: 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 / 9
Регистрация: 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 / 3
Регистрация: 04.03.2011
Сообщений: 27
03.06.2014, 18:41 9
Скиньте полный код, будем разбираться
0
Dee Snider
25 / 25 / 9
Регистрация: 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 / 3
Регистрация: 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 / 9
Регистрация: 18.04.2013
Сообщений: 132
03.06.2014, 19:40  [ТС] 12
В общем попробовав не свой c builder древний, а онлайн компилятор, у меня все получилось, выводит и 5 и 6 цифр.
Все было правильно с самого начала по идее
http://www.compileonline.com/compile_cpp_online.php
0
03.06.2014, 19:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 19:40

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

Разбить число на целую и дробную часть
Возможно-ли разбить число x, допустим, это- &quot;3.142&quot;, на целую и дробную часть....

Разбить заданное целое число на 2 слагаемых
2. Разбейте заданное целое число на 2 слагаемых всеми различными способами....


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

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

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