ОБСУЖДЕНИЕ

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

3 ответов 4,8 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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


С Си знаком всего пару недель, задачи простые-то, додумался бы сам - но знаний мало, а время поджимает...
Помогите, пожалуйста, до сессии пару дней, а я контрольную еще не сдал!
dima_gura@mail.ru
 
И еще - C++ нельзя использовать, только С
 
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;
}
 
:) выше - 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;
 }  
}

а вообще, если по истечении целового семестра вы не способны написать даже такого... может, стоит задуматься о верности выбранного направления? :o
 
Статус
Закрыто для дальнейших ответов.

Ещё по теме