<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Rust - варианты простого калькулятора]]></title><description><![CDATA[<h2><a class="anchor-offset" name="1.-простейший-калькулятор-сложение-без-ввода"></a>1. Простейший калькулятор (сложение без ввода)</h2>
<pre><code>fn main() {
    println!("--- Простейший калькулятор (сложение, без ввода) ---");
    
    let num1 = 25.3;
    let num2 = 75.0;
    let result = num1 + num2;
    println!("Результат: {} + {} = {}", num1, num2, result);
}
</code></pre>
]]></description><link>https://baseinfo.nbics.net/topic/262/rust-варианты-простого-калькулятора</link><generator>RSS for Node</generator><lastBuildDate>Wed, 10 Jun 2026 17:28:36 GMT</lastBuildDate><atom:link href="https://baseinfo.nbics.net/topic/262.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 May 2026 13:12:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rust - варианты простого калькулятора on Thu, 04 Jun 2026 18:47:42 GMT]]></title><description><![CDATA[<h1><a class="anchor-offset" name="8.-упрощенная-учебная-программа-моделирование-расхода-топлива-при-маневрах-космического-корабля"></a>8. УПРОЩЕННАЯ УЧЕБНАЯ ПРОГРАММА: МОДЕЛИРОВАНИЕ РАСХОДА ТОПЛИВА ПРИ МАНЕВРАХ КОСМИЧЕСКОГО КОРАБЛЯ</h1>
<hr />
<pre><code>// =============================================================================
// УПРОЩЕННАЯ УЧЕБНАЯ ПРОГРАММА: МОДЕЛИРОВАНИЕ РАСХОДА ТОПЛИВА
// =============================================================================

// Простая функция для расчета секундного расхода топлива.
// Принимает тягу двигателя и качество его настройки (эффективность).
fn calculate_flow(thrust: f64, efficiency: f64) -&gt; f64 {
    thrust / efficiency
}

fn main() {
    println!("--- СИМУЛЯЦИЯ РАБОТЫ ДВИГАТЕЛЯ ---");

    // 1. НЕИЗМЕНЯЕМЫЕ ПЕРЕМЕННЫЕ (let)
    // Эти значения не меняются на протяжении всей работы
    let thrust = 20.0;       // Тяга двигателя (в Ньютонах)
    let efficiency = 250.0;   // Эффективность двигателя

    // Расчет секундного расхода топлива с помощью нашей функции
    let fuel_flow = calculate_flow(thrust, efficiency);
    println!("Расход топлива в секунду: {} кг/с", fuel_flow);

    // 2. ИЗМЕНЯЕМАЯ ПЕРЕМЕННАЯ (let mut)
    // Масса топлива в баке будет уменьшаться, поэтому нужен mut
    let mut fuel_mass = 50.0; // Стартовый запас топлива (в кг)
    
    // Переменная-счетчик для учета времени работы двигателя
    let mut seconds_passed = 0;

    // 3. ОБЫЧНЫЙ ЦИКЛ (while)
    // Работаем, пока в баке есть топливо (больше нуля)
    println!("\n[Запуск двигателя. Симуляция до полного опустошения бака]");
    
    while fuel_mass &gt; 0.0 {
        // Уменьшаем запас топлива на величину секундного расхода
        fuel_mass = fuel_mass - fuel_flow;
        
        // Увеличиваем счетчик времени на 1 секунду
        seconds_passed = seconds_passed + 1;

        println!("Секунда {}: остаток топлива: {:.2} кг", seconds_passed, fuel_mass);
    }

    println!("\n[Двигатель заглох. Время работы: {} с]", seconds_passed);

    // 4. ОБЫЧНОЕ УСЛОВИЕ (if / else)
    // Проверяем, хватило ли времени работы для успешного маневра
    // Допустим, для выхода на нужную орбиту двигатель должен был отработать 500 секунд
    if seconds_passed &gt;= 500 {
        println!("Статус: Успех! Корабль успешно вышел на заданную орбиту.");
    } else {
        println!("Статус: Отказ! Не хватило топлива для завершения маневра.");
    }

    println!("-----------------------------------");
}
</code></pre>
]]></description><link>https://baseinfo.nbics.net/post/3234</link><guid isPermaLink="true">https://baseinfo.nbics.net/post/3234</guid><dc:creator><![CDATA[Admin]]></dc:creator><pubDate>Thu, 04 Jun 2026 18:47:42 GMT</pubDate></item><item><title><![CDATA[Reply to Rust - варианты простого калькулятора on Tue, 02 Jun 2026 09:22:03 GMT]]></title><description><![CDATA[<h1><a class="anchor-offset" name="7.-компактная-учебная-программа-моделирование-орбитального-маневра"></a>7. КОМПАКТНАЯ УЧЕБНАЯ ПРОГРАММА: МОДЕЛИРОВАНИЕ ОРБИТАЛЬНОГО МАНЕВРА</h1>
<pre><code>// =============================================================================
// КОМПАКТНАЯ УЧЕБНАЯ ПРОГРАММА: МОДЕЛИРОВАНИЕ ОРБИТАЛЬНОГО МАНЕВРА
// =============================================================================

// 1. ДЕМОНСТРАЦИЯ: const (Константа)
// Ускорение свободного падения для расчета удельного импульса
const G0: f64 = 9.81;

// 2. ДЕМОНСТРАЦИЯ: функции (Расчет расхода топлива в кг/с)
fn calculate_fuel_flow(thrust: f64, isp: f64) -&gt; f64 {
    thrust / (isp * G0) // Возврат значения выражением (без return и `;`)
}

// Вспомогательная функция классификации двигателя
fn get_engine_class(thrust: f64) -&gt; &amp;'static str {
    // 3. ДЕМОНСТРАЦИЯ: if else if else
    if thrust &lt; 10.0 {
        "Маломощный"
    } else if thrust &lt; 100.0 {
        "Стандартный"
    } else {
        "Мощный"
    }
}

fn main() {
    println!("--- СИСТЕМА УПРАВЛЕНИЯ МАНЕВРОМ ---");

    // 4. ДЕМОНСТРАЦИЯ: let (Неизменяемые переменные)
    let thrust = 25.0;            // Тяга двигателя (Н)
    let specific_impulse = 290.0; // Удельный импульс (с)

    // 5. ДЕМОНСТРАЦИЯ: let mut (Изменяемая переменная — бак теперь пустеет!)
    let mut fuel_mass = 120.0;     // Запас топлива (кг)
    
    // Расчет расхода топлива через функцию
    let fuel_flow = calculate_fuel_flow(thrust, specific_impulse);

    // 6. ДЕМОНСТРАЦИЯ: цикл for (Симуляция 5-секундного маневра шаг за шагом)
    println!("\n[Запуск двигателя. Длительность маневра: 5 секунд]");
    for second in 1..=5 {
        // Уменьшаем реальный запас топлива в баке каждую секунду
        fuel_mass -= fuel_flow;
        println!("Секунда {}: топливо сгорает... Остаток: {:.4} кг", second, fuel_mass);
    }

    // 7. ДЕМОНСТРАЦИЯ: цикл while (Откачка остатков газов из магистрали после отключения)
    let mut purge_time = 0.0;
    while purge_time &lt; 3.0 {
        purge_time += 1.0;
    }
    println!("[Двигатель отключен. Продувка системы... Готово за {} с]", purge_time);

    // 8. ДЕМОНСТРАЦИЯ: цикл loop и break (Поиск резервного времени работы на остатках)
    let mut emergency_time = 0.0;
    loop {
        // Проверяем, хватит ли остатка топлива еще на один шаг
        if fuel_mass &lt; fuel_flow {
            break; // 9. ДЕМОНСТРАЦИЯ: break (Выход из бесконечного цикла, если бак пуст)
        }
        fuel_mass -= fuel_flow;
        emergency_time += 1.0;
    }
    println!("[Анализ ЧС]: Дополнительный аварийный резерв работы: {} с", emergency_time);

    // 10. ДЕМОНСТРАЦИЯ: затенение переменных (Variable Shadowing)
    // Переводим оставшуюся массу из кг в тонны для финального отчета
    let fuel_mass = fuel_mass / 1000.0; 
    println!("\nФинальный остаток топлива в тоннах: {:.6} т", fuel_mass);

    // Превращаем тонны обратно в кг для логики ветвления (снова затенение)
    let fuel_mass = fuel_mass * 1000.0;

    // 11. ДЕМОНСТРАЦИЯ: if как выражение (Тернарный аналог в Rust)
    let status = if fuel_mass &gt; 10.0 {
        "Маневр успешен. Корабль на заданной орбите."
    } else {
        "Внимание! Критический остаток топлива!"
    };
    println!("Статус миссии: {}", status);

    // 12. ДЕМОНСТРАЦИЯ: простой if и if else
    if thrust &gt; 20.0 {
        println!("Уведомление: Стабилизация курса выполнена штатно.");
    } else {
        println!("Уведомление: Требуется более длительный импульс.");
    }

    // 13. ДЕМОНСТРАЦИЯ: match (Сопоставление с образцом на основе класса двигателя)
    match get_engine_class(thrust) {
        "Маломощный" =&gt; println!("Конфигурация: Подходит для точной ориентации спутников."),
        "Стандартный" =&gt; println!("Конфигурация: Оптимально для большинства легких кораблей."),
        _ =&gt; println!("Конфигурация: Требуется усиленная термозащита корпуса."),
    }

    println!("-----------------------------------");
}
</code></pre>
]]></description><link>https://baseinfo.nbics.net/post/3233</link><guid isPermaLink="true">https://baseinfo.nbics.net/post/3233</guid><dc:creator><![CDATA[Admin]]></dc:creator><pubDate>Tue, 02 Jun 2026 09:22:03 GMT</pubDate></item><item><title><![CDATA[Reply to Rust - варианты простого калькулятора on Tue, 26 May 2026 17:00:25 GMT]]></title><description><![CDATA[<h1><a class="anchor-offset" name="6.-параметры-цилиндра-вычисление-на-основе-случайных-чисел"></a>6. Параметры цилиндра, вычисление на основе случайных чисел</h1>
<pre><code>use rand::Rng;
use rand::RngExt;

// Генерация случайного числа
fn random_number(min: f64, max: f64) -&gt; f64 {
    let mut rng = rand::rng();
    rng.random_range(min..max)
}

fn main() {
    const PI: f64 = 3.14;

    let radius = random_number(1.0, 10.0);
    let pipe_thickness = random_number(1.0, 10.0);

    println!("Внутренний радиус = {}, Толщина стенки цилиндра = {}", radius, pipe_thickness);
    println!("================");
    println!("Внешний радиус: {}", radius + pipe_thickness);
    println!("Внутренний периметр цилиндра: {}", 2.0 * PI * radius);
}
</code></pre>
]]></description><link>https://baseinfo.nbics.net/post/3085</link><guid isPermaLink="true">https://baseinfo.nbics.net/post/3085</guid><dc:creator><![CDATA[Admin]]></dc:creator><pubDate>Tue, 26 May 2026 17:00:25 GMT</pubDate></item><item><title><![CDATA[Reply to Rust - варианты простого калькулятора on Tue, 12 May 2026 13:17:40 GMT]]></title><description><![CDATA[<h2><a class="anchor-offset" name="5.-простой-калькулятор-полностью"></a>5. Простой калькулятор (полностью)</h2>
<pre><code>use std::io;

fn main() {
    println!("=== Простой калькулятор на Rust ===");
    println!("Для выхода введите 'q' или оставьте строку пустой\n");

    loop {
        // Читаем первое число
        let num1 = match read_number("Введите первое число (или q для выхода):") {
            Some(n) =&gt; n,
            None =&gt; break,
        };

        // Читаем оператор
        let operator = read_operator();

        // Читаем второе число
        let num2 = match read_number("Введите второе число:") {
            Some(n) =&gt; n,
            None =&gt; continue,
        };

        // Выполняем вычисление
        match calculate(num1, &amp;operator, num2) {
            Ok(result) =&gt; {
                println!("Результат: {} {} {} = {:.4}", num1, operator, num2, result);
            }
            Err(msg) =&gt; println!("Ошибка: {}", msg),
        }

        // Исправленная строка-разделитель
        println!("{}", "─".repeat(40));
    }

    println!("До свидания! 👋");
}

// ====================== ФУНКЦИИ ======================

fn read_number(prompt: &amp;str) -&gt; Option&lt;f64&gt; {
    loop {
        println!("{}", prompt);
        let mut input = String::new();
        
        if io::stdin().read_line(&amp;mut input).is_err() {
            println!("Ошибка чтения ввода!");
            continue;
        }

        let input = input.trim();

        if input.eq_ignore_ascii_case("q") || input.is_empty() {
            return None;
        }

        match input.parse::&lt;f64&gt;() {
            Ok(num) =&gt; return Some(num),
            Err(_) =&gt; println!("Ошибка: введите корректное число!"),
        }
    }
}

fn read_operator() -&gt; String {
    loop {
        println!("Введите оператор (+, -, *, /):");
        let mut input = String::new();

        if io::stdin().read_line(&amp;mut input).is_err() {
            continue;
        }

        let op = input.trim();

        if matches!(op, "+" | "-" | "*" | "/") {
            return op.to_string();
        } else {
            println!("Ошибка: допустимы только +, -, *, /");
        }
    }
}

fn calculate(a: f64, op: &amp;str, b: f64) -&gt; Result&lt;f64, String&gt; {
    match op {
        "+" =&gt; Ok(a + b),
        "-" =&gt; Ok(a - b),
        "*" =&gt; Ok(a * b),
        "/" =&gt; {
            if b == 0.0 {
                Err("Деление на ноль!".to_string())
            } else {
                Ok(a / b)
            }
        }
        _ =&gt; Err("Неизвестный оператор".to_string()),
    }
}
</code></pre>
]]></description><link>https://baseinfo.nbics.net/post/3014</link><guid isPermaLink="true">https://baseinfo.nbics.net/post/3014</guid><dc:creator><![CDATA[Admin]]></dc:creator><pubDate>Tue, 12 May 2026 13:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to Rust - варианты простого калькулятора on Tue, 12 May 2026 13:17:27 GMT]]></title><description><![CDATA[<h2><a class="anchor-offset" name="4.-простейший-калькулятор-сложение-со-вводом-и-функция"></a>4. Простейший калькулятор (сложение со вводом и функция)</h2>
<pre><code>use std::io;

fn read_number(prompt: &amp;str) -&gt; f64 {
    println!("{}", prompt);

    let mut input = String::new();

    io::stdin()
        .read_line(&amp;mut input)
        .expect("Ошибка чтения");

    input
        .trim()
        .parse()
        .expect("Это не число")
}

fn main() {
    println!("--- Простой калькулятор (сложение) ---");

    let num1 = read_number("Введите первое число:");
    let num2 = read_number("Введите второе число:");

    let result = num1 + num2;

    println!("Результат: {} + {} = {}", num1, num2, result);
}
</code></pre>
]]></description><link>https://baseinfo.nbics.net/post/3013</link><guid isPermaLink="true">https://baseinfo.nbics.net/post/3013</guid><dc:creator><![CDATA[Admin]]></dc:creator><pubDate>Tue, 12 May 2026 13:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to Rust - варианты простого калькулятора on Tue, 12 May 2026 13:17:16 GMT]]></title><description><![CDATA[<h2><a class="anchor-offset" name="3.-простейший-калькулятор-сложение-со-вводом"></a>3. Простейший калькулятор (сложение со вводом)</h2>
<pre><code>use std::io;

fn main() {
    println!("--- Простой калькулятор (сложение) ---");

    println!("Введите первое число:");
    let mut input1 = String::new();
    io::stdin().read_line(&amp;mut input1).expect("Ошибка чтения");
    let num1: f64 = input1.trim().parse().expect("Это не число");

    println!("Введите второе число:");
    let mut input2 = String::new();
    io::stdin().read_line(&amp;mut input2).expect("Ошибка чтения");
    let num2: f64 = input2.trim().parse().expect("Это не число");

    let result = num1 + num2;
    println!("Результат: {} + {} = {}", num1, num2, result);
}
</code></pre>
]]></description><link>https://baseinfo.nbics.net/post/3012</link><guid isPermaLink="true">https://baseinfo.nbics.net/post/3012</guid><dc:creator><![CDATA[Admin]]></dc:creator><pubDate>Tue, 12 May 2026 13:17:16 GMT</pubDate></item><item><title><![CDATA[Reply to Rust - варианты простого калькулятора on Tue, 12 May 2026 13:17:02 GMT]]></title><description><![CDATA[<h2><a class="anchor-offset" name="2.-простейший-калькулятор-минималистичный-вариант-со-вводом"></a>2. Простейший калькулятор (минималистичный вариант со вводом)</h2>
<pre><code>use std::io;

fn read_number(prompt: &amp;str) -&gt; f64 {
    println!("{}", prompt);

    let mut input = String::new();

    io::stdin().read_line(&amp;mut input).unwrap();

    input.trim().parse().unwrap()
}

fn main() {
    let a = read_number("Введите первое число:");
    let b = read_number("Введите второе число:");

    println!("Результат: {}", a + b);
}
</code></pre>
]]></description><link>https://baseinfo.nbics.net/post/3011</link><guid isPermaLink="true">https://baseinfo.nbics.net/post/3011</guid><dc:creator><![CDATA[Admin]]></dc:creator><pubDate>Tue, 12 May 2026 13:17:02 GMT</pubDate></item></channel></rss>