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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2012, 19:24   #1
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию Указатели

Доброго дня уважаемые!
Пытаюсь разобраться с указателями, прошу пожалуйста помочь,
в своей задаче
"Произвольная последовательность строк и целых переменных.
Байт со значением 0 - обозначает начало строки (последовательность символов, ограниченная нулем).
Байт со значением N является началом последовательности N целых чисел. Конец последовательности - два нулевых байта."

я получаю одной функцией и размещаю в байтовом массиве эти последовательности, в другой функции эти последовательности выводяться
вот накропал
Код:
void StringsOut(char* A){

	do{

		if(isdigit(*A) && *A!='\0'){
			printf("\n");		
			while(*A++!='\0') 
				putch(*A);
		}

		else if(*A=='\0'){
			printf("\n");		
			while(isalpha(*A++))
				putch(*A);
		}
		else if(*A++=='\0' && *A+2=='\0') break;

		printf("\n");			

	}while (*A);		
}
хотелось бы чтобы собственно эти разделительные нули между строками не выводились, а числовая последовательность выводилась полностью...пока выводит всё подряд, хочу сделать именно на указателях
разъясните пожалуйста

Последний раз редактировалось Кудаив; 26.05.2012 в 19:42.
Кудаив вне форума Ответить с цитированием
Старый 26.05.2012, 20:17   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Мне само условие кажется нелогичным:
Если с символами все в порядке - нулевой символ не входит в алфавит, а потому может быть служебным, то с числами все не так прозрачно.
Если числа имеют фиксированный размер, то два нулевых байта в конце лишены смысла, а если числа имеют разную длину, то нет ни возможности разделить их между собой, ни выделить конец последовательности, т.к. 0 входит в "алфавит" для представления чисел.
s-andriano вне форума Ответить с цитированием
Старый 26.05.2012, 20:39   #3
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию

ну само задание вот
Разработать две функции, одна из которых вводит с клавиатуры набор
данных в произвольной последовательности и размещает в памяти в переменном формате. Д
ругая функция читает эти данные и выводит на экран. Программа запрашивает и
размещает в памяти несколько наборов данных при помощи первой функции, а затем
читает их и выводит на экран при помощи второй. Размещение данных производить в
статическом массиве байтов фиксированной размерности с контролем его переполнения.

Произвольная последовательность строк и целых переменных.
Байт со значением 0 - обозначает начало строки (последовательность символов, ограниченная нулем).
Байт со значением N является началом последовательности N целых чисел. Конец последовательности - два нулевых байта.
Как бы оно нелогично не было, сделать требуется...
Кудаив вне форума Ответить с цитированием
Старый 26.05.2012, 20:51   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Кроме того, что оно непоследовательное, оно еще и неполное.
s-andriano вне форума Ответить с цитированием
Старый 26.05.2012, 20:58   #5
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию

Та чёрт с ним с заданием)) Вы подскажите пожалуйста как бы с указателями там разобраться))
Кудаив вне форума Ответить с цитированием
Старый 27.05.2012, 00:44   #6
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Типа так
Код:
void StringsOut(char* A){
  for (;;)
    if (*A == 0) {
        A++;
        if (*A == 0) break;
        printf(A);
        A += (strlen(A)+1);
    } else {
        unsigned char count = *A;
        for (unsigned char i(0);i<count;i++) printf("%d\t",*++A);
        A++;
    }
      
}
f.hump вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
указатели salmon172 Паскаль, Turbo Pascal, PascalABC.NET 0 31.05.2011 21:34
указатели novak3 Общие вопросы C/C++ 6 27.05.2011 20:47
указатели Solnze2 Общие вопросы C/C++ 1 21.10.2010 17:32
Указатели IceBreaker Общие вопросы C/C++ 9 05.02.2010 09:11
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39