Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2017, 11:56   #1
Kapralick
 
Регистрация: 17.06.2017
Сообщений: 7
По умолчанию Сформировать массив, поместив в него значения индексов тех элементов первого массива, которые являются простыми числами

Доброго времени суток. Мне дали задание:"Дан целочисленный массив A[N]. Сформировать массив B[M], поместив в него значения индексов тех элементов массива A, которые являются простыми числами." Я написал под это задание программу:
Код:
#include "stdafx.h" 
#include<math.h> 
#include <conio.h> 
#include <iostream> 
#include <cstdlib> 
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int A[100];
    int B[100];
    int i, j, N, M = 0;
    cout << "введите размер массива N:";
    cin >> N;
    for (i = 0; i < N; i++)
    {
        cout << "введите элемент массива A[" << i << "]:";
        cin >> A[i];
    }
    for (i = 0; i < N; i++)
    {
        for (j = 2; j < A[i]; j++)
        {
            if (A[i] % j == 0)
            {
                A[i] = 1;
            }
        }
 
    }
    for (i = 0; i < N; i++)
    {
        if (A[i] != 1)
        {
            B[M] = i;
            cout << "B[" << M << "]=" << B[M] << endl;
            M++;
        }
    }
    system("pause");
}
Возник вопрос:как можно переделать эту программу, она работает правильно, но сам вид не удовлетворяет преподавателя.

Последний раз редактировалось Аватар; 04.10.2017 в 12:08.
Kapralick вне форума Ответить с цитированием
Старый 04.10.2017, 12:27   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Так у него и спросите, что ему не нравится.
Croessmah вне форума Ответить с цитированием
Старый 04.10.2017, 12:31   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Вынести проверку простоты в функцию
Либо динамические массивы, либо проверять, что N < 100
p51x вне форума Ответить с цитированием
Старый 04.10.2017, 13:58   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а я бы на месте преподавателя обязательно придрался к тому, что проверка портит исходный массив, заменяя все не простые числа единицами.

ну и вынести проверку на простоту в отдельную функцию, имхо, хорошая идея:
Код:
    int m=-1;
    for (i = 0; i < N; i++)
    {
        if(isSimple(A[i])
            B[++m]=i;
    }
плюс, в конце, перед выводом массива B, добавить проверку на то, что простых чисел в исходном массиве вообще не было (if (m<0) cout << "Нет простых чисел в исходном массиве";

Последний раз редактировалось Serge_Bliznykov; 04.10.2017 в 14:00.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать массив Y из тех элементов массива Х, которые больше суммы двух соседних предыдущих Vladkp Помощь студентам 9 17.03.2017 22:28
Дан одномерный массив из 30 элементов. Сформировать второй массив, в котором сначала идут все элементы первого массива, кратные 5, Olzhakesh C# (си шарп) 1 29.04.2014 23:49
Числа вводятся по одному с клавиатуры. Определить сумму тех из них, которые являются парными и тех, которые являются нечетными. d_dima Помощь студентам 3 13.03.2013 12:19
Массив целых положительных чисел Х. сформулировать массив c номерами элементов массива Х, являющихся простыми числами (С++) ereminden_23 Помощь студентам 5 18.04.2012 20:28
Составить два массива с различными простыми числами среди элементов исходного массива и их частотами maksimum Помощь студентам 7 09.04.2012 17:05