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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2012, 23:19   #11
Nekit9401
Пользователь
 
Аватар для Nekit9401
 
Регистрация: 11.12.2012
Сообщений: 56
По умолчанию

Забыл присвоить значение n, а второе вроде с return что-то? Честно, не знаю что там должно быть)

Код:
//Возвращает количество вхождений символа sym в строку A
int NumSymbol (const char* A, char sym){
  //Вначале "посчитанных символов" - ноль
  int n=0;
  //Ставим палец на начало строки.
  int i=0;
  //Пока элемент под пальцем - не '\0',
  while(A[i]!='\0'){
        //Если элемент под пальцем - sym, то
        if(A[i]==sym)
            //Прибавляем 1 к числу "посчитанных символов"
            n++;
        //Сдвигаем палец на 1 позицию вперёд
	i++;
  }
  //Раз мы закончили с "пока" - текущее число "посчитанных символов" и есть требуемый результат
  return n;
}
UPD. Или вроде там не должно быть else?

Последний раз редактировалось Nekit9401; 11.12.2012 в 23:28.
Nekit9401 вне форума Ответить с цитированием
Старый 11.12.2012, 23:35   #12
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

О. Теперь хорошо.
Осталась только одна оговорка. Попробуйте представить (в качестве самостоятельного упражнения), что будет, если в строке не окажется завершающего '\0'. Ничего хорошего, верно? Вопрос в том, кто обязан проверять, "правильная" ли строка. Переложим-ка мы эту головную боль на того, кто будет пользоваться нашей функцией. Такое налагаемое на вызывающего обязательство называется предусловием. В C++ для этого нет средств языка, так что воспользуемся комментариями:
Код:
//Возвращает количество вхождений символа sym в строку A
//ПРЕДУСЛОВИЕ: A - нуль-терминированная (содержащая '\0' на конце) строка
int NumSymbol (const char* A, char sym){
  //Вначале "посчитанных символов" - ноль
  int n=0;
  //Ставим палец на начало строки.
  int i=0;
  //Пока элемент под пальцем - не '\0',
  while(A[i]!='\0'){
        //Если элемент под пальцем - sym, то
        if(A[i]==sym)
            //Прибавляем 1 к числу "посчитанных символов"
            n++;
        //Сдвигаем палец на 1 позицию вперёд
	i++;
  }
  //Раз мы закончили с "пока" - текущее число "посчитанных символов" и есть требуемый результат
  return n;
}
Следующий пункт.
Цитата:
2. Определить функцию с именем Palindrom для проверки, является ли слово из строки, заканчивающейся '\0', палиндромом. Если слово палиндром, то функция возвращает - 1, в противном случае - 0.
Какой должен быть заголовок?
Abstraction вне форума Ответить с цитированием
Старый 11.12.2012, 23:52   #13
Nekit9401
Пользователь
 
Аватар для Nekit9401
 
Регистрация: 11.12.2012
Сообщений: 56
По умолчанию

Только что узнал значение слова полиндром)
Ну примерно будет выглядеть вот так:

Код:
int Palindrom ()
{


return;
}
Только не могу понять какие аргументы нужно присвоить функции?
Nekit9401 вне форума Ответить с цитированием
Старый 12.12.2012, 00:02   #14
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) Палиндром.
2) Нет, список аргументов не пустой. В условии у нас есть строка и... всё. От нас хотят целое число. Вывод? Нужна функция, принимающая нуль-терминированную строку и возвращающая целое число. Заголовок напишите, пожалуйста.
Abstraction вне форума Ответить с цитированием
Старый 12.12.2012, 00:11   #15
Nekit9401
Пользователь
 
Аватар для Nekit9401
 
Регистрация: 11.12.2012
Сообщений: 56
По умолчанию

Так?
Код:
//ПРЕДУСЛОВИЕ: A - нуль-терминированная (содержащая '\0' на конце) строка
int Palindrom (const char* A, int m)
Nekit9401 вне форума Ответить с цитированием
Старый 12.12.2012, 00:16   #16
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Не написали комментария, что делает функция со своими аргументами и вот результат. m у Вас кто такое и какой эффект оказывает на результат работы функции?
Abstraction вне форума Ответить с цитированием
Старый 12.12.2012, 00:41   #17
Nekit9401
Пользователь
 
Аватар для Nekit9401
 
Регистрация: 11.12.2012
Сообщений: 56
По умолчанию

Не уверен, но скорее всего m - это кол-во элементов в строке А.
Если да, то:

Код:
//ПРЕДУСЛОВИЕ: A - нуль-терминированная (содержащая '\0' на конце) строка
// m - количество символов в строке А
int Palindrom (const char* A, int m)
Nekit9401 вне форума Ответить с цитированием
Старый 12.12.2012, 01:33   #18
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

А его нам обещали передать? Нет. Вот и не требуйте, количество символов мы найдём сами.
Abstraction вне форума Ответить с цитированием
Старый 12.12.2012, 01:39   #19
Nekit9401
Пользователь
 
Аватар для Nekit9401
 
Регистрация: 11.12.2012
Сообщений: 56
По умолчанию

Тогда просто так?

Код:
//ПРЕДУСЛОВИЕ: A - нуль-терминированная (содержащая '\0' на конце) строка
int Palindrom (const char* A)
Nekit9401 вне форума Ответить с цитированием
Старый 12.12.2012, 02:04   #20
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ага. Теперь - как бы Вы, человек, взяв слово, проверяли, палиндром ли оно.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Контрольная работа Supernatural Помощь студентам 6 25.03.2017 17:54
Контрольная работа Vart Microsoft Office Excel 1 20.06.2011 10:13
Контрольная работа KostyaS Помощь студентам 3 21.04.2011 23:44
контрольная работа ГалинаБ Помощь студентам 17 19.01.2011 01:30
контрольная работа Rustem5 Паскаль, Turbo Pascal, PascalABC.NET 10 28.06.2010 16:55