Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите новичку!
Форум программистов > Системное программирование > C, С++ и С Builder > Общие вопросы по С и С++
Guest_Дима_*
Добрые люди, подскажите пожалуйста алгоритм решения хотя бы одной из задач:
(только в среде Си)
1)Дан массив строк. Определить являются ли они палиндромами.Стандартные функции со строками нельзя использовать.
2)На прямой концами заданы N отрезков и точка X. Определить,принадлежит ли X межотрезочному интервалу.Если да: указать концевые точки этого интервала. Если нет найти -
А) какому количеству отрезков принадлежит точка
Б) каким именно отрезкам принадлежит точка.


С Си знаком всего пару недель, задачи простые-то, додумался бы сам - но знаний мало, а время поджимает...
Помогите, пожалуйста, до сессии пару дней, а я контрольную еще не сдал!
dima_gura@mail.ru
Guest_Дима_*
И еще - C++ нельзя использовать, только С
Guest_ZZmiy_*
Цитата
1)Дан массив строк. Определить являются ли они палиндромами.Стандартные функции со строками нельзя использовать.

если строки - сишные, оканчивающиеся \0
функция определяет, является палиндромом
bool isPalindrom(char* mystring)
{
int len = strlen(mystring);
for (int i = 0;i <= len/2;i++)
   if (mystring[i]!=mystring[len-1-i])
        return false;

return true;
}
Guest_ZZmiy_*
unsure.gif выше - isPalindrom определяет, является ли строка палиндромом.
тот пример не выполнял, но должно работать. нужно только еще добавить
#include "string.h"

Цитата
2)На прямой концами заданы N отрезков и точка X. Определить,принадлежит ли X межотрезочному интервалу.Если да: указать концевые точки этого интервала. Если нет найти -
А) какому количеству отрезков принадлежит точка
Б) каким именно отрезкам принадлежит точка.


можно, например, так (опять же, не компилировал и не выполнял rolleyes.gif )
цикл идет по элементам массива отрезков
struct segment
{
double left;
double right;
}
point array[arraySize];
double x;
int segments = 0; // храним количество отрезков, которым принадлежит
double pointLeft = DBL_MIN;ближайший слева конец отрезка
double pointRight = DBL_MAX// ближайший справа конец отрезка
for (int i = 0i < arraySize;i++)
{
  if ((array[i].left < x) && (array[i].right > x)
  {
        segments++;
// здесь же можно сохранять отрезки или выводить их на экран
        continue;
  }
  if (!segments)
  {
      if(array[i].left > pointLeft)
          pointLeft = array[i].left;
      if(array[i].right > pointRight)
          pointRight = array[i].right;
  }  
}


а вообще, если по истечении целового семестра вы не способны написать даже такого... может, стоит задуматься о верности выбранного направления? unsure.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.