Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/75: Рейтинг темы: голосов - 75, средняя оценка - 4.60
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92

Решение простых задач C++ (нужен совет)

08.07.2017, 16:13. Показов 15951. Ответов 11

Студворк — интернет-сервис помощи студентам
Здравствуйте! Решил самостоятельно изучать C++, друзей программистов нет, поэтому обращаюсь за помощью к Вам. Имеем на входе 2 маленькие простые задачи и 2 решения.Кому не сложно проверьте пожалуйста правильность решения и по возможности(если есть альтернативные способы решения).Спасибо!
Задача 1:
В стандартном потоке даны три строки, разделённые пробелом. Каждая строка состоит из строчных латинских букв и имеет длину не более 30 символов. Выведите в стандартный вывод лексикографически минимальную из них.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
int main() {
    string a, b, c;
    cin>> a >>b>>c;
    if (a<b && a<c){
        cout<<a;
    }
    else {if (b<a && b<c )
    {
        cout<<b;
    }
    else
    {
        cout<<c;
    }
    }
       return 0;
}
Задача 2:
На вход вашей программе в стандартном вводе даны действительные коэффициенты A, B и C уравнения Ax² + Bx + C = 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
28
29
30
31
32
#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    double a, b, c,d,x1,x2, x3;
    cin>> a >>b>>c;
    d= b*b-4*a*c;
    x1=(-b + sqrt(d))/(2*a);
    x2=(-b - sqrt(d))/(2*a);
    cout<< "D= "<<d;
    if(a==0) {
        x3=-c/b;
                cout<<x3<<endl;
   }
    else {
 
        if (d>0){
                cout<<x1<<" "<<x2<< endl;
            }
            else {if (d==0 )
            {
                cout<<x1<<endl;
            }
            else
            {
                cout<<"NULL"<<endl;
            }
            }
    }
       return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.07.2017, 16:13
Ответы с готовыми решениями:

Решение простых задач

C++, Определение простых чисел, нужен совет
Мне необходимо написать алгоритм определения простых чисел от 1 до 100. Уже три часа переписываю код, ничего не выходит. Пробовал по...

Решение простых задач по массивам и спискам
П.5.16.Правил Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема. ...

11
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
08.07.2017, 16:33
я бы так сделал)
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
#include <cstdlib>
#include <iostream>
#include <string>
 
using namespace std;
 
string max(string first, string second)
{
    if (first > second)
    {
        return first;
    }
    else
    {
        return second;
    }
}
 
int main()
{
    string a, b, c;
    cin >> a >> b >> c;
    cout << max(max(a, b), max(b, c)) << endl;
    system("pause");
    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
#include <cstdlib>
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    int a, b, c; double d;
    cin >> a >> b >> c;
    cout << a << "x^2 + " << b << "x + " << c << endl;
    d = sqrt(double(b*b) - (double)(4 * a*c));
    if (d > 0)
    {
        cout << "1st: " << ((-1)*(double)b - d) / (2 * (double)a) << " 2nd: " << ((-1)*(double)b + d) / (2 * (double)a) << endl;
    }
    else if (d == 0)
    {
        cout << "Only 1 corner: " << ((-1)*(double)b) / (2 * (double)a) << endl;
    }
    else if (d < 0)
    {
        cout << "No corners!" << endl;
    }
    system("pause");
    return 0;
}
0
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
08.07.2017, 16:46  [ТС]
Цитата Сообщение от GeFacle Посмотреть сообщение
string max(string first, string second) { if (first > second) { return first; } else { return second; } }
"Это вы использовали указатели?Немного подзабыл эту тему, не могу разобраться, реализован вариант когда 2 значения одинаковы? к примеру a a d?
0
 Аватар для Herji
299 / 208 / 174
Регистрация: 11.05.2016
Сообщений: 655
08.07.2017, 17:01
в этой теме нет ни одного указателя)
0
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
08.07.2017, 17:05
ZarinZomanu4, это функция с 2 входными значениями, здесь нет указателей)
а с тремя значениями она не будет работать, я сделал, как проще)
C++
1
max(max(a, b), max(b, c))
тут типа ты получаешь максимальное из максимального первого и второго и максимального второго и третьего
1
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
08.07.2017, 17:27  [ТС]
[quote="ZarinZomanu4;10607374"]Задача 1:
В стандартном потоке даны три строки, разделённые пробелом. Каждая строка состоит из строчных латинских букв и имеет длину не более 30 символов. Выведите в стандартный вывод лексикографически минимальную из них.
Переделал под повторяющиеся значения типа 2 2 3 и 3 3 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
#include <iostream>
#include <string>
using namespace std;
int main() {
    string a, b, c;
    cin>> a >>b>>c;
    if (a<b && a<c && a!=b && a!=c){
        cout<<a;
    }
    if (b<a && b<c && b!=c )
    {
        cout<<b;
    }
    if (a==b && b<c){
        cout<<b;
        }
    if(b==c && a>b){
        cout<<b;
      }
    if(c<b && a>c && c!=b && a!=c){
        cout<<c;}
    if (a==b&&b==c){
     cout<<c;}
           return 0;
}
Добавлено через 4 минуты
Цитата Сообщение от GeFacle Посмотреть сообщение
тут типа ты получаешь максимальное из максимального первого и второго и максимального второго и третьего
спасибо разобрался.
0
08.07.2017, 17:34

Не по теме:

GeFacle,

Цитата Сообщение от GeFacle Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
string max(string first, string second)
{
  if (first > second)
  {
    return first;
  }
  else
  {
    return second;
  }
}
Можно просто:
C++
1
#define MAX( a, b ) ((a) > (b) ? (a) : (b))
:)

0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
08.07.2017, 20:54
GeFacle Один вызов max (по условию задачи, кстати говоря, должен быть min) у вас всё же лишний.
Captain Maxee, можно просто
C++
1
#include <algorithm>
1
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
09.07.2017, 15:39  [ТС]
Задача 3
Дано два натуральных числа A и B, не превышающих 1 000 000. Напишите программу, которая вычисляет целую часть частного от деления A на B.

Если B = 0, выведите "Impossible".
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    #include <iostream>
    using namespace std;
    int main() {
        int a, b;
        cin>> a >>b;
        if (b!=0){
            cout<<a/b;
        }
     
        else
        {
            cout<< "Impossible"<<endl;
        }
     
           return 0;
    }
Добавлено через 27 минут
Задача 4
Написать программу вычисления стоимости покупки с учётом скидки. Скидка в X процентов предоставляется, если сумма покупки больше A рублей, в Y процентов - если сумма больше B рублей.

В стандартном вводе содержится пять вещественных чисел, разделённых пробелом: N, A, B, X, Y (A < B) - где N - исходная стоимость товара. Выведите стоимость покупки с учётом скидки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    #include <iostream>
    using namespace std;
    int main() {
        float n, a, b, x,y;//N, A, B, X, Y
        cin>>n >>a >>b>>x>>y;
        if (n<a && n<b){
            cout<<n;
        }
        if (n>=a && n<b )
        {
            cout<<n-(n*(x/100));
        }
         if (n>=b )
        {
            cout<<n-(n*(y/100));
        }
           return 0;
    }
Добавлено через 3 часа 2 минуты
Подскажите что не так с этим решением
задача
Дано два целых числа A и B (A <= B, A >= 1, B <= 30000). Выведите через пробел все чётные числа от A до B (включительно).
такой код работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin>> a >>b;
    for (int counter =a;counter<b;counter++)
    {
        if (a%2==0)
        {
            cout<<a;
        }   
        a++;
    }
           return 0;
}
а такой нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin>> a >>b;
    for (a<b;a++)
    {
        if (a%2==0)
        {
            cout<<a;
        }   
    
    }
           return 0;
}
0
0 / 0 / 0
Регистрация: 09.07.2017
Сообщений: 2
09.07.2017, 16:00
К задаче 3: Целая часть от деления это
C++
1
(int)(a/b)
а не
C++
1
a/b
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
Подскажите что не так с этим решением
Если вам не нужно создавать локальный счетчик в цикле for, то поставьте ; в
C++
1
for (;a<b;a++)
вместо
C++
1
for (a<b;a++)
Хотя в этом случае было бы удобней использовать цикл while
0
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
09.07.2017, 17:12  [ТС]
Цитата Сообщение от Dopamine1 Посмотреть сообщение
Если вам не нужно создавать локальный счетчик в цикле for, то поставьте ; в
C++
Выделить код
1
for (;a<b;a++)
Спасибо, а я думаю чего это компилятор ругается.

Добавлено через 3 минуты
Есть такая вот задача.
Дана строка. Найдите в этой строке второе вхождение буквы f и выведите индекс этого вхождения. Если буква f в данной строке встречается только один раз, выведите число -1, а если не встречается ни разу, выведите число -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
    #include <iostream>
    #include <string>
    using namespace std;
     
    int main() {
        string a;
        int x=0;
        int y=0;
        cin>>a;
        for (auto c: a){
            if (c=='f')
            {
                x++;
            }
             if(x==2)
            {
                break;
            }
             y++;
            }
        if (x==0)
        {cout << "-2" << endl;}
        if (x==1)
        {cout << "-1" << endl;} 
        if (x==2)
        {cout << y << endl;}    
     
        // your code goes here
        return 0;
    }
Насколько оно верно?

Добавлено через 32 минуты
Задача
В stdin даны два натуральных числа. Найти их наибольший общий делитель.
Решение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    #include <iostream>
    using namespace std;
     
    int main() {
        int a, b;
        cin>>a>>b;
        while (a<b || a>b)
        {
        if (a > b)
         { a = a - b; }
        else 
         { b = b - a;}
     
        }
        cout<<"NOD = "<<a;
        return 0;
    }
0
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
09.07.2017, 20:47
ZarinZomanu4, вы лучше для каждой задачи одну тему создавайте а то каша может получится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.07.2017, 20:47
Помогаю со студенческими работами здесь

Ruby Решение простых задач.
Всем здравствуйте, я тут новенькая. Имею опыт в java &amp; php, появилась необходимость перейти на ruby, так вот нужно решить одну задачу, я...

Решение задач с использованием простых записей
Распечатать список тех учителей школы которые преподают математику, информатику, указать стаж работы и их недельную нагрузку

нужен совет. сборник задач по дискретной математике
может кто посоветовать какой-нибудь хороший сборник задач с решениями по дискретной математике (особенно интересны графы и комбинаторика) ?

Я не прошу решение, но нужен совет по задачам
1)Подскажите ,как вычислить среднее арифметическое элементов матрицы. С чего начать? Как правильно начать писать? 2) Определить сколько...

Нужен ваш совет или полное решение !
Создайте в классе Circle метод, перемещающий центр круга в случайную точку квадрата координатной плоскости с диагональю от до . Обратите...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru