|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.02.2022, 15:01 | #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; } |
14.02.2022, 15:21 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Попробуй реализовать такой алгоритм.
Код:
Как-то так, ...
Последний раз редактировалось ViktorR; 14.02.2022 в 15:39. |
14.02.2022, 16:12 | #3 |
Пользователь
Регистрация: 28.01.2022
Сообщений: 17
|
спасибо
|
14.02.2022, 17:00 | #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; } |
14.02.2022, 17:20 | #5 |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
|
14.02.2022, 17:58 | #6 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Вот фрагмент вашего кода:
Код:
Код:
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. |
14.02.2022, 18:21 | #7 |
Пользователь
Регистрация: 28.01.2022
Сообщений: 17
|
Не все сразу. Разберусь
Всё равно за объяснение спасибо. |
15.02.2022, 09:28 | #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; } |
15.02.2022, 12:27 | #9 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Это подходящее решение.
Одно замечание: Цикл, в котором просматриваются элементы всегда выполняется до конца. Т.е., если первый элемент не равен последнему, то массив всё равно будет просмотрен, хотя в этом нет необходимости. Ситуацию можно изменить, если в условном операторе внутри цикла добавить ветку Else с командой break: Код:
1. Введи / вставь код. 2. Выдели код и нажми кнопку [CODE], которая есть над окном ввода. Это позволит форматировать код и код будет лучше восприниматься. Не ленись при форматировании кода. Это очень полезная вещь. В Python выделение блока операторов делается только пробелами. В Си есть фигурный скобки, а в Паскале begin ... end. Такие скобки "балуют" начинающих. Не форматировать текст - это очень Плохо.
Как-то так, ...
|
16.02.2022, 13:15 | #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 |