Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Teapot1488
3 / 3 / 1
Регистрация: 10.03.2013
Сообщений: 125

Не меняются значения переменных после ввода

28.11.2016, 06:25. Показов 1211. Ответов 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
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#include <fstream>
#include <cstdio>
#include <iostream>
#include <dos.h>
#include <Math.h>
 
using namespace std;
 
 
void set_max_size()
{
    HANDLE out_handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD maxWindow = GetLargestConsoleWindowSize(out_handle); // размер самого большого возможного консольного окна
    SMALL_RECT srctWindow = { 0, 0, maxWindow.X - 5, maxWindow.Y - 5 };
    SMALL_RECT minWindow = { 0, 0, 0, 0 };
    SetConsoleWindowInfo(out_handle, true, &minWindow);
    SetConsoleScreenBufferSize(out_handle, maxWindow);
    SetConsoleWindowInfo(out_handle, true, &srctWindow);
    cout << "max console size X = " << maxWindow.X << "; " << "max console size Y = " << maxWindow.Y <<endl;
}
 
double round(double x)
{
  return floor(x + 0.5);
}
 
int main()
{
 
    set_max_size();     // размер окна
    system("color F0"); // цвет
 
    double tn, tk, yn, h, Fe, Fem, Fr;
    int i, j, k, n;
    cout << "Differential equitation: t' = y^2*t " <<endl;
    cout << "tn, tk, yn, h = ";
    cin >> tn, tk, yn, h;
    n=ceil((tk-tn)/h)+1;
    cout << "Quantity of ierations n = ";
    cout << n << endl;
    getch();
    //Eiler method
    cout << "Eiler method" <<endl;
    for (i = 0; i < n; i++)
    {
    Fe= Fe+h*(yn*yn*tn);
    tn=tn+h;
    cout << Fe << endl;
    }
    //Eiler modified
 
    for (j = 0; j < n; j++)
    {
    Fem= Fem+(h/2)*(yn*yn*tn+(yn+h)*(yn+h)*(tn+h));
    cout << Fem << endl;
    }
 
getch();
}
Видимо я не замечаю чего-то очевидного, но у меня результат операции равен n=987 при любом значении шага.

Добавлено через 1 час 36 минут
C++
1
n=static_cast<int>((tk-tn)/h);
Если использовать явное преобразование типов, то n = 0 при любых цифрах tn, tk, h.
Или лыжи не едут или я на асфальте.
Может где-то в жизни я свернул не туда?
Есть нижний (начальный) предел tn, верхний (конечный) предел tk. Есть шаг h.
Мне нужно для табулирования функции в этих пределах знать количество итераций для цикла for.
Эта строка работала в Delphi. И всё было збс.
Delphi
1
n:=round((xk-x0)/h)+1;
Первый раз я пытался реализовать через Си-шную функцию округления к ближайшему целому числу
ceil, которая описана в заголовке math.h
т.е.:
C++
1
n=ceil((tk-tn)/h);
пытался еще
C++
1
n=floor((tk-tn)/h+0.5);
но в этом случае n = 988.
1. Изначально n объявлена как int
2. tn, tk, h это double
3. Производим действие над double и получаем результат в виде double
4. Когда мы округляем до ближайшего целого числа результат, который в виде float или double, мы получаем int (может тут я ошибаюсь).
5. Но ПОЧЕМУ это округленное значение вообще берется с потолка? Я пытался обнулить переменную - результат тот же.
Либо 987 при неявном преобразовании типов, либо 0, если юзать явное преобразование типов.
Помогите разобраться.

Добавлено через 6 минут
#НЕНАВИСТЬ_НЕНАВИСТЬ_НЕНАВИСТЬ_НЕНАВИСТЬ

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
cout << "tn=";
    cin >> tn;
    cout << "tk=";
    cin >> tk;
    cout << "yn=";
    cin >> yn;
    cout << "h=";
    cin >> h;
Заработало. В одном проекте все работало ели эти числа вводились через пробел.
В этом проекте оно заработало только если ввод с новой строки каждый раз. Магия, не иначе.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2016, 06:25
Ответы с готовыми решениями:

После первого цикла значения переменных в остальных не меняются и берутся больше допустимого
Помогите понять что не так. После первого цикла значения переменных в остальных не меняются и берутся больше допустимого #include...

Не меняются местами значения переменных
Доброго времени суток. Ни в какую не хочет менять местами значения двух переменных. Часть моего кода: if (c == 'Y' || c == 'y')...

В таблице значений после отправки на печать меняются значения
Добрый день. Всю голову сломал. Есть таблица значений. Выводим её на печать. (появляется окно предварительного просмотра) = Всё...

1
Модератор
Эксперт С++
 Аватар для zss
13780 / 10973 / 6491
Регистрация: 18.12.2011
Сообщений: 29,259
28.11.2016, 07:29
Цитата Сообщение от Teapot1488 Посмотреть сообщение
Магия, не иначе
Цитата Сообщение от Teapot1488 Посмотреть сообщение
cin >> tn, tk, yn, h;
>> - это перегруженный оператор (функция). Его надо вызывать для каждой переменной:
C++
1
cin >> tn >> tk >> yn >> h;
А Ваш код эквивалентен
C++
1
2
3
4
cin >> tn;
 tk;
 yn;
 h;
И не забывайте читать предупреждения об ошибках, у Вас
1>d:\current\cpp\test\test3.cpp(44) : warning C4700: использована неинициализированная локальная переменная "Fe"
1>d:\current\cpp\test\test3.cpp(52) : warning C4700: использована неинициализированная локальная переменная "Fem"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.11.2016, 07:29
Помогаю со студенческими работами здесь

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

Сворачивается отладчик после ввода переменных
После ввода переменных,отладчик просит &quot;нажмите кнопку&quot; и после этого сворачивается(фото),что не так,что он хочет? Условия*: ...

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

Расчитать значения переменных y и z по заданным формулам, используя для ввода/вывода cin и cout
Расчитать значения переменных y и z по заданным формулам . Для ввода/вывод использовать объекты cin и cout. Определить разность между...

Расчитать значения переменных y и z по заданным формулам, используя для ввода/вывода cin и cout
Расчитать значения переменных y и z по заданным формулам (табл. 1). Для ввода/вывода использовать объекты cin и cout. Определить...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru