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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2012, 20:05   #1
Oleg3
 
Регистрация: 02.08.2012
Сообщений: 9
По умолчанию комментарии СИ

здравствуйте
очень нужны комментарии в отмеченных строках кода (\\)
не могу понять что конкретно они делают
заранее спасибо
Код:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
 
#define MAX 11
#define LEN 80
#define B ' '
 
char *chr2str(char *word)
{
  char *result = (char*)malloc(strlen(word)*4+3); \\
  char *ptr;
  int i = 0;
  char charF, charS, temp;
 
  ptr = word;
  i = 0;
  while(*ptr) {
    if(isalpha(*ptr)) {
      temp = toupper(*ptr)-64;
      charF = temp / 10 + 48;     \\
      charS = temp % 10 + 48;    \\
      result[i] = '[';
      result[++i] = charF;
      result[++i] = charS;
      result[++i] = ']';
    }
    else {
      result[i]   = *ptr;
    }
    i++;
    ptr++;
  }
  result[i] = '\0';
  
char *rptr = (char*)malloc(strlen(result) + 1);
  if(!rptr) { puts("Error: lack of memory");
              exit(1);                     }
  strcpy(rptr, result);
 
  return rptr;
}
      
void swap(char *text, char *word, int flag) \\
{
  char *ptr, *ptr2;
  ptr = strtok(text, " ");
  if (ptr) {
    if (!strcmp(ptr, word)) {
      ptr2 = chr2str(word);
      if (flag)
        printf("%c", ' ');
      printf("%s", ptr2);
      free(ptr2);
    }
    else {
      if(flag)
        printf("%c", ' ');
      printf("%s", ptr);
    }
    swap(NULL, word, 1);
  }
}
 int main(void)
{
  char text[MAX][LEN];
  char word[LEN];
  char  *pch, e[LEN];
  register int t, i;
  char *ptr;
  puts("Enter text <exit void str>.");
  for (t=0; t<MAX; t++) {
    printf("%d: ", t);
    i = 0;
    while(i<LEN) {
      text[t][i] = getchar();
      if (text[t][i]=='\n') {
        text[t][i] = '\0';
      }
      if (text[t][i]=='\0')
        break;
      i++;
    }
    if(!*text[t]) break;
  }
  printf("\nEnter word: ");
  scanf("%s", word);
  puts("");
 
  for (i=0; i<t; i++) {
    if (strstr(text[i], word) != NULL) {
      swap(text[i], word, 0);
      puts("");
    }
    else {
      if (ptr = strtok(text[i], " ")) printf("%s", ptr);
      if (ptr = strtok(NULL, " ")) {
        printf(" %s", ptr);
    printf(" <%s>", word);
			  pch = strchr (*text , B ) ;
    if ( pch )
        pch = strchr ( pch + 2 , B ) ;
 
    if ( pch )
    {
        strcpy ( e, pch + 2 ) ;
        strcpy (pch+1,word);
        strcat (*text," ");
        strcat (*text,e);
    }

      }
      while (ptr = strtok(NULL, " ")) printf(" %s", ptr);
      puts("");
	  
    }
  }
  return 0;
}
Oleg3 вне форума Ответить с цитированием
Старый 19.09.2012, 01:46   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
char *result = (char*)malloc(strlen(word)*4+3); \\
Выделение памяти. Для понимая этой строки вам достаточно было посмотреть справку по malloc

Код:
   charF = temp / 10 + 48;     \\
      charS = temp % 10 + 48;    \\
Только то, что написано. Арифметические операции идут в самом начале учебников.

Код:
void swap(char *text, char *word, int flag) \\
Начало функции swap принмающие араметры...
p51x вне форума Ответить с цитированием
Старый 19.09.2012, 11:50   #3
Oleg3
 
Регистрация: 02.08.2012
Сообщений: 9
По умолчанию

это то понятно просто не так выразился наверное мне надо было узнать
Код:
(word)*4+3)
почему на 4 умножение надо произвести
Код:
charF = temp / 10 + 48;  
      charS = temp % 10 + 48;
для чего эти арифметические операции были проведены
Oleg3 вне форума Ответить с цитированием
Старый 19.09.2012, 12:38   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Oleg3 Посмотреть сообщение
для чего эти арифметические операции были проведены
Так Вы сначала скажите, что программа делает.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 19.09.2012, 13:41   #5
Oleg3
 
Регистрация: 02.08.2012
Сообщений: 9
По умолчанию

все разобрался они для определения порядкового числа символов нужны были спасибо откликнувшимся
Oleg3 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
комментарии Shinobig Помощь студентам 5 17.01.2012 14:54
Русские комментарии Rebelition Паскаль, Turbo Pascal, PascalABC.NET 4 18.06.2011 21:15