![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 28.01.2022
Сообщений: 17
|
![]()
Не могу решить простую задачу.
Не проходит решение. Подскажите пожалуйста, что не так? Напишите программу, которая запрашивает натуральное число N (не более 100), далее последовательность из N целых чисел, и выводит "YES", если элементы в массиве расположены симметрично, и "NO", если иначе. Sample Input 1: 7 3 6 8 1 8 6 3 Sample Output 1: YES Sample Input 2: 8 4 13 9 3 5 9 13 4 Sample Output 2: NO #include <iostream> using namespace std; int main() { int i,a[100], n, j, m=0, p=0; cin>>n; for (int i=0; i<n; i++){cin>>a[i];} for (i=0; i<n; i++) {p++;} for (j=n-1; j>=0; j--) {m--;} if(p==m) {cout<<"YES";} else {cout<<"NO";} return 0; } |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,381
|
![]()
Попробуй реализовать такой алгоритм.
Код:
Как-то так, ...
Последний раз редактировалось ViktorR; 14.02.2022 в 15:39. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 28.01.2022
Сообщений: 17
|
![]()
спасибо
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 28.01.2022
Сообщений: 17
|
![]()
с флагом не получилось.
А этот код не проходит, хотя показывает все правильно. #include <iostream> using namespace std; int main() { // put your code here int a[100], i, k, n; cin>>n; for (i=0; i<n; i++){ cin>>a[i]; } for (i=0; i<n/2; i++){k=n/2;} if (a[k]==a[n-1-k]) { cout<<"YES"<<'\n'; return 0; } cout<<"NO"<<'\n'; return 0; } |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
![]() |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,381
|
![]()
Вот фрагмент вашего кода:
Код:
Код:
1. i присваивается начальное значение равное нулю. Если i < n/2, то k присваивается значение n/2. Иначе Завершаем 2. Следующий шаг цикла: i увеличивается на 1: i++ Если i < n/2, то k = n/2 Иначе Завершаем 3. Переходим к п.2. И что в этом разумного? Код:
В цикле k многократно получило значение n / 2. Это середина последовательности. Вышли из цикла и: Сравниваем элемент слева от середины с элементом справа от середины. Если эти два элемента равны, то выводим YES. Т.е. последовательность 1 2 3 4 4 5 6 7 симметрична. ![]() И что значит не получилось с флагом: Код:
Код:
Код:
Разберитесь с этим. А так получается, что "Спасибо", а в голову не вошло.
Как-то так, ...
Последний раз редактировалось ViktorR; 14.02.2022 в 18:02. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 28.01.2022
Сообщений: 17
|
![]()
Не все сразу. Разберусь
Всё равно за объяснение спасибо. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 28.01.2022
Сообщений: 17
|
![]()
#include <iostream>
using namespace std; int main() { int a[100], i, n, j, k=0; cin>>n; for (i=0; i<n; i++){cin>>a[i];} for (i=0; i<n/2; i++) { if (a[i]==a[n-1-i]) { k++; } } if (n/2 == k){ cout<<"YES"; } else cout<<"NO"; return 0; } |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,381
|
![]()
Это подходящее решение.
Одно замечание: Цикл, в котором просматриваются элементы всегда выполняется до конца. Т.е., если первый элемент не равен последнему, то массив всё равно будет просмотрен, хотя в этом нет необходимости. Ситуацию можно изменить, если в условном операторе внутри цикла добавить ветку Else с командой break: Код:
1. Введи / вставь код. 2. Выдели код и нажми кнопку [CODE], которая есть над окном ввода. Это позволит форматировать код и код будет лучше восприниматься. Не ленись при форматировании кода. Это очень полезная вещь. В Python выделение блока операторов делается только пробелами. В Си есть фигурный скобки, а в Паскале begin ... end. Такие скобки "балуют" начинающих. Не форматировать текст - это очень Плохо. ![]()
Как-то так, ...
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 28.01.2022
Сообщений: 17
|
![]()
Хорошо.
Скопировала текст в заметки. Спасибо |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
МАССИВЫ одномерные | КИРИТО | Фриланс | 1 | 17.12.2018 17:56 |
Одномерные массивы | mixaM | Общие вопросы C/C++ | 1 | 11.10.2017 15:15 |
Одномерные массивы | Maxpaen | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 24.05.2015 10:42 |
Одномерные массивы, двумерные массивы, строки | Sand093 | C++ Builder | 11 | 20.05.2012 21:48 |
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент | LyaLya | Помощь студентам | 15 | 20.12.2009 14:12 |