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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2017, 14:59   #1
Rainbow_
Пользователь
 
Регистрация: 18.03.2017
Сообщений: 35
Радость содержимое массива наоборот.

Здравствуйте. Написала программу для такой задачи, а она до середины переворачивает содержимое массива, а потом идет не до конца, а в обратную сторону, почему-то

Входными данными является массив из 10 элементов, заполненный пользователем с клавиатуры.



Код:
#include<iostream>
using namespace std;
void main ()
{
const int size=10;
int ar[size];
for(int i=0;i<size;i++)
	{
	cout<<"Enter element\n";
	cin>>ar[i];
    }
	cout <<"\n\n";
for(int i=0;i<size;i++)
	{
	ar[i]=ar[size-1-i];
	cout<<ar[i]<<" ";
	}
}
Rainbow_ вне форума Ответить с цитированием
Старый 10.05.2017, 15:07   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы изменяете массив во время цикла, а не просто выводите.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.05.2017, 15:08   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Зайдем издалека - напишите код, который меняет две переменные местами.
int a = 10;
int b = 20;
waleri вне форума Ответить с цитированием
Старый 10.05.2017, 17:29   #4
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Есть множество способов как сделать это:
1) В современных языках C++ есть функция reverse;
2) В Вашем коде. Нужно сначала поменять все элементы, используя функцию swap, нужно доходить до середины массива, а не идти через весь массив;
3) Ну да, и эта ошибка тоже здесь есть. Этот 2-й for нужно разделить на 2 fora: 1-й for: моддификация массива и 2-й for: вывод на экран этого массива.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 10.05.2017, 17:40   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
нужно доходить до середины массива, а не идти через весь массив
Да можно и через весь массив пройдти, беда в том, что обмен не имеет место быть.
waleri вне форума Ответить с цитированием
Старый 10.05.2017, 18:24   #6
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
1) В современных языках C++ есть функция reverse;
Она и в C++98 была.
Не знаю, можно ли это считать современным?
Croessmah вне форума Ответить с цитированием
Старый 10.05.2017, 18:27   #7
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Это потому, что когда вы доходите до середины, у вас в массиве от начала до середины уже поменяются значения на те, которые после середины. Там уже нет 1,2,3,4,5.
KAMLS вне форума Ответить с цитированием
Старый 10.05.2017, 19:43   #8
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Да можно и через весь массив пройти, беда в том, что обмен не имеет место быть.
- Вы бред говорите, товарищ, нужно идти только до середины массива. Я еще хотел добавить к своим словам, что можно использовать функцию swap(), а можно и самому написать эту функцию:
Код:
z = a[size - 1 - i];
a[size - 1 - i] = a[i];
a[i] = z;
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 10.05.2017, 22:42   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Вы бред говорите
Вы улавливаете разницу между "можно" и "нужно"?
Код обмена мне писать не надо, я как бы в курсе...
waleri вне форума Ответить с цитированием
Старый 11.05.2017, 09:53   #10
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Я и не Вам написал, а автору темы. Какой смысл проходить весь массив, если достаточно только до половины?
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переслать содержимое регистра AX в восьмой элемент третьей строки двумерного массива. aanaaa Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 20.06.2013 08:50
Не получается перевернуть наоборот строку символьного массива. Zaza7 Общие вопросы C/C++ 8 30.10.2012 13:40
Вывести содержимое массива в форму volodya21082012 Общие вопросы Delphi 1 21.08.2012 20:04
For Each наоборот Вождь Microsoft Office Word 26 13.04.2011 22:09
Делфи. Как очистить содержимое массива? S_Yevgeniy Помощь студентам 12 12.08.2009 17:54