Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

21.11.2012, 01:04. Просмотров 1100. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2012, 01:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, симметричен ли массив (C++):

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

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

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

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

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

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

9
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
21.11.2012, 01:07 #2
симметричный это например 1 2 3 4 5 5 4 3 2 1 такой.

Не по теме:

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

0
_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;
}
0
Zhor
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 29
21.11.2012, 01:11  [ТС] #4
да...
0
David Sylva
1291 / 953 / 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;
}
0
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 и подвести итог
0
BumerangSP
4287 / 1409 / 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;
}
0
Zhor
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 29
21.11.2012, 01:35  [ТС] #8
Цитата Сообщение от BumerangSP Посмотреть сообщение
std::
Цитата Сообщение от BumerangSP Посмотреть сообщение
static_cast<int>
Цитата Сообщение от BumerangSP Посмотреть сообщение
'\n'
что это??
просто я первокурсник
0
MrGluck
Модератор
Эксперт CЭксперт С++
7496 / 4611 / 694
Регистрация: 29.11.2010
Сообщений: 12,621
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;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.11.2012, 02:28 #10
std:: - пространство имен. Если в борланде пишите, то, походу, не нужно это перед cout писать.
static_cast<int> - преобразование к типу int. В цикле идет n/2, оно должно быть целым, а при любом делении нужно, желательно, явно преобразовывать, поэтому мы привели к типу. По идее, и без этого работать должно.
'\n' - переход на следующую строку. Тоже можно не писать.
1
21.11.2012, 02:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2012, 02:28
Привет! Вот еще темы с ответами:

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

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

Выяснить, симметричен ли заданный массив относительно середины - PascalABC.NET
Задан линейный массив А. выяснить, симметричен ли он относительно середины. помогите, пожалуйста с программой

Определить, симметричен ли заданный во входном файле текст (строка символов) - C#
Уважаемые знатоки, внимание вопрос : Задачи с файлами.Определить, симметричен ли заданный во входном файле текст (строка символов). Спасибо.


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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