Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для 5olyarka
13 / 11 / 3
Регистрация: 09.03.2021
Сообщений: 162

Некорректный результат алгоритма будет в том случае, если введен 0 как значение элемента...

25.03.2021, 16:24. Показов 2008. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, препод душит уже 3 день...
Некорректный результат алгоритма будет в том случае, если введен 0 как значение элемента (не видно, было ли увеличение в i раз). Поэтому попробуйте отсекать 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
#include <iostream>
using namespace std;
int main(int argc, const char* argv[])
{
    int N = 0;
    while (N < 1)
    {
        cout << "Number of elements of array: N = ";
        cin >> N;
    }
 
    int* a = new int[N];
    cout << "Enter elements of array:" << endl;
    for (int i = 0; i < N; i++)
        cin >> a[i];
    cout << "Array before forming:" << endl;
    for (int i = 0; i < N; i++)
        cout << a[i] << " ";
 
    cout << "Array after forming:" << endl;
    for (int i = 0; i < N; i++)
    {
        if ((i + 1) % 3 == 0)
            a[i] = a[i] * i;
        cout << a[i] << " ";
    }
 
    delete[] a;
 
    system("pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2021, 16:24
Ответы с готовыми решениями:

Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет
Условие задачи: Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию,...

Нарисовать график I от cos2 в том случае, если падающий на анализатор свет будет естественным, неполяризованным
Нужно нарисовать график зависимости I от cos2 1 - том случае, если падающий на анализатор свет будет естественным, неполяризованным. ...

Двумерный массив заполняется рандомом, вывести его только в том случае если сумма элементов массива будет = 0
вот мой вариант может нужно что-то подправить. var sum:integer; begin sum:=0; for i:=1 to 5 do begin for...

14
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
25.03.2021, 16:30
Лучший ответ Сообщение было отмечено 5olyarka как решение

Решение

5olyarka, сделайте, например, так:
C++
13
14
15
16
17
18
19
20
21
22
23
    cout << "Enter elements of array:" << endl;
    for (int i = 0; i < N; i++)
    {
        while (true)
        {
            cin >> a[i];
            if (a[i] != 0)
                break;
            cout << "Enter number != 0" << endl;
        }
    }
1
 Аватар для 5olyarka
13 / 11 / 3
Регистрация: 09.03.2021
Сообщений: 162
25.03.2021, 16:39  [ТС]
Спасибо,надеюсь в этот раз всё утсроит,а здесь поможешь так же пожалуйста?какие строчки просто заменить,здесь та же ошибка он говорит.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main(int argc, const char* argv[])
{
    int N;
    cout << "Number of elements of array: N = ";
    cin >> N;
    int* a = new int[N];
    cout << "Enter elements of array:" << endl;
    for (int i = 0; i < N; i++)
        cin >> a[i];
    cout << "Array before forming:" << endl;
 
    for (int i = 0; i < N-1; i++)
        if (i<8)
            a[i]= a[i]*a[i]*a[i];
    for (int i = 0; i < N ; i++)
        cout << a[i] << " ";
 
}
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
25.03.2021, 16:50
Цитата Сообщение от 5olyarka Посмотреть сообщение
Некорректный результат алгоритма будет в том случае, если введен 0 как значение элемента (не видно, было ли увеличение в i раз). Поэтому попробуйте отсекать 0 на вводе.
Можно попробовать (только один цикл while на вводе, не надо 2 цикла как Liv сделал):
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>
using namespace std;
int main(int argc, const char* argv[])
{
    int N = 0;
    while (N < 1)
    {
        cout << "Number of elements of array: N = ";
        cin >> N;
    }
 
    int* a = new int[N];
    cout << "Enter elements of array:" << endl;
    int i = 0;
    while (i < N)
    {
        cout << "a[" << i + 1 << "] = ";
        cin >> a[i];
        if (a[i])
            i++;
    }
        
    cout << "Array before forming:" << endl;
    for (i = 0; i < N; i++)
        cout << a[i] << " ";
 
    cout << "Array after forming:" << endl;
    for (i = 0; i < N; i++)
    {
        if ((i + 1) % 3 == 0)
            a[i] = a[i] * i;
        cout << a[i] << " ";
    }
 
    delete[] a;
 
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от 5olyarka Посмотреть сообщение
какие строчки просто заменить,здесь та же ошибка он говорит.
Какие условия задачи ?
1
 Аватар для 5olyarka
13 / 11 / 3
Регистрация: 09.03.2021
Сообщений: 162
25.03.2021, 17:05  [ТС]
у 2 задачи условие Ввести одномерный массив А из N элементов. Все элементы массива меньше восьми возвести в третью степень. Массив вывести до и после преобразований.
Вот код,твой даже вроде бы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main(int argc, const char* argv[])
{
    int N;
    cout << "Number of elements of array: N = ";
    cin >> N;
    int* a = new int[N];
    cout << "Enter elements of array:" << endl;
    for (int i = 0; i < N; i++)
        cin >> a[i];
    cout << "Array before forming:" << endl;
 
    for (int i = 0; i < N-1; i++)
        if (i<8)
            a[i]= a[i]*a[i]*a[i];
    for (int i = 0; i < N ; i++)
        cout << a[i] << " ";
 
}
Здесь та же ошибка,как я понимаю,преподавателю не нравится Некорректный результат алгоритма будет в том случае, если введен 0 как значение элемента (не видно, было ли увеличение в i раз). Поэтому попробуйте отсекать 0 на вводе.
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
25.03.2021, 17:17
Цитата Сообщение от 5olyarka Посмотреть сообщение
какие строчки просто заменить
Ну так, поменяйте строки 9-11 строки на приведенное мной

Добавлено через 3 минуты
Цитата Сообщение от Volga_ Посмотреть сообщение
не надо 2 цикла
Да ради Бога Все пути ведут в Рим
1
 Аватар для 5olyarka
13 / 11 / 3
Регистрация: 09.03.2021
Сообщений: 162
25.03.2021, 17:20  [ТС]
хорошо спасибо

Добавлено через 2 минуты
заменил строки 9-11 на ваши,и что-то не получается,бесконечно ввожу массив
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
25.03.2021, 17:28
Цитата Сообщение от 5olyarka Посмотреть сообщение
заменил строки
Показываем, что получилось
0
 Аватар для 5olyarka
13 / 11 / 3
Регистрация: 09.03.2021
Сообщений: 162
25.03.2021, 17:30  [ТС]
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
#include <iostream>
using namespace std;
int main(int argc, const char* argv[])
{
    int N;
    cout << "Number of elements of array: N = ";
    cin >> N;
    int* a = new int[N];
    cout << "Enter elements of array:" << endl;
    for (int i = 0; i < N; i++)
    {
        while (true)
        {
            cin >> a[i];
            if (a[i] != 0)
                break;
            cout << "Enter number != 0" << endl;
        }
    }
    cout << "Array before forming:" << endl;
 
    for (int i = 0; i < N-1; i++)
        if (i<8)
            a[i]= a[i]*a[i]*a[i];
    for (int i = 0; i < N ; i++)
        cout << a[i] << " ";
 
}
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
25.03.2021, 17:39
Лучший ответ Сообщение было отмечено 5olyarka как решение

Решение

5olyarka, как я понимаю, мы должны сделать снизу:
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>
using namespace std;
int main(int argc, const char* argv[])
{
    int N = 0;
    while (N < 1)
    {
        cout << "Number of elements of array: N = ";
        cin >> N;
    }
 
    int* a = new int[N];
    cout << "Enter elements of array:" << endl;
    int i = 0;
    while (i < N)
    {
        cout << "a[" << i + 1 << "] = ";
        cin >> a[i];
        if (a[i])
            i++;
    }
 
    cout << "Array before forming:" << endl;
    for (i = 0; i < N; i++)
        cout << a[i] << " ";
 
    cout << "Array after forming:" << endl;
    for (i = 0; i < N; i++)
    {
        if (a[i] < 8)
            a[i] = a[i] * *a[i] * a[i];
        cout << a[i] << " ";
    }
 
    delete[] a;
 
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от 5olyarka Посмотреть сообщение
if (i<8)
Цитата Сообщение от 5olyarka Посмотреть сообщение
Все элементы массива меньше восьми
Почему i<8 ? Должно быть a[i] < 8 .

Добавлено через 1 минуту
Цитата Сообщение от liv Посмотреть сообщение
Да ради Бога Все пути ведут в Рим
Конечно ! Но нам надо кодировать с оптимизацией по-моему.
1
 Аватар для 5olyarka
13 / 11 / 3
Регистрация: 09.03.2021
Сообщений: 162
25.03.2021, 17:41  [ТС]
то есть мне заменить i на a[i] и "проблема" будет устранена?
В 30 строке
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
25.03.2021, 17:45
5olyarka, ладушки, тогда усложним анализ, т.к. при вводе буковок вместо числа действительно происходит зацикливание...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    for (int i = 0; i < N; i++)
    {
        while (true)
        {
            cin >> a[i];
            if (cin.fail())
            {
                cin.clear();            // то возвращаем cin в 'обычный' режим работы
                cin.ignore(32767, '\n'); // и удаляем значения предыдущего ввода из входного буфера
                cout << "Enter number != 0" << endl;
            }
            else
            {
                cin.ignore(32767, '\n');        // удаляем лишние значения
                if (a[i] != 0)
                    break;
                cout << "Enter number != 0" << endl;
            }
        }
 
    }
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
25.03.2021, 17:46
Цитата Сообщение от 5olyarka Посмотреть сообщение
то есть мне заменить i на a[i] и "проблема" будет устранена?
Попробуйте мой код, и продолжим обсудить !
1
 Аватар для 5olyarka
13 / 11 / 3
Регистрация: 09.03.2021
Сообщений: 162
25.03.2021, 17:46  [ТС]
да,всё отлично,большое спасибо
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
25.03.2021, 17:49
Цитата Сообщение от Volga_ Посмотреть сообщение
Но нам надо кодировать с оптимизацией по-моему
Надо кодировать, чтобы работало.
"Защиту от дурака" никто не отменял. Введите у себя буковку...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2021, 17:49
Помогаю со студенческими работами здесь

Border у body работает только в том случае если у него установлено значение float
Резиновый сайт ширина которого от 960 до 1280. По середине лого, ширина которого 100%. Дальше идет меню, боковая панель, новости и т.д. Что...

Добавить значение в combobox только в том случае, если его нет уже в списке
Всем доброго времени суток! Подскажите, пожалуйста. Вопрос в следующем: НА форме есть Combobox, TextBox и кнопка. Заполнение...

Добавить значение в таблицу, только в том случае, если в таблице уже нету такого значения.
Есть метод добавления в таблицу данных. Как мне сделать так, чтобы значение добавилось только в том случае, если в таблице нету уже такого...

Как в программе вызывать функцию в том случае если её ввели в консоли?
Подробнее: Необходимо вызвать функцию asd() когда ввели в консоли asd(...), но сколько раз ввели мне неизвестно, через while True -...

Как сделать, чтобы пункт меню создавался, только в том случае, если его еще нет?
Используя событие Workbook_Open() создаю дополнительный пункт в конце стандартного меню. При закрытии книги удаляю. Как сделать,...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru