Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59

Поменять местами в массиве последнее простое число и первое совершенное

21.10.2010, 20:28. Показов 4070. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер всем!!! Наконец на парах начали разбирать одномерные массивы и вотже столкнулась с практическим заданием.
Задан массив Х(m) целых чисел. Поменять местами в массиве последнее простое число и первое совершенное. Предусмотреть случай, что массив может не содержать простых и совершенных чисел. Удалить из массива все четные числа.
В заранее сем спасибо!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2010, 20:28
Ответы с готовыми решениями:

Поменять местами в массиве последнее простое число и первое совершенное
Задан массив X(m) целых чисел.Поменять местами в массиве последнее простое число первое совершенное.Предусмотреть случай,что массив может...

Поменять местами последнее простое число в файле с наименьшим совершенным
Создать двоичный файл, куда записать n вещественных чисел. Поменять местами последнее простое число в файле с наименьшим совершенным. ...

В исходном массиве найти и поменять местами первое минимальное и последнее максимальное значение))
А-исходный массив ( 5;-8;6;-7;-8;6;-8;6;4) -8 первое min значение 6 ...

9
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
21.10.2010, 20:30
Говорите что именно не понятно,если что подскажем.
0
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
21.10.2010, 20:33  [ТС]
Как менять местами элементы массива?и как учесть,чесли в массиве нет простых и совершенных чисел?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
21.10.2010, 20:41
Ето уже обсуждалось,вот Функция
1
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
21.10.2010, 23:17
Вот только четные числа не удалил

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
49
50
51
52
53
54
55
#include <iostream>
#include <ctime>
using namespace std;
 
bool IsPrime(int n);
bool IsPerfect(int n);
 
int main()
{
    srand(time(NULL));
    const int m(100);
    int X[m];
    for(int i = 0;i < m;++i){
        X[i] = rand()%100;
    cout << X[i] << " ";
}
cout << "\n\n";
int prime, prime_ind;
for(int i = m-1;i >= 0 ;--i)
if(IsPrime(X[i])) { prime = X[i];  prime_ind = i; break;}
else if(i == 0 && !IsPrime(X[0])) cout << "No prime numbers found";
 
int perfect, perf_ind;
for(int i = 0;i < m;++i)
if(IsPerfect(X[i])) {perfect = X[i];  perf_ind = i; break;}
else if(i == m-1 && !IsPerfect(X[99])) cout << "No perfect numbers found";
 
int t = X[perf_ind]; X[perf_ind] = X[prime_ind]; X[prime_ind] = t;
for(int i = 0;i < m;++i)
    cout << X[i] << " ";
 
 
    system("pause");
}
 
bool IsPrime(int n)
{
    if(n < 2) return false;
    for(int i = 2; i*i <= n;++i)
        if(n%i == 0) return false;
    return true;
}
 
bool IsPerfect(int n)
{
    if(n < 6) return false;
int d[20], index = 0, sum = 0;
    for(int i = 1;i < n;++i)
        if(n%i == 0) {d[index] = i; index++;}
 
        for(int i = 0;i < index;++i)
            sum += d[i];
 
        return sum == n;
}
1
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
22.10.2010, 09:15  [ТС]
Уважаемый NikolaWhite,а вы бы не могли прокоментировать свои программу,если Вам не сложно???

Добавлено через 59 секунд
Или кто-нибудь прооментируете пожалуйста код программы NikolaWhite. Всем спасибо
0
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
22.10.2010, 14:01
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <ctime> // это для генерации случайных чисел(srand(time(NULL)) , rand()) 
using namespace std;
 
bool IsPrime(int n); // прототип функции, которая определяет является ли число простым
bool IsPerfect(int n); // прототип функции,которая определяет является ли число совершенным
                                 // сами функции расположены после main() внизу
int main()
{
        srand(time(NULL)); // семя случайных чисел( от времени)
        const int m(100); // размер массива(должен быть const т.е. постоянным)
        int X[m]; // объявляем массив целых чисел (int)
        for(int i = 0;i < m;++i){ // цикл выполняется m раз(100)
                X[i] = rand()%100; /* на каждом проходе цикла каждому из 100 элементов массива
присваивается случайное значение от 0 до 99 */
        cout << X[i] << " "; // и выводится на экран
}
cout << "\n\n";
int prime; // переменная для хранения простого числа
 prime_ind;  /* в этой переменной будет храниться индекс,под которым это простое число расположено в массиве */
for(int i = m-1;i >= 0 ;--i) // этот цикл ищет простое число с конца массива
if(IsPrime(X[i])) { prime = X[i];  prime_ind = i; break;} /* каждый элемент массива передается в качестве
      параметра функции IsPrime(). Если IsPrime() возвращает true, то значение данного элемента 
     присваевается переменной prime. А i (индекс под которым эта переменная расположена в массиве)
    присваевается переменной prime_ind. Раз простое число и его индекс найдены,прерываем цикл - break; */
 
else if(i == 0 && !IsPrime(X[0])) cout << "No prime numbers found"; /* если дошли от конца до начала
        массива(i = 0) и не нашли простого числа !IsPrime() - выводим сообщение что не найдено
   знак '!' значит "не" */
int perfect; // аналогичным образом заводим переменную для хранения совершенного числа....
perf_ind; // и его индекса в массиве
for(int i = 0;i < m;++i)  /* с начала массива посылаем каждый элемент в качестве аргумента функции IsPerfect(
if(IsPerfect(X[i])) {perfect = X[i];  perf_ind = i; break;} /* если функция сообщает что это совершенное число,
    то его значение присваивается переменной perfect, а индекс присваевается переменной perf_ind.
     И цикл перывается - break; */
else if(i == m-1 && !IsPerfect(X[99])) cout << "No perfect numbers found";
 
int t = X[perf_ind]; X[perf_ind] = X[prime_ind]; X[prime_ind] = t; /* Меняем их местами используя временную
    переменную t */ 
for(int i = 0;i < m;++i)
        cout << X[i] << " ";
 
 
        system("pause");
}
 
bool IsPrime(int n)
{
        if(n < 2) return false;
        for(int i = 2; i*i <= n;++i)
                if(n%i == 0) return false;
        return true;
}
bool IsPerfect(int n)
{
        if(n < 6) return false;
int d[20], index = 0, sum = 0;
        for(int i = 1;i < n;++i)
                if(n%i == 0) {d[index] = i; index++;}
 
                for(int i = 0;i < index;++i)
                        sum += d[i];
 
                return sum == n;
}
1
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
28.10.2010, 20:14  [ТС]
А как из данного массивы можно удалить четные числа???
0
1 / 1 / 0
Регистрация: 01.10.2010
Сообщений: 59
30.10.2010, 17:32  [ТС]
Уважаемый NikolaWhite, я запустила Вашу программу и у меня вывелись ошибки:
1)warning C4244: аргумент: преобразование 'time_t' в 'unsigned int', возможна потеря данных
2)error C2181: недопустимый else без парного if
0
Бродяга
 Аватар для dihlofos
315 / 269 / 56
Регистрация: 27.08.2010
Сообщений: 553
31.10.2010, 08:26
Селявкина Мария, воспользуйтесь предыдущим кодом, который без комментриев. Или исправьте:
19:
C++
1
int prime, // запятая, а не;
31:
C++
1
int perfect, // запятая, а не;
33:
C++
1
for(int i = 0;i < m;++i)  // с начала массива посылаем каждый элемент в качестве аргумента функции IsPerfect()
Добавлено через 19 минут
Ещё вариант, вдогонку:

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include "stdafx.h"
#include <iostream>
#include <cmath>
 
using namespace std;
 
bool simple (int x)
{
    if(x<=1)
              return 0;
 
        int i;
        for(i=2; i<=sqrt((double)x); ++i)
        if (x%i==0)
                      return 0;
    return 1;
}
 
bool perfect (int x)
{
        if (x<=0)
        return 0;
        int i,sum=0;
 
        for (i=1;i<=x/2;++i)
        if (x%i==0)
            sum+=i;
 
    if(x==sum)
        return 1;
 
    return 0;
}
 
int main()
{
    const int SIZE=10;
    int i, j, arr[SIZE], tmp;
 
    // ввод
    for(i=0; i<SIZE; ++i)
    {
        cout<<"Vvedite element ["<<i<<"]: ";
        cin>>arr[i];
    }
 
    // Ищем первое совершенное число с начала массива
    for(i=0; i<SIZE; ++i)
    {
        if(perfect(arr[i]))
            break;
    }
 
    if(i==SIZE) // отсутствуют совершенные, не проводим проверку на простые
        cout<<"Net sovershennyh\n";
    else        // Иначе, ищем первое простое число с конца массива
    {
        for(j=SIZE-1; j>=0; --j)
            if(simple(arr[j]))
                break;
 
        if(j==-1)       // отсутствуют простые, не меняем местами
            cout<<"Net prostyh\n";
        else        // иначе меняем местами
        {
            tmp = arr[i];
            arr[i]=arr[j];
            arr[j]=tmp;
        }
    }
 
    // вывод
    cout<<"\nAfter changing: ";
    for(i=0; i<SIZE; ++i)
        cout<<arr[i]<<' ';
 
    // Удаление чётных
    int n=SIZE;
    for (i=0; i<n; ++i)
    {
        if (arr[i]%2==0)
        {
            for(j=i+1; j<n; j++)
                arr[j-1]=arr[j];
            --i;
            --n;
        }
    }
 
    // вывод
    cout<<"\nAfter deleting: ";
    for(i=0; i<n; ++i)
        cout<<arr[i]<<' ';
 
    cout<<endl;
    system("pause");
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2010, 08:26
Помогаю со студенческими работами здесь

Сложить пятнадцатое простое , четвертое совершенное и первое нечетное избыточное число
Сложить пятнадцатое простое , четвертое совершенное и первое нечетное избыточное число( составить 3 функции , которые будут проверять...

Создать типизированный файл, куда записать n целых чисел. Поменять местами последнее совершенное и третье
Создать типизированный файл, куда записать n целых чисел. Из файла создать массив, где поменять местами последнее совершенное и третье...

Поменять местами первое и последнее слово
Помогите написать программу. &quot;Поменяйте местами первое и последнее слово&quot; (ввод строк организуйте в программе. Строка должна состоять...

Поменять местами первое и последнее слово
Ребят, помогите пожалуйста доделать скрипт. Надо поменять местами первое и последнее слово. Предварительная наработка вот &lt;!DOCTYPE...

Поменять местами первое и последнее предложение
Доброго времени суток,недавно попалась задача где нужно поменять местами 1-ое и последнее предложение.Но так получилось что я не могу...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru