Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2014, 14:30   #1
Дана188
Пользователь
 
Регистрация: 14.10.2014
Сообщений: 21
По умолчанию Программа для решения суммы строки

Нужно использовать все операторы: if, else, switch, while, do-while, for, break, continue, goto.
Задача №5
Как решать такую задачу?
Изображения
Тип файла: jpg 11.jpg (88.2 Кб, 116 просмотров)

Последний раз редактировалось Дана188; 07.11.2014 в 14:36.
Дана188 вне форума Ответить с цитированием
Старый 07.11.2014, 15:01   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Нужно обязательно все или допускается использовать операторы из указанных? Это важно, потому что часть операторов явно исбыточно. Например goto тут не нужен.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 07.11.2014, 15:29   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

А что такое s в формуле?

Цитата:
Как решать такую задачу?
Уясним, что неизвестно. Нам нужно найти число под названием "сумма". Открываем свою любимую среду разработки и пишем:

Код:
#include <iostream>     // std::cout

int main()
{
    double sum = 0;

    // Print sum
    std::cout << "Sum is " << sum << "\n";

    return 0;
}
Напишем заглушку для функции, которая будет считать сумму:
Код:
#include <iostream>     // std::cout

double sum(  );

int main()
{
    double result = 0;

    // Print sum
    std::cout << "Sum is " << result << "\n";

    return 0;
}

double sum(  )
{
    double result = 0;
    return result;
}
По формуле нам нужно получить от пользователя k и s. Получим и передадим в функцию sum()

Код:
#include <iostream>     // std::cout std::cin

double sum( int k, int s );

int main()
{
    std::cout << "Enter k:\n> ";
    int k;
    std::cin >> k;

    std::cout << "\nEnter s:\n> ";
    int s;
    std::cin >> s;

    double result = 0;

    // Print sum
    std::cout << "\nSum is " << result << "\n\n";

    return 0;
}

double sum( int k, int s )
{
    double result = 0;
    return result;
}
Для нахождения суммы нам нужны функции log10, strt - для расчёта квадратного корня. В стандартной библиотеки C++ есть такие функции. Для того чтобы их использовать нужно подключить заголовочный файл "cmath". Напишем в цикле подсчёт суммы:

Код:
#include <iostream>     // std::cout std::cin
#include <cmath>        // std::log

double sum( int k, int s );

int main()
{
    std::cout << "Enter k:\n> ";
    int k;
    std::cin >> k;

    std::cout << "\nEnter s:\n> ";
    int s;
    std::cin >> s;

    double result = 0;

    // Print sum
    std::cout << "\nSum is " << result << "\n\n";

    return 0;
}

double sum( int k, int s )
{
    double result = 0;

    for ( int i = 1; i < k; ++i ) {
        result = result + std::log10( std::sqrt( s * 1 / i * i ) );
    }

    return result;
}
По условию задачи пользователь не может ввести k больше или равным 35. Введём такое ограничение и если пользователь введёт 35 и более, то выведем сообщение "Попробуйте ещё раз"

Код:
    std::cout << "Enter k (k < 35):\n> ";
    int k;
    std::cin >> k;
    while ( k >= 35 ) {
        std::cout << "\nYou must enter k < 35. Try again:\n> ";
        std::cin >> k;
    }
Мы нашли сумму и показали на экране. Задача решена

Код:
#include <iostream>     // std::cout std::cin
#include <cmath>        // std::log

double sum( int k, int s );

int main()
{
    std::cout << "Enter k (k < 35):\n> ";
    int k;
    std::cin >> k;
    while ( k >= 35 ) {
        std::cout << "\nYou must enter k < 35. Try again:\n> ";
        std::cin >> k;
    }

    std::cout << "\nEnter s:\n> ";
    int s;
    std::cin >> s;

    double result = 0;

    // Print sum
    std::cout << "\nSum is " << result << "\n\n";

    return 0;
}

double sum( int k, int s )
{
    double result = 0;

    for ( int i = 1; i < k; ++i ) {
        result = result + std::log10( std::sqrt( s * 1 / i * i ) );
    }

    return result;
}
Программа считает, скорее всего, неверно, но я показал лишь суть: "Как решать такую задачу"

Последний раз редактировалось Stilet; 07.11.2014 в 18:46.
8Observer8 вне форума Ответить с цитированием
Старый 12.11.2014, 17:47   #4
Дана188
Пользователь
 
Регистрация: 14.10.2014
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Нужно обязательно все или допускается использовать операторы из указанных? Это важно, потому что часть операторов явно исбыточно. Например goto тут не нужен.
Надо использовать все, надо создать 3 программы.
Дана188 вне форума Ответить с цитированием
Старый 12.11.2014, 18:19   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

дай весь pdf почитать. мож там есть скрытые плюшки?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа в С++ для нахождения суммы от n при i=0 для 2ik. VladJAy Помощь студентам 0 23.10.2012 00:19
Программа для решения A*x^2+B*y^2=C GHOST998 Общие вопросы C/C++ 1 16.12.2011 22:03
Программа для решения Судоку Atlika Помощь студентам 1 25.05.2011 20:34
Программа для решения ур-ия ax+b=0 Crish Паскаль, Turbo Pascal, PascalABC.NET 4 13.09.2009 00:42