помогите решить задачу на с++!

Тема в разделе "Общие вопросы по С и С++", создана пользователем gnomik, 29 апр 2007.

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

    gnomik Гость

    комплексное число представленое парой действительных чисел ( a, b)где a действительная часть, b-мнимая .Реализовать класс complex для работы с комплексными числами.Обязательно должны присутствовать следующие операции:
    -сложения add (a,b)+(с,d)=(a+с,b+d);
    -вычитания sub (a,b)-(с,d)=(a-с,b-d);
    -умножение mul (a,b)*(с,d)=(aс-bd, ad+bc);
    -деление div (a,b)/(с,d)=(aс+bd, ad-bc)/(c^2+d^2);
    -сравнение egu (a,b)-(с,d) если (a=с) и (b=d);
    должны быть реализованы сл. методы:
    -метод инициализации Init
    -ввод с клавиатуры Read
    -вывод на экран Display
    -преобразование в строку to String
    1. тип данных представляется структурой с необходимыми полями, операции реализуются, как внешние функции, которые получают объекты данного типа в качестве оргументов
    2. как класс с закрытыми полями,где операции реализуются как методы класса
    3. инкапсулировать поля класса в независимой структуре и в ней реализовать методы Init(), Read(), Display(), to String(). в основном классе должно быть одно поле данных, представляемое объектом -структурой
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
  3. tansa

    tansa Гость

    Molodoj chelowek... W zhizni, kazhdyj, dolzhen takuju progu napisat sam. Potomu chto eto 15 minut raboty. A mnogie k tebe po-drugomu otnositsia budut. A glawnoe sam k sebe budesh po-drugomu otnositsia.
     
  4. lACl

    lACl Гость

    Ну или если лень писать самому и готов заплатить: стучись в аську 367244151
     
  5. gnomik

    gnomik Гость

    Для: tansa
    я не молодой человек!!!!!!!я девушка!и Это вам 15 минут писать,а я вообще в этом ничего не понимаю! :(
     
  6. ????

    ???? Гость

    за 1 минуту в яндексе нашел
    Код (Text):
    #include <iostream.h> // overlfriend.cpp
    class complex
    {
    double real, imag;

    public:
    complex(double r=0, double i=0) { real=r; imag=i; };
    friend complex operator+(complex,complex);
    friend complex operator*(complex,complex);
    void outp(){cout<<"real= "<<real<<" imag= "<<imag<<endl;};
    };

    complex operator+(complex a1, complex a2)
    {
    return complex(a1.real+a2.real, a1.imag+a2.imag);
    }
    complex operator*(complex a1, complex a2)
    {
    return complex((a1.real*a2.real)+(a1.imag*a2.imag),(a1.real*a2.imag+a1.imag*a2.real));
    }

    int main(int argc, char* argv[])
    {
    complex c1(3.5,4.8),c2(1.2,9.4),c3,c4;

    int i;

    c3=c1+c2*c1;
    c3.outp();
    c3=c1*c2;
    c3.outp();
    c4=c3+complex(1.2,3.5);
    c4.outp();

    cin>>i;
    return 0;
    }
    есть сложение и умножение. остальное дописать оставляю тебе :(
     
  7. tansa

    tansa Гость

    <!--QuoteBegin-????+2:05:2007, 11:48 -->
    <span class="vbquote">(???? @ 2:05:2007, 11:48 )</span><!--QuoteEBegin-->за 1 минуту в яндексе нашел
    [snapback]64259" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Мне честно даже яндекс открывать лень было....

    Для: gnomik
    Ну тогда извините, не в коем случае не хотел обидеть, но признаков пола я не встретил :)



    А что по коду, то можно добавить сет-гет методы и тогда эти операторы не должны будут быть friend.
     
  8. gnomik

    gnomik Гость

    Для: tansa
    что за сет-гет методы???? вот что я добавила!

    //---------------------------------------------------------------------------
    #include<math.h>
    #include <iostream.h> // overlfriend.cpp
    class complex
    {
    double real, imag;

    public:
    complex(double r=0.0, double i=0.0) { real=r; imag=i; };
    friend complex operator+(complex,complex);
    friend complex operator*(complex,complex);
    friend complex operator-(complex,complex);
    friend complex operator/(complex,complex);

    void display(){cout<<"real= "<<real<<" imag= "<<imag<<endl;};

    };

    complex operator+(complex a1, complex a2)
    {
    return complex(a1.real+a2.real, a1.imag+a2.imag);
    }
    complex operator*(complex a1, complex a2)
    {
    return complex((a1.real*a2.real)-(a1.imag*a2.imag),(a1.real*a2.imag+a1.imag*a2.real));
    }
    complex operator-(complex a1, complex a2)
    {
    return complex(a1.real-a2.real, a1.imag-a2.imag);
    }

    complex operator/(complex a1, complex a2)
    {
    return complex(((a1.real*a2.real+a1.imag*a2.imag),(a1.imag*a2.real-a1.real*a2.imag))/((pow(a2.real,2)+pow(a2.imag,2))));
    }

    complex operator*(complex a1, complex a2);

    int main(int argc, char* argv[])
    {
    complex c1(3.5,4.8),c2(1.2,9.4),c3,c4;

    int i;

    c3=c1+c2;
    c3.display();
    c3=c1*c2;
    c3.display();
    c3=c1-c2;
    c3.display();
    c3=c1/c2;
    c3.display();
    cin>>i;
    return 0;
    }


    а вот как дальше чего-то не пойму! :) :unsure:
     
  9. MusicMan

    MusicMan Гость

    Помогите пожалуйста!!!

    Задачка то простая!

    Дана произвольная квадратная матрица. Удалить из неё строку и столбец на пересечении которой находится максимальный элемент данной диагонали.

    Пример:
    существует массив
    1 2 3
    4 5 6
    7 8 9

    Максимальный элемент - 9, удаляем строку 3 и столб 3.

    Помогите плиз!
     
  10. GRLEX

    GRLEX Гость

    Что то в этом роде, но на ошибки проверяй, бо писал в блакноте :)
    //**********************
    int Mas[10][10];
    int ResMas[9][9];
    //====== Находим максимальное и его индексы ======
    void FindMax(int *iMax, int *jMax)
    {
    int Max = Mas[0][0];
    *iMax = 0;
    *jMax = 0;
    for(int i = 0; i<10 ;i++)
    for(int j = 0; j<10; j++)
    if(Max < Mas[j])
    {
    Max = Mas[j];
    *iMax = i;
    *jMax = j;
    }
    }
    //====== Переписываем в результирующий массив ====
    void main()
    {
    int Max,iMax,jMax;
    int n = 0, m = 0;
    FindMax(&iMax,&jMax);
    for(int i = 0; i<9; i++ )
    if(i != iMax)
    {
    for(int j = 0; j<9; j++)
    if(j != jMax)
    {
    ResMas[n][m] = Mas[j];
    m++;
    }
    n++;
    }

    }
    //*********************
     
  11. MusicMan

    MusicMan Гость

    Условие задачи:
    существует двумерный массив. Удалить строку и столбец, на пересечении которых находится максимальный элемент.
    Поясню:

    1 5 9
    6 3 1
    2 4 8

    Максимальный элемент = 9, значит удаляем строку №1 и столбец №3.

    Посмотрите, вот я написал программу на половину.
    Есть косяки, которые я исправить немогу, незнаю как. Помогите пожалуста.
    Вот исходник программы, написанный мной.

    #include <stdio.h>
    #include <iomanip.h>
    #include <iostream.h>
    #include <conio.h>
    #include <stdlib.h>
    #define IC for (i=0;i<n;i++)
    #define JC for (j=0;j<n;j++)

    int i,j,n;
    int A[100][100];
    int Anew[100][100];
    void print_matrix(void);

    int main(void)
    {
    cout<<"Vvedite razmernost massiva: "<<ends;
    cin>>n;
    cout<<"Vvedite "<<n*n<<" elementov massiva:"<<endl;
    IC
    JC
    cin>>A[j];
    print_matrix();
    return 0;
    }


    void print_matrix(void)
    {
    cout<<"Massiv: "<<endl;
    cout<<"\n==================="<<endl;
    IC
    {
    JC
    cout<<setprecision(4)<<setw(5)<<A[j];
    cout<<endl;
    }



    cout<<"==================="<<endl;

    int max;
    max=0;
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    if(A[j]>max)
    max=A[j];
    cout<<"Maximalniy element: "<<max;
    int mas = A[0][0],mrow,mcol;
    { IC

    JC
    if(A[j]>max)
    max=A[j];
    mrow =i;
    mcol =j;
    }
    cout<<"\nKoordinati max. elementa: ["<<mrow<<"]["<<mcol<<"]";


    getch();
    }


    Вот там где присваиваются значения номер строки и номер столбца переменным mrow и mcol почему то не работают в выводе строки. И помогите дальше дописать, создать новый массив, уже с удалённой строчкой и столбцом.



    Помогите пожалуста, завтра нужно сдать уже.
     
  12. SunSanych

    SunSanych Well-Known Member

    Регистрация:
    28 июн 2006
    Сообщения:
    71
    Симпатии:
    0
    Вот, если ещё нужно.

    Код (Text):
    #include <iomanip.h>
    #include <conio.h>
    #include <string.h>

    int n;
    int* A;
    //int A[100][100];
    //int Anew[100][100];
    void print_matrix(void);

    int main(void)
    {
    n = 0;

    cout<<"Vvedite razmernost massiva: "<<ends;
    cin>>n;
    cout<<"Vvedite "<<n*n<<" elementov massiva:"<<endl;

    // Вместо статического массива создаём динамический
    // размером n X n
    A = new int[n*n];
    // Заполним 0-ми выделенную память
    memset(A, 0, n*n*sizeof(int) );

    for(int i=0; i<n; i++)
    for(int j=0; j<n; j++)
    cin >> A[i*n+j];

    print_matrix();

    delete A;

    return 0;
    }


    void print_matrix(void)
    {
    int i, j;

    cout<<"Massiv: "<<endl;
    cout<<"\n==================="<<endl;
    for(i=0; i<n; i++)
    {
    for(j=0; j<n; j++)
    cout<<setprecision(4)<<setw(5)<<A[i*n+j];

    cout<<endl;
    }

    cout<<"==================="<<endl;

    int max = 0;
    int mrow = 0;
    int mcol = 0;

    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
    if(A[i*n+j]>max)
    {
    max=A[i*n+j];
    mrow = i;
    mcol = j;
    }
    }

    cout<<"Maximalniy element: "<<max;
    cout<<"\nKoordinati max. elementa: ["<<mrow<<"]["<<mcol<<"]"<<endl<<endl;

    int nNew = n-1;
    int iNew=0, jNew=0;
    int* Anew = new int[nNew*nNew];

    for(i=0; i<n; i++)
    {
    if(i != mrow)
    {
    for(j=0; j<n; j++)
    {
    if(j != mcol)
    {
    Anew[iNew*nNew+jNew] = A[i*n+j];
    jNew++;
    }
    }
    iNew++;
    jNew=0;
    }
    }

    cout<<"New Massiv: "<<endl;
    cout<<"\n==================="<<endl;
    for(i=0; i<nNew; i++)
    {
    for(j=0; j<nNew; j++)
    cout<<setprecision(4)<<setw(5)<<Anew[i*nNew+j];

    cout<<endl;
    }

    cout<<"==================="<<endl;

    delete Anew;

    getch();
    }
    Без проверки на ошибки и т.д и т.п. Я бы писал не так, но что есть, то есть. Кстати можно обойтись и без создания нового массива, а вывод делать из исходного с пропуском нужного столбца и колонки.
     
  13. MusicMan

    MusicMan Гость

    2SunSanych: Спасибо тебе огромное!!!
     
  14. student

    student Гость

    Помогите пожалуйста.

    Тексты задач:
    1. Описать структуру с именем STUDENT, содержащую следующие поля: NAME — фамилия и инициалы; NOMER — номер студенческого билета; STIP — размер стипендии и сформировать массив STUD1 состоящий из восьми структур типа STUDENT; записи должны быть неупорядочены по любому из полей.
    Выполнить следующие действия: вывод на дисплей содержимого массива, упорядоченного по алфавиту; вывод на дисплей фамилий и номеров студенческих билетов для всех студентов, включенных в массив, не имеющих стипендии; если таковых нет, вывести соответствующее сообщение.

    2.Описать структуру с именем TRAIN, содержащую следующие поля: NAZN – название пункта назначения; NUMR – номер поезда; TIME – время отправления и сформировать массив RASP состоящий из восьми структур типа TRAIN; записи должны быть неупорядочены по любому из полей.
    Выполнить следующие действия: вывод на дисплей содержимого массива, упорядоченного по алфавиту по названию пунктов назначения; вывод на экран информации о поездах, отправляющихся после введённого с клавиатуры времени; если таких поездов нет, вывести соответствующее сообщение.

    3.Описать структуру с именем TRAIN, содержащую следующие поля: NAZN – название пункта назначения; NUMR – номер поезда; TIME – время отправления и сформировать массив RASP состоящий из восьми структур типа TRAIN; записи должны быть неупорядочены по любому из полей.
    Выполнить следующие действия: вывод на дисплей содержимого массива, упорядоченного по времени отправления поезда; вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры; если таких поездов нет, вывести на дисплей соответствующее сообщение.

    4.Написать 2 программы копирования файлов.
    Имена файлов для копирования задаются в командной строке: причем 1-ый аргумент – это имя файла, откуда копируют, а 2-ой аргумент - это имя файла, куда надо скопировать информацию.
    В 1-ой программе использовать бесформатный ввод-вывод верхнего уровня. Для этого создать буфер ввода-вывода размером
    8 – 16 Кб.
    Во 2-ой программе использовать ввод-вывод нижнего уровня.

    Заранее благодарен)))
     
Загрузка...
Похожие Темы - помогите решить задачу
  1. GREED
    Ответов:
    1
    Просмотров:
    531
  2. vovanabali
    Ответов:
    0
    Просмотров:
    530
  3. merrs
    Ответов:
    1
    Просмотров:
    1.308
  4. Kugotovr23
    Ответов:
    1
    Просмотров:
    1.280
  5. mregor
    Ответов:
    0
    Просмотров:
    910
Статус темы:
Закрыта.

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