Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
1

Массивы - отладить код; В переменную Summa никакие значения не записываются

26.06.2014, 12:59. Показов 665. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include<conio.h>
#include <cmath>
#include<iostream>
#include <stdio.h>
 
 
using std::cout;
using std::cin;
using std::endl;
 
 
void main()
 {
         cout << "Input n,m: ";
         int n,m,n1;      int MassVseTsisla[100]; int VseTsisla; VseTsisla=0;
   cin >> n >> m; cin.get();
   n1=n;
    int Massiv[100];int Stsotsik;  Stsotsik=0;
 
   Idisuda: for (;  n!=0||n>0;  Stsotsik++)
        {Massiv[Stsotsik] = n%10; n/=10;}
      int Summa; Summa=0;
      for (Stsotsik;  Stsotsik!=0||Stsotsik>0;  Stsotsik--) 
          {Summa=Summa+Massiv[Stsotsik];}
   Summa=Summa*Summa;
        if ( Summa==m ) {MassVseTsisla[VseTsisla]=n1;n=n1-VseTsisla;
                     VseTsisla++;
                     if (n>0)goto Idisuda;}
 
    for (VseTsisla;VseTsisla>=0;VseTsisla--){cout<< VseTsisla << "Znatsenie" <<MassVseTsisla[VseTsisla]<< endl;}
    cin.get();
 
 }
Значения просто тиряются где-то в массивах... Нужно или по другому переписать, или дополнить и понять где же они теряются! Или я извлеч из массива их не умею..

Добавлено через 17 часов 36 минут
В переменную Summa никакие значения не поступаю. Подскажите как правильно!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2014, 12:59
Ответы с готовыми решениями:

Не работает код отрисовки изображения при подстановке значения через переменную
Здравствуйте. Подскажите кто знает, почему код (привожу только начало кода) $side =...

В БД не записываются значения
Этот сервис обрабатывает поступившее сообщение. sms_body_name и sms_body_text имеют нужные...

Значения не записываются в файл
Значения переменной y не записываются в файл, компилятор CodeBlocks. Подскажите, где ошибка? ...

В массив не записываются значения
В массив не записываются значения :( Заранее спасибо за помощь #include &quot;stdafx.h&quot; #include...

10
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
26.06.2014, 13:08 2
напишите задачу, проще решить заного чем разбираться в ЭТОМ
1
31 / 31 / 32
Регистрация: 21.06.2014
Сообщений: 81
26.06.2014, 13:34 3
Жесть какая, даже goto есть
1
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
26.06.2014, 14:36 4
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
n!=0||n>0
При n>0 верно и n!=0. С-но ||n>0 можно опустить.

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
int main()
{
    int n,m,n1;
    int MassVseTsisla[100]={0}; 
    int VseTsisla; VseTsisla=0;
    cout << "Input n,m: ";
    cin >> n >> m; cin.get();
    n1=n;
    int Massiv[100];int Stsotsik;  Stsotsik=0;
 
Idisuda: 
    for (;n!=0;  Stsotsik++)
    {
        Massiv[Stsotsik] = n%10; 
        n/=10;
    }
    Stsotsik--;   // тут значение Stsotsik оказалось на 1 больше
    int Summa; Summa=0;
    for(;Stsotsik>=0;Stsotsik--) 
        Summa+=Massiv[Stsotsik];
    Summa*=Summa;
    if ( Summa==m ) 
    {
        MassVseTsisla[VseTsisla]=n1;
        n=n1-VseTsisla;
        VseTsisla++;
        if (n>0)
        {
            Stsotsik=VseTsisla; // тут значение Stsotsik равно -1. Какое должно быть, знаете только Вы
            goto Idisuda;
        }
    }
    for(;VseTsisla>=0;VseTsisla--)
        cout<< VseTsisla << " Znatsenie " <<MassVseTsisla[VseTsisla]<< endl;
    system("pause");
    return 0;
 
}
1
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
26.06.2014, 14:44 5
Оформлено жестоко, конечно. Лучше так оформляй в следующий раз:
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
#include <conio.h>
#include <cmath>
#include <iostream>
#include <stdio.h>
 
 
using std::cout;
using std::cin;
using std::endl;
 
 
void main()
{   
    int n, m, n1;
    cout << "Input n, m: ";
    cin >> n >> m;
    cin.get();
    int arrAllNumbers[100]; // массив всех чисел
    int allNumbers = 0;
    n1 = n;
    int arr[100];
    int counter = 0;
    oneMoreTime:
    
    for (; n != 0 || n > 0; counter++)
    {
        arr[counter] = n%10;
        n /= 10;        
    }
 
    int summ = 0;
      
    for (counter; counter != 0 || counter > 0; counter--) 
        summ = summ + arr[counter];
        
    summ = summ * summ;
    
    if (summ == m)
    {
        arrAllNumbers[allNumbers] = n1;
        n = n1 - allNumbers;
        allNumbers++;
            if (n > 0)
                goto oneMoreTime;
    }
 
    for (allNumbers; allNumbers >= 0; allNumbers--)
        cout<< allNumbers << " value " << arrAllNumbers[allNumbers] << endl;
    
    cin.get();
 }
1
0x10
26.06.2014, 15:08
  #6

Не по теме:

Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
goto Idisuda
Отлично)

0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
26.06.2014, 15:26 7
Цитата Сообщение от 0x10 Посмотреть сообщение
Отлично)
patzan-style coding

Добавлено через 2 минуты
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
goto Idisuda;
Надо было так:

C++
1
goto Idi_suda_na;
1
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
26.06.2014, 20:59  [ТС] 8
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
#include <conio.h>
#include <cmath>
#include <iostream>
#include <stdio.h>
 
 
using std::cout;
using std::cin;
using std::endl;
 
 
void main()
{   
    int n, m, n1;
    cout << "Input n, m: ";
    cin >> n >> m;
    cin.get();
    int arrAllNumbers[100]; // массив всех чисел
    int allNumbers = 0;
    n1 = n;
    int arr[100];
    int counter = 0;
    oneMoreTime:
    
    for (; n != 0 || n > 0; counter++)
    {
        arr[counter] = n%10;
        n /= 10;        
    }
 
    int summ = 0;
      
    for (counter;  counter >= 0; counter--) 
    {summ = summ + arr[counter];   cout <<counter<< summ << arr[counter] << endl;}
        
    summ = summ * summ;
    
    if (summ == m)
    {
        arrAllNumbers[allNumbers] = n1;
        n = n1 - allNumbers;
        allNumbers++;
            if (n > 0)
                goto oneMoreTime;
    }
 
    for (allNumbers; allNumbers >= 0; allNumbers--)
        cout<< allNumbers << " value " << arrAllNumbers[allNumbers] << endl;
    
    cin.get();
 }
У нас, в summ попадают самые нилепые числа вроде 3435973836 . Кажется это элементы массива содержат тоже всякую бяку- да я проверю еще вот таким кодом (выше) Ого, отрицатильные числа..
.. Не понял!! И пишется как-то не так

Не понял. summ = summ + arr[counter]; Я же так могу получить сумму всех элементов массива? Он же внутрь for передаётся?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
26.06.2014, 21:05 9
Почему Вы не учли ошибки, которые я в коде специально выделил комментарием?
1
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
26.06.2014, 21:12 10
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
У нас, в summ попадают самые нилепые числа вроде 3435973836 .
Это у Вас они туда попадают. У меня в сообщении Ваш же код, только переписанный в удобочитаемом виде.

И да, не мучайте себя и других, последуйте хорошему совету:
Цитата Сообщение от dzrkot Посмотреть сообщение
напишите задачу, проще решить заново чем разбираться в ЭТОМ
0
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
26.06.2014, 21:17  [ТС] 11
Да! Я баран, этого и не увидел. Спасибо!!
0
26.06.2014, 21:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2014, 21:17
Помогаю со студенческими работами здесь

Значения не записываются в массив
private void Play(double PSignal, string fileName) { byte resultbytes = new...

Не записываются значения в форму
Добрый день! Последовательность действий такая : запрашиваю json файл и распарсиваю его, далее эти...

Записываются не те значения что ввожу...
Здравствуйте.Вроде все работало, но в очередной запуск формы начали принимать значения одни а в...

В массив не правильно записываются значения
Такая задача: Из массивов А и В сформировать массив С, записав в него элементы массивов А и В с...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru