Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Zhor
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 29
#1

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

21.11.2012, 01:04. Просмотров 962. Ответов 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;
}
конечно же она не работает..просьба:
если кто понял суть вопроса и понимает о чём речь..подскажите пожалуйста..а лучше напишите конец программы правильно..я в свою очередь проанализирую ошибки и задам вопросы...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2012, 01:04     Определить, симметричен ли массив
Посмотрите здесь:

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

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

Определить, содержит ли заданный массив группы элементов, расположенные в порядке убывания их значений. Если да, то определить группу наименьшей длины - C++
Помогите с прграммой .Нужно написать программу на С++ с использован им масива Определить, содержит ли заданный массив группы...

Определить, пилообразный ли массив - C++
Возможно есть более изящное исполнение? Условие: определить пилообразный ли массив (a1 &gt; a2 &lt; a3 &gt; a4 и т.д. или a1 &lt; a2 &gt; a3 &lt; a4) ...

Дан Двухмерный массив.Определить: - C++
1) В каком столбце массива сумма элементов меньше: в первом или в последнем; 2) В какой строке массива сумма элементов больше: во второй...

Определить, является ли массив симметричным? - C++
Символьный тип данных Введите массив символов из 7 элементов. Определите, является ли он симметричным (Симметричным считается массив,...

Определить когда массив меняет знак. - C++
Дан массив чисел, как положительных так и отрицательных. Нужно определить номер элемента, который первым меняет знак с отрицательного...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
21.11.2012, 01:07     Определить, симметричен ли массив #2
симметричный это например 1 2 3 4 5 5 4 3 2 1 такой.

Не по теме:

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

_andrew_
22 / 22 / 3
Регистрация: 14.11.2012
Сообщений: 64
21.11.2012, 01:08     Определить, симметричен ли массив #3
там видно, где ошибки:
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;
}
Zhor
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 29
21.11.2012, 01:11  [ТС]     Определить, симметричен ли массив #4
да...
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
21.11.2012, 01:12     Определить, симметричен ли массив #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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;
}
Zhor
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 29
21.11.2012, 01:20  [ТС]     Определить, симметричен ли массив #6
Цитата Сообщение от Zhor Посмотреть сообщение
n"=6"
кстати на счёт шести..если написать ...n=6... то прога будет чёрных белых и негров выбивать XD

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

Добавлено через 3 минуты
дело в том что ваша прога находит число совпадений и проверяет его..а мне нужно
Цитата Сообщение от Zhor Посмотреть сообщение
что можно взять какое-то f..написать условие и если оно выполняется то прировнять f к 0(f=0) а если нет то к 1(f=1)..после завершения цикла проверить чему равно f и подвести итог
BumerangSP
4285 / 1407 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.11.2012, 01:33     Определить, симметричен ли массив #7
По-моему здесь доп. переменные ни к чему:
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;
}
Zhor
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 29
21.11.2012, 01:35  [ТС]     Определить, симметричен ли массив #8
Цитата Сообщение от BumerangSP Посмотреть сообщение
std::
Цитата Сообщение от BumerangSP Посмотреть сообщение
static_cast<int>
Цитата Сообщение от BumerangSP Посмотреть сообщение
'\n'
что это??
просто я первокурсник
MrGluck
Модератор
Эксперт CЭксперт С++
6968 / 4139 / 588
Регистрация: 29.11.2010
Сообщений: 10,977
21.11.2012, 01:52     Определить, симметричен ли массив #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот, постарался как можно проще и с объяснениями. Следующую тему с капслоком даже не открою.
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2012, 02:28     Определить, симметричен ли массив
Еще ссылки по теме:

Определить, является ли заданный массив пилообразным - C++
Одномерный массив из 10 элементов заполнить числовыми значениями. Определить, является ли массив пилообразным, т.е. выполняется ли...

Определить является ли массив упорядоченным по убыванию - C++
Нужно определить является ли массив упорядоченным по убыванию вроде все правильно пишу но не правильно работает где ошибка. #include...

Задан массив D. Определить следующие суммы: - C++
Тема Процедуры и функции Задан массив D. Определить следующие суммы: D + D + D; D + D + D; D + D + D. Пояснение. Составить подпрограмму...

Определить, является ли массив убывающей последовательностью - C++
Дан одномерный числовой массив. Определить, является ли массив убывающей последовательностью.

Определить является ли массив логическим квадратом. - C++
Определить является ли массив логическим квадратом, то есть суммы по всем горизонталям, вертикалям и двум диагоналям должны быть равны и...


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

Или воспользуйтесь поиском по форуму:
BumerangSP
4285 / 1407 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.11.2012, 02:28     Определить, симметричен ли массив #10
std:: - пространство имен. Если в борланде пишите, то, походу, не нужно это перед cout писать.
static_cast<int> - преобразование к типу int. В цикле идет n/2, оно должно быть целым, а при любом делении нужно, желательно, явно преобразовывать, поэтому мы привели к типу. По идее, и без этого работать должно.
'\n' - переход на следующую строку. Тоже можно не писать.
Yandex
Объявления
21.11.2012, 02:28     Определить, симметричен ли массив
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru