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

Определить, симметричен ли массив

21.11.2012, 01:04. Показов 17355. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
по многу раз и по-разному подходил к написанию проги(Задан массив из k символов. Определить, симметричен ли он, т. е. читается ли он одинаково слева направо и справа налево.) смотрел решения в интернете..но суть не в этом!!!..сегодня ехал в метро и мне там подсказали довольно интересный способ проверки проги на симметричность(название вроде бы на "ф" начиналось)..а именно сказали, что можно взять какое-то f..написать условие и если оно выполняется то прировнять f к 0(f=0) а если нет то к 1(f=1)..после завершения цикла проверить чему равно f и подвести итог..ну я написал вот такую прогу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
main()
{
    int n"=6",i,f=0;
    char a[n];
    cout<<"vvedite n"<<endl;cin>>n;
    for(i=0;i<n;i++)
    a[n]=rand()%3;
    cout<<a[n]<<" "<<endl;
    for(i=0;i<=n;i++)
    { if (a[n]==a[n-i]) f=0;
    else f+=1;
    }
    if (f=0) cout<<"da";
    else cout<<"net";
    getch();
    return 0;
}
конечно же она не работает..просьба:
если кто понял суть вопроса и понимает о чём речь..подскажите пожалуйста..а лучше напишите конец программы правильно..я в свою очередь проанализирую ошибки и задам вопросы...
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2012, 01:04
Ответы с готовыми решениями:

Вывести Yes, если массив симметричен, и No иначе
Напишите программу, которая вводит с клавиатуры непустой массив целых чисел, и печатает Yes, если массив симметричен, и No иначе. ...

Напечатать “Yes”, если массив симметричен, и “No” в противном случае
10.Напишите программу, которая вводит с клавиатуры непустой массив целых чисел, и печатает “Yes”, если массив симметричен, и “No” в...

Определить, симметричен ли заданный массив
Задан массив из k символов. Определить, симметричен ли он, т. е. читается ли он одинаково слева направо и справа налево.

9
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
21.11.2012, 01:07
симметричный это например 1 2 3 4 5 5 4 3 2 1 такой.

Не по теме:

почему тема большими буквами, здесь у всех нормальное зрение.

0
22 / 22 / 11
Регистрация: 14.11.2012
Сообщений: 64
21.11.2012, 01:08
там видно, где ошибки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
int main()
{
    int n=6,i,f=0;
    char a[n];
    cout<<"vvedite n"<<endl;
    cin>>n;
    for(i=0;i<n;i++)
    a[n]=rand()%3;
    cout<<a[n]<<" "<<endl;
    for(i=0;i<=n;i++)
    { if (a[n]==a[n-i]) f=0;
    else f+=1;
    }
    if (f=0) cout<<"da";
    else cout<<"net";
    getch();
    return 0;
}
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 33
21.11.2012, 01:11  [ТС]
да...
0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
21.11.2012, 01:12
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
 
int main() 
{ 
    const int size = 10; 
    int array[size] = { 1, 2, 3, 4, 5, 5, 4, 3, 2, 1 }; 
    int i, j; 
    int count = 0;
    for ( i = 0, j = size - 1; i < (size / 2); i++, j--) 
        if(array[i] == array[j]) 
            count++; 
    if(count == (size / 2)) 
        std::cout << "Yes " << std::endl; 
    else 
        std::cout << "No " << std::endl;
}
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 33
21.11.2012, 01:20  [ТС]
Цитата Сообщение от Zhor Посмотреть сообщение
n"=6"
кстати на счёт шести..если написать ...n=6... то прога будет чёрных белых и негров выбивать XD

Добавлено через 2 минуты
это не ошибка..это я сам выделил чтобы про негров вспомнить

Добавлено через 3 минуты
дело в том что ваша прога находит число совпадений и проверяет его..а мне нужно
Цитата Сообщение от Zhor Посмотреть сообщение
что можно взять какое-то f..написать условие и если оно выполняется то прировнять f к 0(f=0) а если нет то к 1(f=1)..после завершения цикла проверить чему равно f и подвести итог
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
21.11.2012, 01:33
По-моему здесь доп. переменные ни к чему:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
int main()
{
     const int n = 10;
    int a[n];
     for (int i=0; i<n; i++)
          std::cin>>a[i];
    for (int i=0; i<static_cast<int>(n/2)+1; i++)
          if (a[i]!=a[n-i-1])
              {
                     std::cout<<"No"<<'\n';
                     return 0;
            }
    std::cout<<"Yes"<<'\n';   
     return 0;
}
0
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 33
21.11.2012, 01:35  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
std::
Цитата Сообщение от BumerangSP Посмотреть сообщение
static_cast<int>
Цитата Сообщение от BumerangSP Посмотреть сообщение
'\n'
что это??
просто я первокурсник
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.11.2012, 01:52
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот, постарался как можно проще и с объяснениями. Следующую тему с капслоком даже не открою.
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
#include <iostream>
 
// объявляем функцию, которая проверяет на симметричность
// она принимает в качестве параметров массив и его размер
bool isSymmetric(int *arr, int nArr)
{
    int middle = nArr / 2; // середина. в результате дробная часть отбрасывается
    for (int i = 0; i < middle; i++) // в цикле от 0 до середины массива
    {
        // если значение элемента массива под индексом i не равно значению
        // массива под индексом nArr - 1 - i (-1 добавляется т.к. индексация
        // массива начинается с 0). Т.е. мы двигаемся от начала к середине и
        // сравниваем с элементами, идущими с конца к середине
        if (arr[i] != arr[nArr - 1 - i] )
        {
            return false; // возвращаем ложь (сразу выходим из функции)
        }
    }
    return true; // не было несоответствий, возвращаем истину (массив симметр.)
}
 
int main()
{
    // объявляем массивы
    int a[] = {1, 2, 3, 4, 3, 2, 1}, b[] = {1, 3, 3, 1}, c[] = {1, 2, 2, 2};
    const int nA = sizeof(a) / sizeof(a[0]), // находим кол-во элем. массивов
              nB = sizeof(b) / sizeof(b[0]), // они равны размеру массива,
              nC = sizeof(c) / sizeof(c[0]); // поделенному на размер первого эл
    std::cout<< std::boolalpha // выводим в качестве результата true/false
             << "a: "<< isSymmetric(a, nA)<< std::endl // endl - перевод строки
             << "b: "<< isSymmetric(b, nB)<< std::endl
             << "c: "<< isSymmetric(c, nC)<< std::endl;
    return 0;
}
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
21.11.2012, 02:28
std:: - пространство имен. Если в борланде пишите, то, походу, не нужно это перед cout писать.
static_cast<int> - преобразование к типу int. В цикле идет n/2, оно должно быть целым, а при любом делении нужно, желательно, явно преобразовывать, поэтому мы привели к типу. По идее, и без этого работать должно.
'\n' - переход на следующую строку. Тоже можно не писать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2012, 02:28
Помогаю со студенческими работами здесь

Дан массив. Определить, симметричен ли он
Дан массив из k целых чисел. Определить, симметричен ли он, т.е. читается ли он одинаково слева направо и справа налево.

Необходимо определить, симметричен ли массив относительно середины
дан массив А. необходимо определить, симметричен ли он относительно середины. помоги пожалуйста не знаю, как делать

Определить симметричен ли массив т.е. читается ли он слева направо и справа налево
Помогите пожалуйста массив одномерный

Дан массив из k символов. Определить, симметричен ли он, т.е. читается ли он одинаково слева направо
Дан массив из k символов. Определить, симметричен ли он, т.е. читается ли он одинаково слева направо и справа налево.

Дан массив А из k символов. Определить, симметричен ли он, т.е. читается ли он одинаково слева направо и справа налево.
Дан массив А из k символов. Определить, симметричен ли он, т.е. читается ли он одинаково слева направо и справа налево.


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru