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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2008, 22:19   #1
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию Добавление элементов массива в массив

Начал писать прогу но застрял. Прога, будет печать слово нааборот, например юзер вводит KCAJ а прога выводит JACK.
Вот недописаный код:

Код:
#include <iostream.h>
void dekrement_mas_elements(char *ptr)
{
	while (*ptr!=NULL)
	{
		*ptr++;
	}
	do
	{
        if (*ptr==NULL)
		{
        	cout<<*ptr--;
	}
	while(Пока не будет указывать на первый элемент)


В main'е юзер вводит слово в массив. Передаем массив в функцию.
Теперь указатель *ptr указывает на первый элемент массива.
Каждый цикл while c++ увелчивает указатель пока он не укажет на символ NULL. В цикле do while проверяется указывает ли указатель на nuLL- что правда, и затем печатает слово нааборот уменьшая указатель на один.

У меня два вопроса:
1)NULL является последним элементом (пробелом).
Как мне обозначить первый элемент массива (маркер)?
2)Можно ли каждый цикл do while добавлять по букве в массив а затем печатать слово целиком?
Помогите пожалуйста разобраться.
JOFRIF вне форума Ответить с цитированием
Старый 02.10.2008, 23:55   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

храни доп указатель на первый элемент. размер строки можешь получить через strlen
vvviperrr вне форума Ответить с цитированием
Старый 03.10.2008, 00:05   #3
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
храни доп указатель на первый элемент. размер строки можешь получить через strlen
точно я чет не подумал спасибо.

у меня есть еще два вопроса решения этой проблемы -
1)Можно ли каждый цикл do while добавлять по букве в массив а затем печатать слово целиком?
2)void dekrement_mas_elements(char *ptr,char *ptr_2) теперь когда я передам массив в функцию оба указателя будут указывать на первый элемент?

Последний раз редактировалось JOFRIF; 03.10.2008 в 00:10.
JOFRIF вне форума Ответить с цитированием
Старый 03.10.2008, 00:06   #4
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

strrev() для лохов?)
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 03.10.2008, 00:14   #5
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
strrev() для лохов?)
как это понимать
JOFRIF вне форума Ответить с цитированием
Старый 03.10.2008, 00:39   #6
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2alexinspir блин, ну может ему задание такое дали, вот и делает
2JOFRIF эта функция как раз реверсит строку
vvviperrr вне форума Ответить с цитированием
Старый 03.10.2008, 00:44   #7
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

я бы сказал не "ДЛЯ ЛОХОВ" А ДЛЯ НАЧИНАЮЩИХ
JOFRIF вне форума Ответить с цитированием
Старый 03.10.2008, 05:14   #8
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

кстати, алгоритм какой-то, грубый...
так проще думаю:
Код:
#include <cstring>


void function(char ch[])
{
   int len=strlen(ch);
   char temp[len];
   strcpy(temp,ch);
   strrev(temp);
   cout << temp;
}
при необходимости, функции strlen(), strcpy(), strrev() можно написать вручную: ~2 минуты на каждую

з.ы.
Код:
#include <iostream.h>
void dekrement_mas_elements(char *ptr)
{
	while (*ptr!=NULL)
	{
		*ptr++;
	}
	do
	{
        if (*ptr==NULL)
		{
        	cout<<*ptr--;
	}
	while(Пока не будет указывать на первый элемент)
я не уверен, но помоему ptr тут указатель-константа, следовательно такое: *ptr++ работать теоретически не может.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 03.10.2008 в 05:41.
alexinspir вне форума Ответить с цитированием
Старый 03.10.2008, 21:53   #9
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
Код:
#include <cstring>
void function(char ch[])
{
   int len=strlen(ch);
   char temp[len];
   strcpy(temp,ch);
   strrev(temp);
   cout << temp;
}
Спасибо , но почему то показывает три ошибки. Я посмотрел перепроверил но нечего не нашел. Вот:

Код:
#include <iostream.h>
#include <string.h>
void function(char ch[])
{
   int len=strlen(ch);
   char temp[len];
   strcpy(temp,ch);
   strrev(temp);
   cout << temp;
}
void main()
{
	char mas[64];
	cout<<"Enter some name back to front: ";
	cin>>mas;
	function(mas);
}


Compiling...
s.cpp
c:\projects\s\s.cpp(8) : error C2057: expected constant expression
c:\projects\s\s.cpp(8) : error C2466: cannot allocate an array of constant size 0
c:\projects\s\s.cpp(8) : error C2133: 'temp' : unknown size
Error executing cl.exe.

s.exe - 3 error(s), 0 warning(s)
JOFRIF вне форума Ответить с цитированием
Старый 03.10.2008, 23:17   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

так низя вроде как
Код:
  int len=strlen(ch);
  char temp[len];
  ...
Попробуйте заменить на это:
Код:
  int len=strlen(ch);
  char *temp = new char[len];
  ...
  delete[] temp;
pu4koff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива.Изменение элементов массива. Vesnushka18 Помощь студентам 6 09.06.2011 13:05
Упорядочение элементов массива Юлёк PHP 2 28.01.2008 21:27
Произведение элементов массива gamer123 Помощь студентам 5 19.01.2008 22:02
Добавление элементов ListView SnakeMan Помощь студентам 4 30.11.2007 11:54
Сумма элементов массива, больших А Sultan Помощь студентам 1 21.04.2007 11:13