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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
Aleksashka
 Аватар для Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
13.10.2012, 20:35     Найти все шестизначные счастливые числа (исправить код) #1
Задание:
Найти все шестизначные счастливые числа. Счастливое число - это число, у которого сумма левых трех цифр равна сумме правых трех. Если в числе меньше шести цифр, то заменить недостающие цифры нулями.

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.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2012, 20:35     Найти все шестизначные счастливые числа (исправить код)
Посмотрите здесь:

C++ Вывести на экран все шестизначные числа, сумма цифр которых равна N и сообщить количество таких чисел
Циклические вычислительные процессы (Дано натуральное число N. Вывести на экран все шестизначные числа, сумма цифр которых равна N) C++
C++ Получить все шестизначные счастливые номера
C++ Найти все четырехзначные счастливые номера
Получить все шестизначные счастливые номера меньшие n C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
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 секунд
по крайней мере у меня собирается
Aleksashka
 Аватар для Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
13.10.2012, 21:19  [ТС]     Найти все шестизначные счастливые числа (исправить код) #3
спасибо
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
13.10.2012, 21:22     Найти все шестизначные счастливые числа (исправить код) #4
попоробуйте использовать вывод на каждом этапе для контроля значений массива и других показателей, на этапе отладки это помогает понять где что не так делаете
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,064
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)
.......
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
13.10.2012, 21:32     Найти все шестизначные счастливые числа (исправить код) #6
Цитата Сообщение от ValeryS Посмотреть сообщение
k то не больше 6 будет
проверьте и убедитесь
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,064
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
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
13.10.2012, 21:49     Найти все шестизначные счастливые числа (исправить код) #8
причем сдесь n, ты k в консоль выведи и глянь какие он значения принимает, k не где не обнуляется а только инкриминируется вот и убегаем за 50
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,064
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;
   }
и само нулями недостающими заполнится
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
13.10.2012, 21:54     Найти все шестизначные счастливые числа (исправить код) #10
Цитата Сообщение от ValeryS Посмотреть сообщение
while(n>0)
{
s[k]=n%10;
k++;
n/=10;
}
а ну так да верно
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,064
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???
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
13.10.2012, 21:57     Найти все шестизначные счастливые числа (исправить код) #12
Да все верно , согласен, не заметил знак = в условии
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,064
13.10.2012, 21:58     Найти все шестизначные счастливые числа (исправить код) #13
Цитата Сообщение от SergProgC++ Посмотреть сообщение
не заметил знак = в условии
вот поэтому цикл у него и бесконечный
я правда тоже сначала проглядел
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2012, 10:24     Найти все шестизначные счастливые числа (исправить код)
Еще ссылки по теме:

Функция находящая все шестизначные счастливые номера C++
Вывести на экран все шестизначные числа, которые являются счастливыми билетами C++
Получить три шестизначные счастливые номера C++

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

Или воспользуйтесь поиском по форуму:
Aleksashka
 Аватар для Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
14.10.2012, 10:24  [ТС]     Найти все шестизначные счастливые числа (исправить код) #14
спасибо за помощь)
теперь все работает)
Yandex
Объявления
14.10.2012, 10:24     Найти все шестизначные счастливые числа (исправить код)
Ответ Создать тему
Опции темы

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