Форум программистов, компьютерный форум CyberForum.ru

Написать на С++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 129
26.10.2013, 20:30     Написать на С++ #1
Пожалуйста,помогите решить пару задач.А в некоторых просто ошибки найти не могу.
Кликните здесь для просмотра всего текста
Координаты постоянно выдает последней точки,не знаю,что делать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//Даны целочисленные координаты трех вершин прямоугольника стороны которого параллельны координатным осям.Найти координаты его четвертой вершины.
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int x1,x2,x3,x4,y1,y2,y3,y4;
    cout<<"\n Введите координаты трех вершин прямоугольника, стороны которого параллельны координатным осям"<<endl;
    cout<<"\n Введите координаты 1-ой вершины:"<<endl;
    cin>>x1>>y1;
    cout<<"\n Введите координаты 2-ой вершины:"<<endl;
    cin>>x2>>y2;
    cout<<"\n Введите координаты 3-ой вершины:"<<endl;
    cin>>x3>>y3;
    if (x1=x2)  
        x4=x3;
    else if (x1=x3)  
             x4=x2;
    else x4=x1;
    if (y1=y2)  
        y4=y3;
    else if (y1=y3)  
             y4=y2;
    else  y4=y1;
    cout<<"\n Координаты 4-ой вершины"<<x4<<y4<<endl;
    return 0;
}



Кликните здесь для просмотра всего текста
Тут почему-то выводит 2 направления в конце(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*Локатор ориентирован на одну из сторон света(С-север,З-запад,Ю-юг,В-восток) и может принимать три цифровые команды поворота:1-поворот налево, -1-поворот направо,
 2-поворот на 180градусов. Дан символ С-исходная ориентация локатора и целые числа N1,N2-две посланные команды.Вывести ориентацию локатора после выполнения этих команд*/
#include <iostream>
using namespace std;
 
int main()
{
    setlocale (LC_ALL,"Russian");
    int N,W,S,E,x,N1,N2,N3;                 //N-север,W-запад,S-юг,E-восток
    char C;
    cout<< "\n Укажите на какую из сторон ориентирован локатор (N-север,W-запад,S-юг,E-восток):";
    cin>>C;
    if (C='N')
        x=0;
    else if (C='W')
        x=1;
    else x=2;
    if (C='E') 
        x=3;
    cout<< "\n Введите первую цифровую команду (1-поворот на лево, -1-поворот направо, 2-поворот на 180) N1=";
    cin>>N1;
    cout<< "\n Введите вторую цифровую команду (1-поворот на лево, -1-поворот направо, 2-поворот на 180) N2=";
    cin>>N2;
    N3=N1+N2;
    if (x=0)
    cout<< "\n Ориентация локатора - Север"<<endl;
    else 
    cout<< "\n Ориентация локатора - Запад"<<endl;
    if (x=2)
    cout<< "\n Ориентация локатора - Юг"<<endl;
    else 
    cout<< "\n Ориентация локатора - Восток"<<endl;
    return 0;
}


Кликните здесь для просмотра всего текста
Ну тут совсем печалька
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*Дано вещественное число X и целое число N (> 0). Найти значение выражения
x-x^3(3!)+x^5/(5!)-...+(-1)^N*x^(2N+1)/((2N+1)!)
(N! = 1·2·…·N). Полученное число является приближенным значением
функции Sin в точке X. */
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale (LC_ALL,"Russian");
    double x;
    int N,S,ch,zn,chl,t,eps;
    eps=0.001;
    S=1;
    cout<<"\n Введите число (N>0) N=";
    cin>>N;
    cout<<"\n Введите число (|x|<1) x=";
    cin>>x;
    t=sin(x);
    N!=N*N;
    chl=pow(-1,N)*pow(x,2*N+1)/(2*N+1);
    S=S+chl;
   cout<<"\n S="<<S<<endl;
   cout<<"\n t="<<t<<endl;
   return 0;
}


Кликните здесь для просмотра всего текста
В ответе выводит значение А
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*Даны целые положительные числа A и B. Найти их наибольший об-
щий делитель (НОД), используя алгоритм Евклида:
НОД(A, B) = НОД(B, A mod B), если B в‰* 0; НОД(A, 0) = A.  */
#include <iostream>
using namespace std;
 
int main()
{
    setlocale (LC_ALL,"Russian");
    int A,B;
    cout<<"\n Введите число A=";
    cin>>A;
    cout<<"\n Введите число B=";
    cin>>B;
    while (A<0 && A>0 && B<0 && B>0)
    {   
        if (A>=B)
            A=A/B;
        else B=B/A;
    }
    cout<< "\n Наибольший общий делитель NOD="<<(A,B)<<endl;
    return 0;
}


И вот пару пару задач совсем не могу придумать как решать
Кликните здесь для просмотра всего текста
1.Дано целое число N (> 1) и набор из N вещественных чисел. Если
данный набор образует убывающую последовательность, то вывести 0;
в противном случае вывести номер первого числа, нарушающего
закономерность.
2. Дано целое число K, а также K наборов ненулевых целых чисел. Ка-
ждый набор содержит не менее двух элементов, признаком его завершения
является число 0. Найти количество наборов, элементы которых возраста-
ют.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2013, 20:30     Написать на С++
Посмотрите здесь:

C++ Помогите написать формулу ,никак немогу написать (2k)! в ней
C++ Надо написать программу на while или do while и написать алгоритм

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
de-pre
32 / 31 / 3
Регистрация: 04.07.2013
Сообщений: 232
Записей в блоге: 1
27.10.2013, 00:20     Написать на С++ #21
Первое задание,например,так можно

Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <istream>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int x1,x2,x3,x4,y1,y2,y3,y4;
    cout<<" Введите координаты трех вершин прямоугольника, стороны которого параллельны координатным осям\n";
    cout<<" Введите координаты 1-ой вершины:\n";
    cin>>x1>>y1;
    cout<<" Введите координаты 2-ой вершины:\n";
    cin>>x2>>y2;
    cout<<" Введите координаты 3-ой вершины:\n";
    cin>>x3>>y3;
    if (x1==x2 && y2==y3)
    {
        x4=x3;
        y4=y1;
    }
    else
        {
        x4=x2;
        y4=y1;
    }
    cout<<"четвертая вершина"<<x4<<";"<<y4;
    getch();
}


Добавлено через 5 минут
хотя проверка выполнения условия,конечно,еще требует уточнения

Добавлено через 4 минуты
Да и не понятно,как мы вводим координаты вершин - последовательно, от первой до третьей (тогда что считать первой,второй и третьей вершиной?),или же вводим координаты вершин в произвольном порядке (при этом опять же,не ясно,что считается первой вершиной,а что второй и третьей, я принял,что первая вершина - левая снизу,вторая левая сверху,третья-справа вверху,четвертая-справа внизу).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 129
27.10.2013, 00:39  [ТС]     Написать на С++ #22
Цитата Сообщение от de-pre Посмотреть сообщение
Первое задание,например,так можно

Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <istream>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int x1,x2,x3,x4,y1,y2,y3,y4;
    cout<<" Введите координаты трех вершин прямоугольника, стороны которого параллельны координатным осям\n";
    cout<<" Введите координаты 1-ой вершины:\n";
    cin>>x1>>y1;
    cout<<" Введите координаты 2-ой вершины:\n";
    cin>>x2>>y2;
    cout<<" Введите координаты 3-ой вершины:\n";
    cin>>x3>>y3;
    if (x1==x2 && y2==y3)
    {
        x4=x3;
        y4=y1;
    }
    else
        {
        x4=x2;
        y4=y1;
    }
    cout<<"четвертая вершина"<<x4<<";"<<y4;
    getch();
}


Добавлено через 5 минут
хотя проверка выполнения условия,конечно,еще требует уточнения

Добавлено через 4 минуты
Да и не понятно,как мы вводим координаты вершин - последовательно, от первой до третьей (тогда что считать первой,второй и третьей вершиной?),или же вводим координаты вершин в произвольном порядке (при этом опять же,не ясно,что считается первой вершиной,а что второй и третьей, я принял,что первая вершина - левая снизу,вторая левая сверху,третья-справа вверху,четвертая-справа внизу).
я так же вершины принимала)огромное спасибо,вы очень помогли)а не могли бы глянуть,что не так я во второй задаче делаю??)
de-pre
32 / 31 / 3
Регистрация: 04.07.2013
Сообщений: 232
Записей в блоге: 1
27.10.2013, 00:44     Написать на С++ #23
Цитата Сообщение от KyKi Посмотреть сообщение
я так же вершины принимала)огромное спасибо,вы очень помогли)
Ну если так же,и считать,что проверка выполнения условия не нужна,то блок if-else можно выкинутьи переписать всё так:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <istream>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int x1,x2,x3,x4,y1,y2,y3,y4;
    cout<<" Введите координаты трех вершин прямоугольника, стороны которого параллельны координатным осям\n";
    cout<<" Введите координаты 1-ой вершины:\n";
    cin>>x1>>y1;
    cout<<" Введите координаты 2-ой вершины:\n";
    cin>>x2>>y2;
    cout<<" Введите координаты 3-ой вершины:\n";
    cin>>x3>>y3;
    x4=x3;
    y4=y1;
    cout<<"четвертая вершина"<<x4<<";"<<y4;
    getch();
}
KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 129
27.10.2013, 00:47  [ТС]     Написать на С++ #24
Цитата Сообщение от de-pre Посмотреть сообщение
Ну если так же,и считать,что проверка выполнения условия не нужна,то блок if-else можно выкинутьи переписать всё так:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <istream>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int x1,x2,x3,x4,y1,y2,y3,y4;
    cout<<" Введите координаты трех вершин прямоугольника, стороны которого параллельны координатным осям\n";
    cout<<" Введите координаты 1-ой вершины:\n";
    cin>>x1>>y1;
    cout<<" Введите координаты 2-ой вершины:\n";
    cin>>x2>>y2;
    cout<<" Введите координаты 3-ой вершины:\n";
    cin>>x3>>y3;
    x4=x3;
    y4=y1;
    cout<<"четвертая вершина"<<x4<<";"<<y4;
    getch();
}
Да не)я думаю дописать проверку)а то если вводить координаты не параллельные к осям,оно все равно выдает ответ)
А можете глянуть что во второй задаче не так?
de-pre
32 / 31 / 3
Регистрация: 04.07.2013
Сообщений: 232
Записей в блоге: 1
27.10.2013, 00:47     Написать на С++ #25
Цитата Сообщение от KyKi Посмотреть сообщение
а не могли бы глянуть,что не так я во второй задаче делаю??)
"Студент может всё"
Но уже утром.
KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 129
27.10.2013, 15:14  [ТС]     Написать на С++ #26
Цитата Сообщение от de-pre Посмотреть сообщение
"Студент может всё"
Но уже утром.
Ох как понимаю)))))Но все равно огромное спасибо за помощь

Добавлено через 14 часов 25 минут
Справилась со вторым заданием,вот код,может кому-то пригодится)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
int main()
{
    setlocale (LC_ALL,"Russian");
    int N,W,S,E,x,N1,N2,N3;                 //N-север,W-запад,S-юг,E-восток
    char C;
    cout<< "\n Укажите на какую из сторон ориентирован локатор (N-север,W-запад,S-юг,E-восток):";
    cin>>C;
    
    if (C='N')
        x=0;
    else if (C='W')
        x=1;
    else x=2;
    if (C='E') 
        x=3;
    cout<< "\n Введите первую цифровую команду (1-поворот на лево, -1-поворот направо, 2-поворот на 180) N1=";
    cin>>N1;
    cout<< "\n Введите вторую цифровую команду (1-поворот на лево, -1-поворот направо, 2-поворот на 180) N2=";
    cin>>N2;
    N3=N1+N2;
    switch(N3)
    {
    case 0:
    cout<< "\n Ориентация локатора - Север"<<endl;
    break;
    case 1:
    cout<< "\n Ориентация локатора - Запад"<<endl;
    break;
    case 2:
    cout<< "\n Ориентация локатора - Юг"<<endl;
    break;
    case 3:
    cout<< "\n Ориентация локатора - Восток"<<endl;
    break;
    }
    return 0;
}
А вот с 3-ей все еще печально(может кто-нибудь подсказать??
Shtirliz72
200 / 160 / 38
Регистрация: 25.10.2013
Сообщений: 527
27.10.2013, 15:25     Написать на С++ #27
Цитата Сообщение от KyKi Посмотреть сообщение
Справилась со вторым заданием,вот код,может кому-то пригодится)
Девушка, вы не справились со вторым заданием. Вы так и не поняли, чем == отличается от =. Я же не зря пытался до вас достучаться по этой теме.
= - операция присваивания.
== - операция сравнения
и в
C++
1
if (C='N')
Вы не сравниваете переменную С со значением 'N', а присваиваете ей это значение.
KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 129
27.10.2013, 15:34  [ТС]     Написать на С++ #28
Цитата Сообщение от Shtirliz72 Посмотреть сообщение
Девушка, вы не справились со вторым заданием. Вы так и не поняли, чем == отличается от =. Я же не зря пытался до вас достучаться по этой теме.
= - операция присваивания.
== - операция сравнения
и в
C++
1
if (C='N')
Вы не сравниваете переменную С со значением 'N', а присваиваете ей это значение.
что удивительно,что работает оно и с = и с ==...
Жанерке
 Аватар для Жанерке
34 / 34 / 2
Регистрация: 22.09.2013
Сообщений: 170
27.10.2013, 15:38     Написать на С++ #29
Shtirliz72, ну кому то важно что б вышло "ответо пободные " вещи

все таки не достучались )))
Shtirliz72
200 / 160 / 38
Регистрация: 25.10.2013
Сообщений: 527
27.10.2013, 15:43     Написать на С++ #30
Цитата Сообщение от KyKi Посмотреть сообщение
что удивительно,что работает оно и с = и с ==...
Нет ничего удивительного. Приравнивание - это операция, возвращает собственно то, что присваивалось. Поэтому поэтому if(a=5) эквивалентно условию if(5) и, соответственно, выполняет всегда. А if(a=0) эквивалентно if(0) - и никогда не выполняется.
KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 129
27.10.2013, 15:47  [ТС]     Написать на С++ #31
Цитата Сообщение от Жанерке Посмотреть сообщение
Shtirliz72, ну кому то важно что б вышло "ответо пободные " вещи

все таки не достучались )))
достучался...просто когда надо написать 13 задач на пару дней,мозг начинает плавится

Добавлено через 39 секунд
Цитата Сообщение от Shtirliz72 Посмотреть сообщение
Нет ничего удивительного. Приравнивание - это операция, возвращает собственно то, что присваивалось. Поэтому поэтому if(a=5) эквивалентно условию if(5) и, соответственно, выполняет всегда. А if(a=0) эквивалентно if(0) - и никогда не выполняется.
да,поняла,спасибо
Shtirliz72
200 / 160 / 38
Регистрация: 25.10.2013
Сообщений: 527
27.10.2013, 16:12     Написать на С++ #32
По третьей задаче я просил у вас узнать чем отличаются int от double и что такое !=, вы посмотрели?
Функцию же факториала я вам выше привёл.
Надеюсь это поможет. И не бойтесь использовать гугл.

Добавлено через 22 минуты
Цитата Сообщение от Жанерке Посмотреть сообщение

Не по теме:

Shtirliz72, ну кому то важно что б вышло "ответо пободные " вещи

Не по теме:

Самое главное - у человека всё нормально с самом алгоритмом и даже код написан более-менее нормально. Те ошибки, которые там есть легко и просто решить за 5 минут, зная что искать, просто погуглив. А те вопросы, которые после появятся - уже можно спокойно разобрать здесь. Но вот почему это так сложно - погуглить или просто перейти и прочитать пару строк по данной мной ссылке - вот это я действительно не понимаю.

KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 129
27.10.2013, 16:20  [ТС]     Написать на С++ #33
Цитата Сообщение от Shtirliz72 Посмотреть сообщение
По третьей задаче я просил у вас узнать чем отличаются int от double и что такое !=, вы посмотрели?
Функцию же факториала я вам выше привёл.
Надеюсь это поможет. И не бойтесь использовать гугл.

Добавлено через 22 минуты


Не по теме:

Самое главное - у человека всё нормально с самом алгоритмом и даже код написан более-менее нормально. Те ошибки, которые там есть легко и просто решить за 5 минут, зная что искать, просто погуглив. Но вот почему это так сложно - погуглить или просто перейти и прочитать пару строк по данной мной ссылке - вот это я действительно не понимаю.

чувствую себя на экзамене)то чем отличается = от ==,то int от double)int-целочисленный тип,double-вещественный.поправьте меня если я не права)а вот факториал мне никогда прежде не встречался,поэтому с ним большая проблема в данном примере(уже поняла,что очень сильно затупила написав !=,это естественно не факториал..подскажите,пожалуйста,на конкретном примере моем работу факториала

а про гугл..прогуглить не сложно,главное,что б голова еще соображала на момент поисков
Shtirliz72
200 / 160 / 38
Регистрация: 25.10.2013
Сообщений: 527
27.10.2013, 16:45     Написать на С++ #34
Цитата Сообщение от KyKi Посмотреть сообщение
чувствую себя на экзамене)то чем отличается = от ==,то int от double)int-целочисленный тип,double-вещественный.поправьте меня если я не права)а вот факториал мне никогда прежде не встречался,поэтому с ним большая проблема в данном примере(уже поняла,что очень сильно затупила написав !=,это естественно не факториал..подскажите,пожалуйста,на конкретном примере моем работу факториала

а про гугл..прогуглить не сложно,главное,что б голова еще соображала на момент поисков
Ну наконец-то! Молодец. А вот теперь другие мои вопросы, после того как я увидел что ты знаешь чем отличаются int от double:
Почему нельзя писать:
C++
1
2
3
int t=sin(x);
int chl=pow(-1,N)*pow(x,2*N+1)/(2*N+1);
int S=S+chl;
??
Ну а так же действительно ли необходимо (|x|<1) ? И вообще почему это? Почему x - не может быть больше единицы по модулю?

Добавлено через 1 минуту
Функцию factorial я написал на странице 2. Перепишите её к себе в проект и вызывайте где необходимо.

Добавлено через 15 минут
Самое интересное, что после этих ответов у тебя 3я работа волшебным образом заработает нормально.
KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 129
27.10.2013, 19:30  [ТС]     Написать на С++ #35
Цитата Сообщение от Shtirliz72 Посмотреть сообщение
Ну наконец-то! Молодец. А вот теперь другие мои вопросы, после того как я увидел что ты знаешь чем отличаются int от double:
Почему нельзя писать:
C++
1
2
3
int t=sin(x);
int chl=pow(-1,N)*pow(x,2*N+1)/(2*N+1);
int S=S+chl;
??
Ну а так же действительно ли необходимо (|x|<1) ? И вообще почему это? Почему x - не может быть больше единицы по модулю?

Добавлено через 1 минуту
Функцию factorial я написал на странице 2. Перепишите её к себе в проект и вызывайте где необходимо.

Добавлено через 15 минут
Самое интересное, что после этих ответов у тебя 3я работа волшебным образом заработает нормально.
не угадали,я его как не кручу,все равно не то что-то
Shtirliz72
200 / 160 / 38
Регистрация: 25.10.2013
Сообщений: 527
27.10.2013, 23:42     Написать на С++ #36
Цитата Сообщение от KyKi Посмотреть сообщение
не угадали,я его как не кручу,все равно не то что-то
Что не угадал-то? На вопросы ты-то не ответила. Так всё таки что будет если вытаться вещественное число преобразовать в целое? И почему это плохо для твоего задания?)
Что будет если синус представить целым числом? Это блин такая жирная подсказка.
Хотя бы для себя на этот вопрос ответь.
А как ты крутишь код - лучше сюда выложить и сравнить.
3 задание
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*Дано вещественное число X и целое число N (> 0). Найти значение выражения
x-x^3(3!)+x^5/(5!)-...+(-1)^N*x^(2N+1)/((2N+1)!)
(N! = 1·2·…·N). Полученное число является приближенным значением
функции Sin в точке X. */
 
#include <conio.h>
#include <iostream>
#include <cmath>
 
using namespace std;
 
unsigned int factorial(unsigned int n)
{
 if (n > 1)
     return n * factorial(n - 1);
 return 1;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Программа вычисляет приближённое значение синуса в точке Х" << endl;
    
    int n;
    cout << "Введите число (N>0)\n N = ";
    cin >> n;
    if (n < 0) {
        cout << "Ошибка: N меньше нуля" << endl;
        getch();
        return 1;
    }
 
    double x;
    cout << "Введите вещественное число x\n x = ";
    cin >> x;
 
    long double nearSinX = 0;
    for(int i = 0; i < (n + 1); ++i) {
        nearSinX += pow(-1, i) * pow(x, (double)(2 * i + 1) / factorial(2 * i + 1));
    }
 
    cout << "Приближённое значение Sin в точке" << x << ") = " << nearSinX << endl;
    getch();
    return 0;
}

4 задание
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*Даны целые положительные числа A и B. Найти их наибольший об-
щий делитель (НОД), используя алгоритм Евклида:
НОД(A, B) = НОД(B, A mod B), если B в‰* 0; НОД(A, 0) = A.  */
 
#include <conio.h>
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL,"Russian");
    cout << "Программа находит наибольший общий делитель двух положительных чисел\n"
            "с помощью алгоритма Эвклида." << endl;
 
    int a;
    cout << "Введите первое число\n A = ";
    cin >> a;
    if (a < 1) {
        cout << "Ошибка: A является нулём или меньше нуля" << endl;
        getch();
        return 1;
    }
 
    int b;
    cout << "Введите второе число\n B = ";
    cin >> b;
    if (b < 1) {
        cout << "Ошибка: B является нулём или меньше нуля" << endl;
        getch();
        return 1;
    }
 
    int r;
    int pA = a;
    int pB = b;
    while(pB != 0) {
        r = pA % pB;
        pA = pB;
        pB = r;
    }
 
    std::cout << "НОД(" << a << "," << b << ") = " << pA << std::endl;
    getch();
    return 0;
}


Добавлено через 1 час 31 минуту
5 задание
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*Дано целое число N (> 1) и набор из N вещественных чисел. Если
данный набор образует убывающую последовательность, то вывести 0;
в противном случае вывести номер первого числа, нарушающего
закономерность.*/
 
#include <conio.h>
#include <iostream>
 
using namespace std;
 
 
int main()
{
    setlocale (LC_ALL,"Russian");
    cout << "Описание пятой программы(сделать самой)." << endl;
 
    int n;
    cout << "Введите количество элементов\n N = ";
    cin >> n;
    if (n < 2) {
        cout << "Ошибка: N меньше двух" << endl;
        getch();
        return 1;
    }
 
    double *array = new double [n];
    for (int i = 0; i < n; ++i) {
        cout << "Введите" << i + 1 << "е вещественное число\n"
                " A" << i + 1 << "= ";
        cin >> array[i];
    }
 
    int k = 0;
    for (int i = n - 1; i > 0; --i)
        if (array[i - 1] < array[i]) k = i;
 
    if (!k)
        std::cout << "Последовательность убывает" << std::endl;
    else
        std::cout << "Последовательность нарушена на " << k + 1 << "(" << array[k] << ") элементе" << std::endl;
 
    delete [] array;
    getch();
    return 0;
}

6 задание(лучше такое сейчас преподавателю не показывать)

Просто для интереса можешь разобрать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*Дано целое число K, а также K наборов ненулевых целых чисел. Каждый 
набор содержит не менее двух элементов, признаком его завершения
является число 0. Найти количество наборов, элементы которых возрастают.*/
#include <conio.h>
#include <iostream>
#include <list>
 
using namespace std;
 
typedef list<int> Set;
 
static bool isUprisingSet(const Set &set)
{
    Set::const_iterator end = set.cend();
    --end;
    for (Set::const_iterator i = set.cbegin(); i != end;)
        if (*i > *(++i)) return false;
    return true;
}
 
int main()
{
    setlocale (LC_ALL,"Russian");
    cout << "Описание шестой программы(сделать самой)." << endl;
 
    int k;
    cout << "Введите количество наборов\n K = ";
    cin >> k;
    if (k < 1) {
        cout << "Ошибка: наборов не может быть меньше одного" << endl;
        getch();
        return 1;
    }
 
    Set *sets = new Set [k];
    int p;
    for(int i = 0; i < k; ++i) {
        cout << "Набор 1, введите целые положительные числа,\n"
                "конец записи - число 0" << endl;
        for(int j = 1; ; ++j) {
            cout << "  " << j << " число = ";
            cin >> p;
            if (!p) {
                if (j > 2)
                    break;
                cout << "Предупреждение: Набор не может содержать меньше двух элементов:" << endl;
                --j;
            } else if (p < 0) {
                cout << "Ошибка: число отрицательно" << endl;
                getch();
                return 1;
            } else {
                sets[i].push_back(p);
            }
        }
    }
 
    p = 0;
    for(int i = 0; i < k; ++i)
        if (isUprisingSet(sets[i])) ++p;
 
    if (!p)
        std::cout << "Здесь нет возрастающих последовательностей" << std::endl;
    else
        std::cout << "Здесь " << p << " возрастающих последовательностей" << std::endl;
 
    delete [] sets;
    getch();
    return 0;
}

6 задание

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*Дано целое число K, а также K наборов ненулевых целых чисел. Каждый 
набор содержит не менее двух элементов, признаком его завершения
является число 0. Найти количество наборов, элементы которых возрастают.*/
 
#include <conio.h>
#include <iostream>
#include <list>
 
using namespace std;
 
#define MAXARRAY 50
 
bool isUprisingSet(int *set)
{
    for (int j = 0; set[j+1] != 0; ++j)
        if (set[j] > set[j+1])
            return false;
    return true;
}
 
int main()
{
    setlocale (LC_ALL,"Russian");
    cout << "Описание шестой программы(сделать самой)." << endl;
 
    int k;
    cout << "Введите количество наборов\n K = ";
    cin >> k;
    if (k < 1) {
        cout << "Ошибка: наборов не может быть меньше одного" << endl;
        getch();
        return 1;
    }
 
    int **sets = new int* [k]; // массив указателей
    int p;
    for(int i = 0; i < k; ++i) {
        sets[i] = new int[MAXARRAY];
        cout << "Набор 1, введите целые положительные числа,\n"
                "конец записи - число 0\n"
                "максимально чисел - " << MAXARRAY - 1 << endl;
        for (int j = 0; j < MAXARRAY; ++j) {
            if (j + 1 == MAXARRAY) {
                sets[i][j] = 0;
                break;
            }
            cout << "  " << j + 1 << " число = ";
            cin >> p;
            if (!p) {
                if (j > 1) {
                    sets[i][j] = 0;
                    break;
                }
                cout << "Предупреждение: Набор не может содержать меньше двух элементов:" << endl;
                --j;
            } else if (p < 0) {
                cout << "Ошибка: число отрицательно" << endl;
                getch();
                return 1;
            } else {
                sets[i][j] = p;
            }
        }
    }
 
    p = 0;
    for(int i = 0; i < k; ++i)
        if (isUprisingSet(sets[i])) p++;
 
    if (!p)
        std::cout << "Здесь нет возврастающих постледовательностей" << std::endl;
    else
        std::cout << "Здесь " << p << " возврастающих последовательностей" << std::endl;
 
    for (int i = 0; i < k; ++i)
        delete [] sets[i];
    delete [] sets;
    getch();
    return 0;
}
Yandex
Объявления
27.10.2013, 23:42     Написать на С++
Ответ Создать тему
Опции темы

Текущее время: 08:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru