2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5  След.
 
 
Сообщение09.12.2007, 21:18 


28/09/07
172
нет.
указатель содержит лишь адрес того на что он указывает.
в нашем случае это char.
то есть адрес первого символа приведенной строки.

 Профиль  
                  
 
 
Сообщение09.12.2007, 21:22 


04/12/07
26
Понятно. А что дальше?

 Профиль  
                  
 
 
Сообщение09.12.2007, 21:29 


28/09/07
172
теперь пойдем дальше.
мы задали исходные данные
char *arr="abcd1 jhg ng1111,";

теперь я предлагаю реализовать такую операцию
будем двигаться в цикле по нашей строке пока не попадется пробел
или пока не достигли конца строки

Добавлено спустя 1 минуту 20 секунд:

while(*arr!=' '&&*arr!=',')
{
arr++;
}

Добавлено спустя 52 секунды:

Вам понятно что я написал?

 Профиль  
                  
 
 
Сообщение09.12.2007, 21:46 


04/12/07
26
Понятно.
То есть мы идем по циклу до первого пробела или запятой.

 Профиль  
                  
 
 
Сообщение09.12.2007, 21:51 


28/09/07
172
теперь добавим сюда
int flag ;
flag = 1;
while(*arr!=' '&&*arr!=',')
{
if(*arr<= '9'&& *arr>='0')
{
flag = 0;
}
arr++;
}

что здесь имеется ввиду?

 Профиль  
                  
 
 
Сообщение09.12.2007, 21:55 


04/12/07
26
Если в идентификаторе встретится цифра, то мы его запоминаем

 Профиль  
                  
 
 
Сообщение09.12.2007, 22:06 


28/09/07
172
молодец!
только не запоминаем а скорее отмечаем с помощью флага

теперь нужно добавить еще один указатель.
посмотрите внимательно

Код:
  char *arr="abcd1 jhg ng1111,";
  char *p=arr;
  int flag = 0;

  while(*arr!=',')
  {
    flag = 1;
    while(*arr!=' '&&*arr!=',')
    {
      if(*arr<= '9'&& *arr>='0')
      {
        flag = 0;
      }
      arr++;
    }
    if(flag)
    {
      while(p!=arr)
      {
        printf("%c",*p);
        p++;
      }
      printf("\n");
    }

    p = arr;

   }

здесь не хватает для завершенности всего несколько строчек

попробуйте описать словами тот алгоритм что здесь реализован
вставил [code] для примера // нг

 Профиль  
                  
 
 
Сообщение10.12.2007, 00:51 
Экс-модератор
Аватара пользователя


30/11/06
1265
vadim55
У нас есть тег [cоdе] для текстов программ. Рекомендую!

 Профиль  
                  
 
 
Сообщение10.12.2007, 08:17 


28/09/07
172
нг писал(а):
vadim55
У нас есть тег [cоdе] для текстов программ. Рекомендую!


не знал.
учту на будущее.

 Профиль  
                  
 
 
Сообщение10.12.2007, 14:55 


04/12/07
26
vadim55 писал(а):
теперь нужно добавить еще один указатель.
посмотрите внимательно

Код:
char *arr="abcd1 jhg ng1111,";
char *p=arr;
int flag = 0;

while(*arr!=',')
{
flag = 1;
while(*arr!=' '&&*arr!=',')
{
if(*arr<= '9'&& *arr>='0')
{
flag = 0;
}
arr++;
}
if(flag)
{
while(p!=arr)
{
printf("%c",*p);
p++;
}
printf("\n");
}

p = arr;

}


здесь не хватает для завершенности всего несколько строчек

попробуйте описать словами тот алгоритм что здесь реализован


Я что-то не понимаю что здесь написано :( , объясните поподробнее зачем нужен второй указатель и что нужно написать до завершения?

 Профиль  
                  
 
 
Сообщение10.12.2007, 15:40 


28/09/07
172
Вы можете на бумаге проследить что происходит в программе?

мне бы хотелось что бы вы поняли что здесь происходит...

 Профиль  
                  
 
 
Сообщение10.12.2007, 19:02 


04/12/07
26
vadim55 писал(а):
if(flag)
{
while(p!=arr)

Я никак не могу понять, что происходит в этих двух строчках :(

 Профиль  
                  
 
 
Сообщение10.12.2007, 20:12 


28/09/07
172
Настёна писал(а):
vadim55 писал(а):
if(flag)
{
while(p!=arr)

Я никак не могу понять, что происходит в этих двух строчках :(


говориться о том что продолжать цикл до тех пор пока оба указателя(p и arr)
не будут указывать на одно и тоже место в нашей строке.
попробуйте нарисовать все на бумаге...

говорите что еще непонятно...

Добавлено спустя 5 минут 17 секунд:

очень важно хорошо понять эту задачу т.к Вы сможете после этого решать целую группу подобных задач. :!:

 Профиль  
                  
 
 
Сообщение10.12.2007, 21:29 


04/12/07
26
Вроде все понятно. Только объясните для чего нам надо чтобы эти указатели встретились, для того чтобы вывести нужный нам идентификатор?

 Профиль  
                  
 
 
Сообщение10.12.2007, 22:17 


28/09/07
172
смотрите
вначале они оба указывают на одно и тоже место - первый символ нашей строки первая буква 'a'


Код:
char *arr="abcd1 jhg ng1111,";
char *p=arr;


согласны?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group