Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Серия задач:ломаная,ряды, последовательности... 
:(
    Опции темы
IceQween
Дата 30.12.2008, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



[C++]

1(2.31 И снова числа) Написать функции для основных операций с векторами (пробую через класс - ничего хорошего из этого не получается)
2.(3.32 Последовательности символов) Написать функцию, которая одевает строку в кавычки. Передавая строку этой функции позаботиться о том, чтобы было достаточно дополнительного места в том участке памяти, в который положена строка.
3.(4.31 Тексты) Дан текст, в каждой строке которого записаны координаты точек, которые являются вершиной ломаной линии на плоскости. Выяснить, пересекает ли ломаная сама себя.
4. (8.27 Рекурсия) Возьмем тоненькую полоску бумаги и, положив ее на стол, придержим левый конец. Далее согнем посередине так, чтобы правый конец оказался сверху над левым. Будем повторять эту процедуру N раз. Понятно, что теперь полоска укрыта линиями изгибов. Написать функцию, которая покажет направления всех изгибов от левого края полоски.
5. (9.26 Матрицы) Занести в квадратную матрицу порядка 10 таблицу умножения десятичной системы исчисленя.
На этом пока все. Буду рада любой подсказке. Заранее благодарна всем отозвавшимся! 

Это сообщение отредактировал(а) IceQween - 30.12.2008, 23:23
PM MAIL   Вверх
JackYF
Дата 30.12.2008, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
solverr
Дата 31.12.2008, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.12.2008

Репутация: 1
Всего: 1



Решу всё по 80 руб за задачку. Контакты в подписи.
PM MAIL   Вверх
solverr
Дата 31.12.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.12.2008

Репутация: 1
Всего: 1



Цитата(IceQween @  30.12.2008,  22:41 Найти цитируемый пост)
4. (8.27 Рекурсия) Возьмем тоненькую полоску бумаги и, положив ее на стол, придержим левый конец. Далее согнем посередине так, чтобы правый конец оказался сверху над левым. Будем повторять эту процедуру N раз. Понятно, что теперь полоска укрыта линиями изгибов. Написать функцию, которая покажет направления всех изгибов от левого края полоски.

Код

#include <iostream>
using namespace std;

int n;

void rec(int k, bool rev) {
    if (k == n) return;
    rec(k+1, rev);
    cout << (rev ? 'D' : 'U');
    rec(k+1, !rev);
}

int main() {
    cin >> n;
    rec(0, false);
    cout << endl;
}

U - up - изгиб "смотрит" вверх, D - down - вниз.

Подарок на новый год smile
PM MAIL   Вверх
IceQween
Дата 31.12.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Спасибо.   Щедрые у тебя подарки)))  smile Я совсем не надеялась на полное решение. 
С наступающим! smile 
PM MAIL   Вверх
Dmi3ev
Дата 31.12.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 5
Всего: 41



Следую своему принципу: один день-> одна помощь тому, кто в ней нуждается:
Код

//---------------------------------------------------------------------------
#include <iostream.h>
using namespace std;
//---------------------------------------------------------------------------
class MyVec
{
public:
 MyVec(){};
 void Set(double a, double c)
  {
   bv=a;
   ev=c;
  }
 double bov(){return (bv);};
 double eov(){return (ev);};
 ~MyVec(){};
private:
 double bv, ev;
};

void v_plus_v(MyVec v1, MyVec v2)
{
 MyVec c;
 double cb, ce;
 cb=v1.bov()+v2.bov();
 ce=v1.eov()+v2.eov();
 c.Set(cb, ce);
 cout<<"*******************"<<endl;
 cout<<"-> ->"<<endl;
 cout<<"V1+V2: "<<endl;
 cout<<"->"<<endl;
 cout<<"C ("<<c.bov()<<", "<<c.eov()<<")"<<endl;
 return;
}

MyVec v_x (MyVec a, double n)
{
 a.Set((a.bov()*(n)), (a.eov()*(n)));
 return a;
}


void v_minus_v (MyVec v1, MyVec v2)
{
 v2=v_x(v2, (-1.0));
 MyVec c;
 double cb, ce;
 cb=v1.bov()+v2.bov();
 ce=v1.eov()+v2.eov();
 c.Set(cb, ce);
 cout<<"*******************"<<endl;
 cout<<"-> ->"<<endl;
 cout<<"V1-V2: "<<endl;
 cout<<"->"<<endl;
 cout<<"C ("<<c.bov()<<", "<<c.eov()<<")"<<endl;
 return;
}

int main()
{
MyVec vec1;
vec1.Set(1.0, 2.0);
MyVec vec2;
vec2.Set(6.0, 2.0);
v_plus_v(vec1 ,vec2);
v_minus_v(vec1, vec2);
MyVec c=v_x(vec1, 2);
cout<<"*******************"<<endl;
cout<<"->"<<endl;
cout<<"V1 * 2: "<<endl;
cout<<"->"<<endl;
cout<<"C ("<<c.bov()<<", "<<c.eov()<<")"<<endl;
system("pause");
return 0;
}
//---------------------------------------------------------------------------

здесь сложение, вычитание, умножение вектора на число, по аналогии можно сделать произведение (скалярное...)
можно еще вектор задавать с помощью точек.
вот, например, вариант класса точки:
Код

class MyPoint
{
public:
 MyPoint(double a=0.0, double b=0.0)
  {
   x=a;
   y=b;
  };
 void Set(double a=0.0, double b=0.0)
  {
   x=a;
   y=b;
  };
 double Getx(){return x;};
 double Gety(){return y;};
 ~MyPoint(){};
private:
 double x, y;
};


выполнил план на сегодня  smile 
не стал выбирать, как solverr, взял первую...  smile 

Это сообщение отредактировал(а) Dmi3ev - 2.1.2009, 17:49


--------------------

PM MAIL   Вверх
IceQween
Дата 4.1.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Всех еще раз с прошедшим! Спасибо за помощь! Теперь у меня осталась последняя задача:
 3.(4.31 Тексты) Дан текст, в каждой строке которого записаны координаты точек, которые являются вершиной ломаной линии на плоскости. Выяснить, пересекает ли ломаная сама себя.
 Остальные с вашей помощью вышли))) А по поводу последней, если есть какие-нибудь идеи, поделитесь! ))) smile  

PM MAIL   Вверх
Dmi3ev
Дата 4.1.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 5
Всего: 41



вот последняя  smile
Код

//---------------------------------------------------------------------------
#include <iostream.h>
using namespace std;
//---------------------------------------------------------------------------
int main()
{
long int a[10][10];
for (int i=0; i<10; i++)
 {
  for (int j=0; j<10; j++)
   {
    a[i][j]=(i+1)*(j+1);
    cout<<a[i][j]<<"; ";
   }
  cout<<endl;
 }
system("pause");
return 0;
}
//---------------------------------------------------------------------------

Цитата

 3.(4.31 Тексты) Дан текст, в каждой строке которого записаны координаты точек, которые являются вершиной ломаной линии на плоскости. Выяснить, пересекает ли ломаная сама себя.

а у тебя есть идеи? можно даже тупо создать класс прямой, которая задается двумя соседними точками. У прямой есть уравнение. Допустим две прямые из нашего множества пересекаются, точка пересечения принадлежит отрезкам, образованным точками, которые задают эти прямые, то ломанная пересекает, если нет, то не пересекает. Можно еще как-нибудь. 
Твои идеи где??? Здесь уже не программирование, а скорее математика нужна. Или у тебя с математикой также, как с программированием?  smile По ходу также  smile

Добавлено через 1 минуту и 24 секунды
вот класс прямой, для примера
Код

#ifndef MYLINE_H
#define MYLINE_H
#include <mypoint.h>
#include <math.h>
class MyLine
{
public:
 MyLine (MyPoint A, MyPoint B){ p1=A; p2=B;};
 double Getk()
  {
   if ((p1.Getx()-p2.Getx())!=0)
     k=(p1.Gety()-p2.Gety())/(p1.Getx()-p2.Getx());//tg
   return k;
  };
 double Getb()
  {
   if ((p1.Getx()-p2.Getx())!=0)
     b=p1.Gety()-((p1.Gety()-p2.Gety())/(p1.Getx()-p2.Getx()))*p1.Getx();//free member
   return b;
  };
 double Getr()//Gip
  {
   r=sqrt(pow((p1.Getx()-p2.Getx()), 2)+pow((p1.Gety()-p2.Gety()), 2));
  }; 
 ~MyLine (){};
private:
 MyPoint p1, p2;
 double k, b, r;
};
#endif


Добавлено через 1 минуту и 58 секунд
а вот класс точки ,который там используется
Код

#ifndef MYPOINT_H
#define MYPOINT_H
class MyPoint
{
public:
MyPoint(double a=0.0, double b=0.0){x=a; y=b;};
void Set(double a, double b){x=a; y=b;};
double Getx(){return x;};
double Gety(){return y;};
~MyPoint(){};
private:
double x, y;
};
#endif

делай


--------------------

PM MAIL   Вверх
IceQween
Дата 5.1.2009, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Не издевайся!Я стараюсь!  smile Но где-то не получается, где-то Лень-матушка просыпается)) smile 
 Идеи-то есть. Я уже и сама написала класс для точки, сегмента и "общий" класс для ломаной. Но это такие "навороты"! Ведь тогда мы получаем систему из N линейных уравнений, которую также надо как-то решить(скорее всего методом Гаусса, хотя можно просто найти детерминант. Еслит он равен нулю, то прямые пересекаются или совпадают)) К тому же недостаточно просто найти решения уравнений, ведь тогда пересекутся прямые, но не обязательно отрезки на этих прямых. То есть нужно составлять еще и что-то вроде неравенств. Но тем не менее собрать это все в кучу у меня как-то не очень получается. Неужели нельзя как-нибудь по-проще? 

Это сообщение отредактировал(а) IceQween - 5.1.2009, 11:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1056 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.