1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

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

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

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

    Guest_ Гость

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


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

    Guest_ Гость

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

    Guest_ZZmiy_* Гость

    если строки - сишные, оканчивающиеся \0
    функция определяет, является палиндромом
    Код (Text):
    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_* Гость

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

    можно, например, так (опять же, не компилировал и не выполнял :) )
    цикл идет по элементам массива отрезков
    Код (Text):
    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;
     }  
    }
    а вообще, если по истечении целового семестра вы не способны написать даже такого... может, стоит задуматься о верности выбранного направления? :eek:
     
Загрузка...
Похожие Темы - Помогите новичку
  1. rn3rjd
    Ответов:
    9
    Просмотров:
    1.229
  2. maxiik
    Ответов:
    3
    Просмотров:
    1.567
  3. zaza41rus
    Ответов:
    0
    Просмотров:
    1.053
  4. Radion2
    Ответов:
    0
    Просмотров:
    1.669
  5. forem0st
    Ответов:
    6
    Просмотров:
    3.540
Статус темы:
Закрыта.

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