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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
#1

Найти все шестизначные счастливые числа (исправить код) - C++

13.10.2012, 20:35. Просмотров 2867. Ответов 13
Метки нет (Все метки)

Задание:
Найти все шестизначные счастливые числа. Счастливое число - это число, у которого сумма левых трех цифр равна сумме правых трех. Если в числе меньше шести цифр, то заменить недостающие цифры нулями.

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
#include"StdAfx.h"
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    int s[10]; // массив для хранения цифр числа
    int k=0; // счетчик цифр в числе
    int sr=0; // средина числа
    int ls=0;// сумма левых трех цифр
    int rs=0;// сумма правых трех цифр
    
        // разбиение числа на цифры в диапазоне от 0 до 999999
 
        for (int n=0; n<=999999; n++)
    {
      while(n>=0)
      {
        s[k]=n%10;
        k++;
            n/=10;
      }
      
          // добавление нулей к числу
          
          while (k<6)
      {
        s[k+1]=0;
        k++;
      }
       
          // если число шестизначное, то считать сумму правых и левых цифр в числе
 
          if(k=6)
      {
        sr=k/2;
         for(int i=0; i<sr; i++)
         {
           ls=ls+s[i];
         }
         for(int i=sr; i<sr+1; i++)
         {
           rs=rs+s[i];
         }
         if(ls==rs)
         {
           cout<<n<<"schastlivoe chilso"<<endl;
         }
     }
}
cin.get();cin.get();
return 0;
}
при построении выдает следующую ошибку:

Необработанное исключение в "0x76e47094" в "Chislo.exe": 0xC0000005: Access violation.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2012, 20:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти все шестизначные счастливые числа (исправить код) (C++):

Получить все шестизначные счастливые номера - C++
Получить все шестизначные счастливые номера. Счастливым называют такое шестизначное число, в котором сумма ею первых трех цифр равна сумме...

Функция находящая все шестизначные счастливые номера - C++
все шестизначные счастливые номера. счастливым называют такое шестизначное число, в котором сумма его первых трех цифр равна сумме его...

Получить все шестизначные счастливые номера меньшие n - C++
2 Получить все шестизначные счастливые номера меньшие n. Счастливым называют такое шестизначное число, в котором сумма его первых трех цифр...

Получить три шестизначные счастливые номера - C++
Получить три шестизначные счастливые номера. Счастливым называют такое шестизначное число, в котором сумма его первых трех цифр равна...

Вывести на экран все шестизначные числа, которые являются счастливыми билетами - C++
Вывести на экран все шестизначные числа, которые являются счастливыми билетами. Написать вспомогательную функцию вычисления суммы цифр....

Вывести все шестизначные простые числа с суммой цифр, равной заданному числу - C++
Дано число K. Вывести все шестизначные простые числа с суммой цифр, равной K. Ограничение по времени - 0,2 сек.

13
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,379
13.10.2012, 21:19 #2
Цитата Сообщение от Aleksashka Посмотреть сообщение
int s[10]; // массив для хранения цифр числа
массив создан для хранения 10 чисел

Цитата Сообщение от Aleksashka Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
for (int n=0; n<=999999; n++)
 {
 while(n>=0)
 {
 s[k]=n%10;
 k++;
 n/=10;
 }
а сдесь вы пихаете намного больше в него, у вас выход за пределы массива

Добавлено через 4 минуты
Цитата Сообщение от Aleksashka Посмотреть сообщение
#include"StdAfx.h"
убрав это программа соберется но работает не верно

Добавлено через 26 секунд
по крайней мере у меня собирается
1
Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
13.10.2012, 21:19  [ТС] #3
спасибо
0
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,379
13.10.2012, 21:22 #4
попоробуйте использовать вывод на каждом этапе для контроля значений массива и других показателей, на этапе отладки это помогает понять где что не так делаете
0
ValeryS
Модератор
7021 / 5359 / 531
Регистрация: 14.02.2011
Сообщений: 18,084
13.10.2012, 21:27 #5
Цитата Сообщение от SergProgC++ Посмотреть сообщение
а сдесь вы пихаете намного больше в него, у вас выход за пределы массива
где ж больше

Цитата Сообщение от Aleksashka Посмотреть сообщение
s[k]=n%10;
k то не больше 6 будет

Aleksashka,
ты чето по сложному пути пошел
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int namber=123456; //число которое надо проверить 
int low=namber%1000;// младшие три знака 
int hight=namber/1000;// старшие три знака само нулями заполнится 
int sumH=0,sumL=0;
for(int i=0;i<3;i++)
 {
    sumH+=hight%10;
    sumL+=low%10;
    low/=10;
    hight/=10;
 }
if(sumH==sumL)
.......
0
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,379
13.10.2012, 21:32 #6
Цитата Сообщение от ValeryS Посмотреть сообщение
k то не больше 6 будет
проверьте и убедитесь
0
ValeryS
Модератор
7021 / 5359 / 531
Регистрация: 14.02.2011
Сообщений: 18,084
13.10.2012, 21:44 #7
Цитата Сообщение от SergProgC++ Посмотреть сообщение
проверьте и убедитесь
че проверять то у него цикл бесконечный
Цитата Сообщение от Aleksashka Посмотреть сообщение
C++
1
2
3
4
5
6
while(n>=0)
 {
 s[k]=n%10;
 k++;
 n/=10;
 }
при n =0 n/=10 тоже равно 0 while(n>=0) истина поехали дальше
а при правильном цикле
C++
1
2
3
4
5
6
while(n>0)
 {
 s[k]=n%10;
 k++;
 n/=10;
 }
число итераций не больше 7
1
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,379
13.10.2012, 21:49 #8
причем сдесь n, ты k в консоль выведи и глянь какие он значения принимает, k не где не обнуляется а только инкриминируется вот и убегаем за 50
1
ValeryS
Модератор
7021 / 5359 / 531
Регистрация: 14.02.2011
Сообщений: 18,084
13.10.2012, 21:49 #9
тут вообще for нужен
C++
1
2
3
4
5
for(int i=0;i<6;i++)
  {
   s[i]=n%10;
   n/=10;
   }
и само нулями недостающими заполнится
1
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,379
13.10.2012, 21:54 #10
Цитата Сообщение от ValeryS Посмотреть сообщение
while(n>0)
{
s[k]=n%10;
k++;
n/=10;
}
а ну так да верно
1
ValeryS
Модератор
7021 / 5359 / 531
Регистрация: 14.02.2011
Сообщений: 18,084
13.10.2012, 21:55 #11
Цитата Сообщение от SergProgC++ Посмотреть сообщение
k не где не обнуляется а только инкриминируется вот и убегаем за 50
инкриминируется в цикле а цикл зависит от n
C++
1
2
3
4
5
6
while(n>0)
 {
 s[k]=n%10;
 k++;
 n/=10;
 }
n=999999
поехали
после первой проходки
k=1 n=99999
после второй
k=2 n=9999
третьей
k=3 n=999
четвертой
k=4 n=99
пятой
k=5 n=9
шестой
k=6 n=0
седьмой не будет
где тут 50???
1
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,379
13.10.2012, 21:57 #12
Да все верно , согласен, не заметил знак = в условии
0
ValeryS
Модератор
7021 / 5359 / 531
Регистрация: 14.02.2011
Сообщений: 18,084
13.10.2012, 21:58 #13
Цитата Сообщение от SergProgC++ Посмотреть сообщение
не заметил знак = в условии
вот поэтому цикл у него и бесконечный
я правда тоже сначала проглядел
0
Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
14.10.2012, 10:24  [ТС] #14
спасибо за помощь)
теперь все работает)
0
14.10.2012, 10:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2012, 10:24
Привет! Вот еще темы с ответами:

Написать программу, которая находит все шестизначные простые числа с суммой цифр равной N - C++
Очееень нужна ваша помощь,ребятки С++ Написать программу, которая находит все шестизначные простые числа с суммой цифр равной N. ...

Вывести на экран все шестизначные числа, сумма цифр которых равна N и сообщить количество таких чисел - C++
Дано натуральное число N. Вывести на экран все шестизначные числа, сумма цифр которых равна N и сообщить количество таких чисел.(помогите...

Найти все четырехзначные счастливые номера - C++
помогите плз, С++ найти все четырехзначные счастливые номера. Счастливым называют номер, у которого сумма первых двух цифр номера...

Циклические вычислительные процессы (Дано натуральное число N. Вывести на экран все шестизначные числа, сумма цифр которых равна N) - C++
Задача предполагает использование целочисленной арифметики и должна быть реализована во втором проекте. Дано натуральное число N. Вывести...


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

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

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