Помогите решить задачу:"Напишите программу, которая в последовательности натуральных...

0 голосов
72 просмотров

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


Информатика (61 баллов) | 72 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

#include
using namespace std;
int main()
{
int n,max;
bool a=false;
cout<<"enter kol-vo numbers:"<<endl;<br>cin>>n;
if(n<=1000)<br>{
int arr[n];
cout<< "enter 1 chislo"<<endl;<br>cin>>arr[0];
max=arr[0];
if(arr[0] % 10==3 && arr[0]<30000)<br>{
a=true;
for (int i=1;i{
cout<<"enter "<<(i+1)<<" chislo"<<endl,<br>cin>>arr[i];
if(arr[i]>30000) {goto b;}
}
for (int i = 0; i < n; ++i) {
if (arr[i] > max && arr[i] % 10==3)
{
max = arr[i];
}
}
}
}
b:
if(a){ cout<<" max chislo okanch na 3: "<< max<<endl; }<br>return 0;
}

(149k баллов)
0

А кто сказал, что нужно массив заводить?

0

так же известно сколько чисел будет, значит проще использовать массив

0

Известна верхняя граница <=1000

0

в задании написано, что программа получает на вход КОЛИЧЕСТВО чисел в последовательности, а потом и сами числа

0

В задаче не сказано, что нужно вводить количество элементов массива, нужно только написать последовательность чисел, минимальное из которых будет составлять "3", но ничего более.

0

у вас написано ПРОГРАММА ПОЛУЧАЕТ НА ВХОД КОЛИЧЕСТВО ЧИСЕЛ В ПОСЛЕДОВАТЕЛЬНОСТИ, как написано, так я и сделал