Помогите новичку!

Тема в разделе "Общие вопросы по С и С++", создана пользователем Guest_, 2 янв 2006.

Статус темы:
Закрыта.
  1. Guest_

    Guest_ Гость

    Репутация:
    0
    Добрые люди, подскажите пожалуйста алгоритм решения хотя бы одной из задач:
    (только в среде Си)
    1)Дан массив строк. Определить являются ли они палиндромами.Стандартные функции со строками нельзя использовать.
    2)На прямой концами заданы N отрезков и точка X. Определить,принадлежит ли X межотрезочному интервалу.Если да: указать концевые точки этого интервала. Если нет найти -
    А) какому количеству отрезков принадлежит точка
    Б) каким именно отрезкам принадлежит точка.


    С Си знаком всего пару недель, задачи простые-то, додумался бы сам - но знаний мало, а время поджимает...
    Помогите, пожалуйста, до сессии пару дней, а я контрольную еще не сдал!
    dima_gura@mail.ru
     
  2. Guest_

    Guest_ Гость

    Репутация:
    0
    И еще - C++ нельзя использовать, только С
     
  3. Guest_ZZmiy_*

    Guest_ZZmiy_* Гость

    Репутация:
    0
    если строки - сишные, оканчивающиеся \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;
    }
     
  4. Guest_ZZmiy_*

    Guest_ZZmiy_* Гость

    Репутация:
    0
    :) выше - isPalindrom определяет, является ли строка палиндромом.
    тот пример не выполнял, но должно работать. нужно только еще добавить
    #include "string.h"

    можно, например, так (опять же, не компилировал и не выполнял :) )
    цикл идет по элементам массива отрезков
    Код:
    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;
     }  
    }
    а вообще, если по истечении целового семестра вы не способны написать даже такого... может, стоит задуматься о верности выбранного направления? :o
     
Загрузка...
Похожие Темы - Помогите новичку
  1. Ким
    Ответов:
    23
    Просмотров:
    995
  2. thunder
    Ответов:
    34
    Просмотров:
    728
  3. thunder
    Ответов:
    0
    Просмотров:
    172
  4. rn3rjd
    Ответов:
    9
    Просмотров:
    1.385
  5. maxiik
    Ответов:
    3
    Просмотров:
    2.028
Статус темы:
Закрыта.

Поделиться этой страницей