Объясните, пожалуйста, почему это не работает.

Я не так давно начала программировать. Попалась задачка следующего характера:

Используйте одномерный массив для решения следующей задачи. Прочитайте 20 чисел, каждое из которых находится в диапазоне от 10 до 100 включительно. После того, как прочли очередное число, напечатайте его, но только в том случае, если оно дублирует ранее прочитанные числа. Предусмотрите «наихудший случай», когда все 20 чисел различны. Используйте наименьший возможный массив для решения этой задачи.

Вот мое решение.
Не могу понять,где я не прошибла.

#include <iostream>
using namespace std;
int main()
{
int size = 5;
int mas[size];
bool p = true;
int k;

for (int i = 0; i < size; i ++)

{
cin » k;

if (k > 10 && k < 100)
{
mas[i] = k;

for (int j = 0; j < i; j ++)
{

if (mas[j] == mas[i])
p = false;

}

if ( p == true)
cout« mas[i] «' ';
}

else
{

cout « "ERROR"«' ';
i--;

}

p = true;

}
return 0;
} 

Из очевидных ошибок:

  1. В операторах ввода и вывода вместо «шевронов» надо использовать << или >>. Как тебе вообще удалось вставить эти символы в текст программы? O_o

  2. Что бы откомпилировался оператор int mas[size]; надо объявить size константой. Т.е.
    const int size = 5;.

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

И еще в качестве пожелания: если ты будешь форматировать текст программы с отступами, ее будет легче читать и тебе, и другим (например мне).

От себя добавлю:
1 По условию задания числа должны быть в диапазоне от 10 до 100 ВЛЮЧИТЕЛЬНО, а вы в проверочном условии цикла проверяете числа от 11 до 99.

if (k > 10 && k < 100)

2 Давайте предположим, что будет если пользователь введет 20 чисел меньше 10 или больше 100? Значение переменной i станет отрицательным. Выход за пределы массива гарантирован.

beginner, по п.2 ты ошибаешься. При «неправильном» вводе декремент переменной цикла компенсирует инкремент этой же переменной оператором for. Так что отрицательного индекса не получится.

С другой стороны, Small_Juli, за такие фокусы с переменной цикла надо руки отрывать.

В задании сказано:

После того, как прочли очередное число, напечатайте его, но только в том случае, если оно дублирует ранее прочитанные числа.

Твоя программа, Small_Juli, делает ровно противоположное: печатает число, если его ещё нет в массиве. Т.е. должно быть

        if (!p)    // <-- !!!
            cout << mas[i] << ' ';

Господа,что делать, если при написании ЛЮБОГО кода компилятор пишет ждать несколько секунд(от 0,79 до 3,08 ,каждый раз по разному)и зависает на неопределенное время.Я сам не могу разобраться, т.к. в программировании совсем зеленый новичок.Кто знает в чем дело, пожалуйста помогите.

Подскажите пожалуйста в чём тут проблема ? почему после 20 — ти показывает неверный ответ.

include <iostream>

using namespace std;

int main()
{
setlocale(0,«»);
double num;
int k;
cout << «Введите произвольное число :» ;
cin >> num;
if (num < 10){
cout <<« Это число меньше десяти »<< endl;
k = 0;

} else if (num > 10) {
    cout << " Это число больше десяти ,но меньше двадцати " << endl;
    k = 1;

} else if  ( num > 20) {
cout <<" Это число больше двадцати , но меньше тридцати " << endl;
    k = 2;

} else if (num > 30) {
    cout << " Это число больше тридцати , но меньше сорокА " << endl ;
    k=3;

}else if (num > 40) {
    cout << " Это число больше сорокА , но меньше пятидесяти "<< endl ;
k=4;

}else{
    cout << "Это число больше пятидесяти и до бесконечности " << endl ;
    k=5;
}
cout << "k = " << k << endl;
system ("pause");
return 0; 
}

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.