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

  • Автор темы Guest_
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest_

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


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

Guest_

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

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;
}
 
G

Guest_ZZmiy_*

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

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

можно, например, так (опять же, не компилировал и не выполнял :) )
цикл идет по элементам массива отрезков
Код:
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:
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!