0 / 0 / 0
Регистрация: 30.01.2017
Сообщений: 2
1

Ошибки заполнения массивов

30.01.2017, 17:25. Показов 294. Ответов 8
Метки нет (Все метки)

Помогите устранить проблему с данной задачей:
"Напишите программу, которая в последовательности натуральных чисел определяет максимальное число, оканчивающееся на 3. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 3. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число — максимальное число, оканчивающееся
на 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
47
48
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
    int user_nums[1000];
    int first_stage[1000];
    int second_stage[1000];
    cout << "Enter your numbers: " << endl;
    for(int i = 0; i <= 1000; i++){
        cin >> user_nums[i];
        if(user_nums[i] == 0){
            user_nums[i] = 3;
            break;
        }
        else{
            continue;
        }
    }
    system("cls");
    for(int i = 0; i <= 1000; i++){
        if(user_nums[i] <= 30000){
            first_stage[i] = user_nums[i];
            int ost = first_stage[i] % 10;
            if(ost == 3){
                second_stage[i] = first_stage[i];
            }
            else{
                continue;
            }
        }
        else{
            continue;
        }   
    }
    int max_arr = 0;
    for(int i = 0; i <= 1000; i++){
        if(max_arr <= second_stage[i]){
            max_arr = second_stage[i];
        }
        else{
            continue;
        }
    }
    cout << max_arr << endl;
    cin.get();
    cin.get();
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2017, 17:25
Ответы с готовыми решениями:

Заполнения массивов факториалами значений индексов
Составить программу заполнения массивов А(N) и В(K) факториалами значений индексов их элементов....

Особенности заполнения массивов в цикле с постусловием
Всем доброго времени суток! Собственно вопрос такой. При заполнении массива циклом do { ...

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

Алгоритм заполнения двумерных массивов
помогите написать алгоритм для заполнения матрицы nXn 1 6 7 2 5 8 3 4 9 и вторая на фото

8
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 556
30.01.2017, 18:02 2
Цитата Сообщение от wiwuyexu Посмотреть сообщение
, а затем сами числа
т.е. они не могут генерироваться случайным образом?
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
#include <iostream>
#include <cstdlib>
#include <time.h>
int main ()
{
    srand(time(NULL));
    unsigned int n;
    int max, temp;
    std::cout << "Input number of elements:";
    std::cin>>n;
    do
    {
        std::cout << "Input number of elements:";
        std::cin>>n;
    }
    while (n>1000);
    int *arr = new int [n];
    for (int i=0; i<n; i++)
    {
        std::cout << "Input " << i+1 << " number: " << std::endl;
        std::cin>>arr[i];
        while(arr[i]>30000)
        {
            std::cout<<"Number can`t be so big! Input " << i+1 << " number:";
            std::cin>>arr[i];
        }
        if(arr[i]%10==3)
            max=arr[i];
    }
    system("cls");
    for(int i=0; i<n; i++)
    {
        if (arr[i]%10==3 && arr[i]>max)
            max=arr[i];
    }
    std::cout << "max element ending with 3: " << max << std::endl;
    delete [] arr;
    system ("pause");
}
бедный тот, кто осмелится вводить все 1000 элементов вручную
0
1489 / 783 / 172
Регистрация: 05.12.2015
Сообщений: 2,355
30.01.2017, 18:15 3
wiwuyexu, Зачем вам массив? Зачем хранить всю последовательность?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    int N;
    std::cin >> N;
    int ans = 0;
    for (int i = 0; i < N; i++)
    {
        int x;
        std::cin >> x;
        if (x % 10 == 3 && x>ans)
            ans = x;
    }
    std::cout << ans << std::endl;
}
0
131 / 157 / 87
Регистрация: 06.04.2016
Сообщений: 992
30.01.2017, 18:32 4
Многое можно убрать из Вашего кода. А зачем 3 массива-то? 1 достаточно. Ввод 1000 чисел вручную - это жесть!Ну и вводить конечно же лучше генерацией случайных чисел, а то пользователь, в натуре, устанет это делать.
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main(){
int usernums[1000], secondstage[1000], Max=0, ost, Counter=0;
 
srand(time(NULL));;
for(int i = 0; i < 1000; i++)
    usernums[i] = rand()%30000;
 
system("cls");
for(int i = 0; i < 1000; i++)
{
    int ost = usernums[i]%10;
    if(ost == 3)
    {
        secondstage[Counter] = usernums[i];
        Counter++;
    }
}
 
for(int i = 0; i < Counter; i++)
    if(Max < secondstage[i])
        Max = second_stage[i];
 
cout << "Max=" << Max << "\n";
getch();
return 0;
}
1
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 556
30.01.2017, 19:21 5
Цитата Сообщение от DemolitionMan Посмотреть сообщение
C++
1
usernums[i] = rand()%30000;
а если введет пользователь 3 элемента последовательности - каковы шансы что будет выполнено -
Цитата Сообщение от wiwuyexu Посмотреть сообщение
В последовательности всегда имеется число, оканчивающееся на 3.
?
всетаки очень такое спорное задание )) можно спорить очень долго
Цитата Сообщение от avgoor Посмотреть сообщение
C++
1
int ans = 0;
а что если введены последовательность например 2, 5, 28, -23, 19, 95?
в задании ведь не сказано что числа не могут быть отрицательными
Цитата Сообщение от wiwuyexu Посмотреть сообщение
Введённые числа не превышают 30 000
0
1489 / 783 / 172
Регистрация: 05.12.2015
Сообщений: 2,355
30.01.2017, 19:26 6
Цитата Сообщение от FreeYourMind Посмотреть сообщение
а что если введены последовательность например 2, 5, 28, -23, 19, 95
Тогда возвращаемся в начальную школу и вспоминаем что такое натуральные числа
Цитата Сообщение от wiwuyexu Посмотреть сообщение
натуральных чисел
0
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 556
30.01.2017, 19:32 7
точно) avgoor, я не прав ) пардоньте
0
0 / 0 / 0
Регистрация: 30.01.2017
Сообщений: 2
31.01.2017, 12:05  [ТС] 8
Цитата Сообщение от FreeYourMind Посмотреть сообщение
т.е. они не могут генерироваться случайным образом?
Из контекста самого задания трудно понять, сам ли пользователь должен заполнить весь массив или же со включением генерации случайных чисел; но к данному заданию также даются примеры входных и выходных данных: "Входные данные: 3, 13, 23, 3" , "Выходные данные: 23", что скорее всего говорит о том, что пользователь должен сам заполнить весь массив целиком.
0
1480 / 944 / 811
Регистрация: 30.04.2016
Сообщений: 3,298
31.01.2017, 20:13 9
wiwuyexu, я бы решил эту задачу так:

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
#include <iostream>
#include <climits>
 
using namespace std;
 
int main()
{
    int N, q, k, max;
    cout << "Введите количество чисел:" << endl;
    cout << "q = ";
    cin >> q;
    cout << "Введите натуральные числа:" << endl;
    k = max = 0;
    do
    {
        cout << "Число #" << k + 1 << ": ";
        cin >> N;
        if (N < 30001)
            if ((N % 10 == 3) && (N > max))
                max = N;
        if (k == 999)
        {
            cout << "Лимит вводимых чисел исчерпан!" << endl;
            break;
        }
        k++;
    } while (k != q);
    cout << "Искомый максимум: " << max << endl;
    system("pause");
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2017, 20:13

Использование сканера для заполнения двух массивов
После заполнения первого массива, вторую последовательность данный код уже не считывает. Как...

Написал процедуру заполнения процентными значениями четырёх массивов
Добрый вечер. Вот какая проблема. Программа реализует ценовое исследование, опрос покупателей....

Написать процедуру заполнения двух одномерных массивов случайными числами
program mas;uses crt; const n=10;l=-10;k=31; type myarray=arrayof integer; a,b:myarray; ...

Напишите программу для заполнения трех двумерных массивов и последующего их вывода
Напишите программу для заполнения трех двумерных массивов и последующего их вывода. Первый...


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

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

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