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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2013, 00:32   #1
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию Проход массиву указателей на строки

Нужно организовать проход функцией "printf" и вот моя наработка:
Код:
int main()
{
int i,j,n;
char **s;
printf("razmer matr n=");
scanf("%d",&n);

if( !(s = new char*[n*n]) ) return 0;          // Выделение памяти



for(i=0;i<n;i++)                               // Ввод строк(элементов массива указателей)
{
	for(j=0;j<n;j++)
	{	
		if( !(*(s+i*n+j) = new char[5]) ) return 0;
		gets(*(s+i*n+j));
	}
}
for(i=0;i<n;i++)                               // Вывод массива из строк
{
	for(j=0;j<n;j++)
	{	
		for(p=0;*(*(s+p)+i*n+j);p++)
		printf("%2s",*(*(s+p)+i*n+j));    // Тут компилятор начинает ругаться
	}
	puts("");
}

system("pause");
}
Массив именно(!!!) двумерный и функция именно(!!!) "printf".

Последний раз редактировалось millepetrozza; 03.01.2013 в 00:35.
millepetrozza вне форума Ответить с цитированием
Старый 03.01.2013, 08:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

printf не умеет проходить по массивам.
Цитата:
*(s+i*n+j)
Почему не s[i][j]?
Цитата:
Тут компилятор начинает ругаться
Не удивительно, все дело в том что...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.01.2013, 13:27   #3
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию

Цитата:
Почему не s[i][j]?
Да и таким же образом тоже пробовал, но тогда всё равно не ясно, как просмотреть символы строки. Вообще в моей задаче нужно было сравнить символы строк двух массивов, и на этом уже и заполнить двухмерный массив, кучу вариантов ввода перепробовал, и всё никак.
millepetrozza вне форума Ответить с цитированием
Старый 03.01.2013, 22:17   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нужно было сравнить символы строк
strcmp() тебе в помошь. К примеру:
Код:
for(int i=0;i<10;i++){
 if(strcmp(a[i],b[i]){ они равны}
}
Где char* a[10], b[10]
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.01.2013, 18:47   #5
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию

Спасибо. Уже разобрался.
millepetrozza вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив указателей на строки (паскаль) Даша Даша Паскаль, Turbo Pascal, PascalABC.NET 3 17.12.2012 07:37
Массив указателей на строки ВиталийUa Помощь студентам 0 12.03.2012 17:53
Проход по ассоциативному массиву ассоциативных массивов Gonzo JavaScript, Ajax 0 14.09.2010 17:15
Упорядочить одномерный массив указателей на строки DarkDante Общие вопросы C/C++ 1 02.05.2010 15:53
Cмещение указателей (вида *а++) и их запоминание (на начало исходной и результирующей строки Adminx Общие вопросы C/C++ 1 02.12.2009 19:40