Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 14:05   #1
anybkarnak
Пользователь
 
Аватар для anybkarnak
 
Регистрация: 27.11.2009
Сообщений: 12
По умолчанию Одномерный динамический массив

Задан динамический массив из 10 элементов, заполненный произвольным образом. Разработать программу, в которой с помощью двух указателей (на начало и конец массива) проверяется, является ли массив симметричным.

Программа не работает, а точнее не работает мой цикл, где я пытаюсь идти от начала к концу и сравнивать значения, подскажите, пожалуйста, в чём ошибка?

Код:
#include <iostream> 
#include <new> 
#include <ctime> 
#include <cstdlib> 
using namespace std;

int main()
{
int* pRegion;		// указатель на динамический массив
int n=10;			// размерность массива
srand(time(NULL));

cout<<"Input the size ";
cin >> n;

// Выделение области памяти
pRegion = new int [n];

// Заполнение выделенного блока памяти псевдослучайными числами
for(int i=0; i<10; i++)
*(pRegion+i) = rand()%10;

// Вывод элементов массива на экран
for(int j=0; j<10; j++)
{
cout << pRegion[j] << '\n';
}
int a= *pRegion[0], b= *pRegion[10-1];
for (a, b; a<(10/2) , b>=(10/2) ; a++, b--) //веду отчёт с помощью двух указателей
{
	if (pRegion[a]==pRegion[b]) //сравниваю
cout<<"massiv is a simmetriCK!YOU ARE WIN\n";
else
cout<<"massiv is a asimmetriCK!\n";
}
// Освобождение блока памяти
free(pRegion);
return 0;

}
anybkarnak вне форума Ответить с цитированием
Старый 10.12.2009, 14:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Слегка намекну:
Код:
for(int i=0; i<n; i++)
*(pRegion+i) = rand()%10;

// Вывод элементов массива на экран
for(int j=0; j<n; j++)
{
 cout << *(pRegion+j) << '\n';
}
Ошибку видишь свою?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.12.2009, 16:09   #3
anybkarnak
Пользователь
 
Аватар для anybkarnak
 
Регистрация: 27.11.2009
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Слегка намекну:
Код:
for(int i=0; i<n; i++)
*(pRegion+i) = rand()%10;

// Вывод элементов массива на экран
for(int j=0; j<n; j++)
{
 cout << *(pRegion+j) << '\n';
}
Ошибку видишь свою?
не...
в чём ошибка?
я чего-то не понимаю...
anybkarnak вне форума Ответить с цитированием
Старый 11.12.2009, 17:04   #4
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию

может я чет не понимаю, но массив вроде одномерный (никогда не пробывал двухмерный с указателями задавать .. )
Junk1E вне форума Ответить с цитированием
Старый 11.12.2009, 18:06   #5
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

в коде из первого поста никаким двумерным массивом даже и не пахнет

для одномерного массива это будет выглядеть примерно так:
Код:
#include <iostream> 
#include <new> 
#include <ctime> 
#include <cstdlib> 
using namespace std;

int main()
{
	int* pRegion;		// указатель на динамический массив
	int n=7;			// размерность массива
	srand(time(NULL));

	//cout<<"Input the size ";
	//cin >> n;
	// Выделение области памяти
	pRegion = new int[n];

	pRegion[0] = 1 ;
	pRegion[1] = 2;
	pRegion[2] = 3;
	pRegion[3] = 0;
	pRegion[4] = 3;
	pRegion[5] = 2;
	pRegion[6] = 1;

	// Заполнение выделенного блока памяти псевдослучайными числами
	//for(int i=0; i< n ; i++)
		//*(pRegion+i) = rand()% 10 ;
		//pRegion[i] = rand()%10 ; 

	// Вывод элементов массива на экран
	for(int j=0; j< n ; j++)
		cout << pRegion[j] << "  " ;
	
	cout << '\n';
	
	//int a = pRegion[0], b = pRegion[ n -1];

	for (int a=0, b=n-1; a <=( n /2) , b >=( n /2) ; a++, b--) //веду отчёт с помощью двух указателей
	{
		if (pRegion[a]==pRegion[b]) //сравниваю
			cout<<"massiv is a simmetriCK!YOU ARE WIN\n";
		else
			cout<<"massiv is a asimmetriCK!\n";
	}


	// Освобождение блока памяти
	delete[] pRegion;
	system("PAUSE");
	return 0;

}
до двумерного сам допиливай

Последний раз редактировалось m0nax; 11.12.2009 в 18:08.
m0nax вне форума Ответить с цитированием
Старый 11.12.2009, 20:18   #6
anybkarnak
Пользователь
 
Аватар для anybkarnak
 
Регистрация: 27.11.2009
Сообщений: 12
По умолчанию

Я когда создавал тему затупил, прошу прощения, єто одномерный динамический массив

большое спасибо
вот мой код.А можно попросить модератора изменить название темы?
Код:
#include <iostream> 
#include <new> 
#include <ctime> 
#include <cstdlib> 
using namespace std;
int main()
{
	int* pRegion;		// указатель на динамический массив
	int n=10,t=0;			// размерность массива
	srand(time(NULL));

	//cout<<"Input the size ";
	//cin >> n;
	// Выделение области памяти
	pRegion = new int[n];

	/*pRegion[0] = 2 ;
	pRegion[1] = 2;
	pRegion[2] = 3;
	pRegion[3] = 3;
	pRegion[4] = 0; пример!!! симметричного массива, там же сказано произвольным
	ну я сначала так, потом уже рандомно, можно рандомно выводить числа и до миллилона
	pRegion[5] = 0;
	pRegion[6] = 3;
	pRegion[7] = 3;
	pRegion[8] = 2;
	pRegion[9] = 2;
	*/
for(int i=0; i< n ; i++)
		pRegion[i]= rand()% 10; // Заполнение выделенного блока памяти псевдослучайными числами
		 
	for(int j=0; j< n ; j++)// Вывод элементов массива на экран
		cout << pRegion[j] << "  " ;
		cout << '\n';
		//int a = pRegion[0], b = pRegion[ n -1];

	for (int a=0, b=n-1; a <=( n /2) , b >=( n /2) ; a++, b--) //веду отчёт с помощью двух указателей
	{
	while (pRegion[a]==pRegion[b])//сравниваю
	
	{t++;//поставил переменную, которая увеличиваеться, если соотв. елементы массива равны
	break;}		
	}
if (t==5)	cout<<"massiv is a simmetriCK!YOU ARE WIN\n";
else cout<<"massiv is a asimmetriCK!\n"; //а - отрицание симметричности
	// Освобождение блока памяти
	delete[] pRegion;
	system("PAUSE");
	return 0;

}
Модератор: попросить можно. Поменял название.

Последний раз редактировалось MaTBeu; 12.12.2009 в 01:38.
anybkarnak вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив Vito89 Помощь студентам 1 20.10.2009 01:55
Динамический массив Ivin Мультимедиа в Delphi 14 27.02.2009 23:22
динамический массив Diller Помощь студентам 48 07.10.2007 16:43
Динамический массив. Mickle Помощь студентам 9 21.06.2007 20:31
Динамический массив Mickle Общие вопросы Delphi 8 19.06.2007 06:45