Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/30: Рейтинг темы: голосов - 30, средняя оценка - 4.90
8 / 8 / 5
Регистрация: 21.11.2012
Сообщений: 98

Дан массив целых чисел. Записать его элементы в обратном порядке.

21.11.2012, 19:00. Показов 6143. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Помогите, пожалуйста, в следующем.


Дан массив целых чисел. Записать его элементы в обратном порядке.
Что здесь не так?

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
#include "stdafx.h"
#include "math.h"
 
void main()
{int const n=3;
int a[n], b[n], i;
printf("Vvedite elementi massiva \n");
 
for(i=0;i<n;i++)
     {scanf_s ("%i",&a[i]);}
 
for (i=0;i<n;i++)
     {printf ("%i \t",a[i]);}      
 
printf ("\n");                      
 
 
for (i=0;i<n;i++)
     {b[i]=a[i];
      a[i]=a[n-i];
      a[n-i]=b[i];}
 
for (i=0;i<n;i++)
     {printf ("%i \t",a[i]);}
printf ("\n");
}

Сформировать массив простых чисел, не превышающих заданное натуральное число N.
Но программка по моему коду формирует массив простых чисел (введённое мной их кол-во), а нужно, чтобы находило все простые числа до указ. числа. Что тут не так?

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
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
void main()
{
int const n=100; 
int A[n];
int m, k, i, c, b=0;
printf("Vvedite chislo: \t");
scanf("%i",&c);
for(i=0, m=2; i<c; m++) 
{           for (k=0; k<i; k++)
             if (m%A[k]==0)
                 break;
             if (i==k)
                 A[i++]=m;
}
 
for(i=0;i<c;i++) 
printf("%i \t ", A[i]);
printf ("\n");
 
 
}
и помогите с этим:
Последовательность а1, а2, ..., an состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы.


Заранее огромнейшее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2012, 19:00
Ответы с готовыми решениями:

Дан массив из 10 целых чисел. Записать цифры числа в обратном порядке, используя рекурсию
Например: Массив: 123 34 12 11 87 19 86 64 283 12398 Должен превратиться в: 321 43 21 11 78 91 68 46 382 89321

Дан массив чисел b1,b2,...,b17. Записать его в обратном порядке.
Всем привет! Срочно нужна помощь знающих людей! Надеюсь на вашу снисходительность ;) Дан массив чисел b1,b2,...,b17. Записать его в...

Дан массив из N целых чисел.Изменить его таким образом чтоб его значения шли в обратном порядке.
Дан массив из N целых чисел.Изменить его таким образом чтоб его значения шли в обратном порядке.

14
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
21.11.2012, 19:13
Цитата Сообщение от lampard14 Посмотреть сообщение
Дан массив целых чисел. Записать его элементы в обратном порядке.
C++
1
2
for (int i = 0; i < SIZE / 2; ++i)
    std::swap(arr[i], arr[SIZE - i - 1]);
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.11.2012, 19:18
Цитата Сообщение от go Посмотреть сообщение
C++
1
2
for (int i = 0; i < SIZE / 2; ++i)
    std::swap(arr[i], arr[SIZE - i - 1]);
Зачем ж так, если есть
C++
1
std::reverse(arr, arr + SIZE);
0
8 / 8 / 5
Регистрация: 21.11.2012
Сообщений: 98
21.11.2012, 19:21  [ТС]
Цитата Сообщение от go Посмотреть сообщение
C++
1
2
for (int i = 0; i < SIZE / 2; ++i)
    std::swap(arr[i], arr[SIZE - i - 1]);
Огромное спасибо за подсказку. Был бы очень рад, если бы помогли со 2(про простые числа)

Добавлено через 1 минуту
Цитата Сообщение от MrGluck Посмотреть сообщение
Зачем ж так, если есть
C++
1
std::reverse(arr, arr + SIZE);
C++
1
2
for (i=0;i<n;i++)
     {b[i]=a[n-i-1];}
у меня вот так заработало))
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.11.2012, 19:21
Цитата Сообщение от lampard14 Посмотреть сообщение
и помогите с этим:
Последовательность а1, а2, ..., an состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы.
C++
1
std::sort(arr, arr + SIZE);
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
21.11.2012, 19:24
Цитата Сообщение от MrGluck Посмотреть сообщение
Зачем ж так, если есть
ну std::swap я зря заюзал. Лень было свой писать. ТС скорее всего хочет все ручками писать без STL.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.11.2012, 19:31
Цитата Сообщение от go Посмотреть сообщение
ну std::swap я зря заюзал. Лень было свой писать. ТС скорее всего хочет все ручками писать без STL.
Раз уж STL, так лучше нужный алгоритм.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
21.11.2012, 19:41
Цитата Сообщение от MrGluck Посмотреть сообщение
Раз уж STL, так лучше нужный алгоритм.
Я не использовал STL. Просто для внятности. Так лучше?
C++
1
2
3
4
5
6
7
8
9
10
template <typename T>
void swap(T& a, T& b)
{
    T t = a;
    a = b;
    b = t;
}
 
for (int i = 0; i < SIZE / 2; ++i)
    swap(arr[i], arr[SIZE - i - 1])
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.11.2012, 19:44
Цитата Сообщение от go Посмотреть сообщение
Я не использовал STL
Как это не использовал?
std::swap чисто случайно в algorithm.h и шаблонная?
C++
1
2
3
4
template <class T> void swap ( T& a, T& b )
{
  T c(a); a=b; b=c;
}
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
21.11.2012, 19:45
Цитата Сообщение от MrGluck Посмотреть сообщение
std::swap чисто случайно в algorithm.h и шаблонная?
Прочтите еще раз мой пред. пост.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.11.2012, 19:55
Цитата Сообщение от go Посмотреть сообщение
Прочтите еще раз мой пред. пост.
Цитата Сообщение от go Посмотреть сообщение
C++
1
2
for (int i = 0; i < SIZE / 2; ++i)
    std::swap(arr[i], arr[SIZE - i - 1]);
По-моему, реализация несколько отличается от
C++
1
2
3
4
5
6
7
template <typename T>
void swap(T& a, T& b)
{
    T t = a;
    a = b;
    b = t;
}
Или вы это в алгоритме правили?) Раз уж пространство имен std использовали.

Вы наверняка должны знать, что именно вызовется в строчке
C++
1
std::swap(arr[i], arr[SIZE - i - 1]);
Если нет - можете дописать в собственной реализации вывод текста на экран и убедиться, что при указании полного имени функции, ваша ни на что не повлияет.
Зачем юлить то так, ну ошибся - swap конечно намного тривиальней других функций из STL.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
21.11.2012, 20:00
MrGluck, значит еще раз читаем тот пост.
Цитата Сообщение от MrGluck Посмотреть сообщение
Если нет - можете дописать в собственной реализации вывод текста на экран и убедиться,
Мне это не надо. Это очевидные вещи.
Цитата Сообщение от MrGluck Посмотреть сообщение
Вы наверняка должны знать, что именно вызовется в строчке Код C++1
std::swap(arr[i], arr[SIZE - i - 1]);
У меня нет этой строчки.
Я не понимаю, почему Вы так невнимательно смотрите.
Я не использовал STL. Просто для внятности. Так лучше?
просто написать swap, не реалиовав ее нельзя, а реализовывать мне было ее лень.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.11.2012, 20:14
Цитата Сообщение от go Посмотреть сообщение
MrGluck,
У меня нет этой строчки.
Я не понимаю, почему Вы так невнимательно смотрите.
Мне показалось место, где go использует функцию swap, но она не из STL

Разговор был про то, что в вашем первом посте используется функция из STL, но её применение неэффективно ввиду существования уже готовой реализации алгоритма std::reverse. То, что далее вы потом использовали собственную реализацию я не оспариваю, но нельзя отрицать тот фактор, что в своем первом посте вы имели ввиду именно готовую функцию.

Добавлено через 7 минут
Дан массив целых чисел. Записать его элементы в обратном порядке.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int main()
{
    const int N = 5;
    int a[N] = {1, 2, 3, 4, 5};
    for (int i=0; i < N; i++)
        std::cout<< a[i]<< " ";
    std::cout<< std::endl;
 
    for (int i=0; i < N/2; i++)
    {
        int tmp = a[i];
        a[i] = a[N - i - 1];
        a[N - i - 1] = tmp;
    }
 
    for (int i=0; i < N; i++)
        std::cout<< a[i]<< " ";
    std::cout<< std::endl;
    return 0;
}
Думаю на том и порешаем
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
21.11.2012, 20:50
Цитата Сообщение от MrGluck Посмотреть сообщение
вы имели ввиду именно готовую функцию.
Нет. Я дал понять, о какой функции идет речь. Это мы с Вам знаем, что такое swap. ТС может не догадываться о ее существовании.
Цитата Сообщение от MrGluck Посмотреть сообщение
но её применение неэффективно ввиду существования уже готовой реализации алгоритма std::reverse.
Конечно, незачем изобретать велосипед, и увеличивать код. Но позвольте узнать: чем она эффективнее??
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.11.2012, 21:36
Цитата Сообщение от go Посмотреть сообщение
Конечно, незачем изобретать велосипед, и увеличивать код. Но позвольте узнать: чем она эффективнее??
Вы сами ответили на свой вопрос. Лаконичное написание увеличивает удобочитаемость кода и упрощает понимание, все начинается с мелочей. ТС-у ничего не мешало прогуглить реализацию функции и, догадавшись о её примерном механизме, да хотя бы по названия переменных, создать нечто похожее свое. Но ведь так поступают лишь единицы, большинство, видя что не хватает какого-то инклуда, просто добавляют нужное и юзают готовое, и скушал бы он ваш метод с i = 0, arr/2, даже не зная о том, что есть reverse. Если бы не было явного указания области видимости функции, то ваш пост был бы воспринят исключительно как алгоритм, а не конечная реализация. Можно ведь было написать swap и это означало бы действие, а не функцию. Согласитесь, результаты запроса в поисковике std::swap и swap отличаются и первое направило бы его по пути STL, а там есть вариант и получше, как я и указал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2012, 21:36
Помогаю со студенческими работами здесь

Дан массив целых чисел размерности n. Переставить элементы массива в обратном порядке
Массивы. Дан массив целых чисел размерности n. Переставить элементы массива в обратном порядке

Дан массив целых чисел. Располжить его элементы в следующем порядке: сначала чётные, потом нечётные
Дана таблица а из целых чисел, поставить сначала чётные, а потом нечётные элементы. У меня есть код, пробовал отладить, но уже не...

Дан массив размера N. Вывести его элементы в обратном порядке
Дан массив размера N. Вывести его элементы в обратном порядке.

Дан массив размера N. Вывести его элементы в обратном порядке.
N=7 2.99 8.20 1.93 1.36 8.46 5.42 6.76

Дан массив размера N Вывести его элементы в обратном порядке
1.Дан массив размера N. Вывести его элементы в обратном порядке.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
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