Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с програмкой на С++ =))

Блондиночка Профи (534), закрыт 9 лет назад
Задан статический массив из
10 элементов, заполненный произвольным образом. Разработать программу, в
которой с помощью двух указателей (на начало и конец массива) проверяется,
является ли массив симметричным.
Лучший ответ
Николай Веселуха Высший разум (360686) 9 лет назад
#include <iostream>
#include <iomanip>
template<typename T> bool is_symmetric(T*, const size_t);
template<typename T> void print_array(T*, const size_t, const std::streamsize);
template<typename T> void test(T*, const size_t, const std::streamsize);
int main() {
const size_t n = 10;
int ai[n] = { 1, 2, 3, 4, 5, 5, 4, 3, 2, 1 };
int bi[n] = { 1, 3, 7, 2, 1, 7, 2, 8, 2, 3 };
double af[n] = { 1.1, 2.2, 3.3, 4.4, 5.5, 5.5, 4.4, 3.3, 2.2, 1.1 };
double bf[n] = { 1.1, 3.3, 7.7, 2.2, 1.1, 7.7, 2.2, 8.8, 2.2, 3.3 };
setlocale(2, "");
std::streamsize w = 3;
test(ai, n, w);
test(bi, n, w);
w = 5;
test(af, n, w);
test(bf, n, w);
std::cin.get();
}
template<typename T> bool is_symmetric(T* a, const size_t n) {
T* beg = &a[0];
T* end = &a[n - 1];
while (beg < end) {
if (*beg != *end) return false;
++beg;
--end;
}
return true;
}
template<typename T> void print_array(T* a, const size_t n, const std::streamsize w) {
for (size_t i = 0; i < n; ++i) std::cout << std::setw(w) << a[i];
std::cout << '\n';
}
template<typename T> void test(T* a, const size_t n, const std::streamsize w) {
print_array(a, n, w);
if (is_symmetric(a, n)) std::cout << " Массив симметричен";
else std::cout << " Массив несимметричен";
std::cout << "\n\n";
}
Остальные ответы
Duality Просветленный (29376) 9 лет назад
Показывай что нарешала.
Илья Д Знаток (327) 9 лет назад
смотря что под словом симметричн понимается? если значения элементов то сравниваем 1 и послед элемент по знач потом указатели перемещаем на 2 и предпоследний и их сравниваем и тп как только эл разные знач не симметричный
Sasha Programmer Мыслитель (5440) 9 лет назад
#include <iostream>

using namespace std;

int main(){

const int n = 10;
int ar[n] = {1,2,3,4,5,5,4,3,2,1};
int a = 3;
int *pb,*pe;
bool mark = true;

pb = ar;
pe = ar;

for(int i(0); i < (n/2); i++){
if(pb[i] != pe[n-1-i]) {mark = false; break;}
}

if(mark) cout << "This is symmetrik array." << endl;
else cout << "This is not symmetrik array." << endl;

system("pause > nul");
return 0;
}
Похожие вопросы