уважаемые форумчане. Пишу программу по заданию(Даны 2 числа. Если они оба отрицательны, то первое уменьшить на 1, а второе увеличить на 1; если оба положительны, то большее из них удвоить, а меньшее утроить; в противном случае отрицательное из чисел заменить его абсолютным значением.). Но при компиляции программа мне выводит a=0.00000,и=-9673644... ; Дайте пожалуйста рекомендацию, где же я мог накосячить при написании программы. Прикладываю код.
#include <math.h>
#include <iostream>
using namespace std;
int main(void)
{
float a, b,c;
printf("vvedite a \n");
scanf_s("%f", &a);
printf("vvedite b \n");
scanf_s("%f", &b);
if (a&&b < 0)
{
a -= 1;
b += 1;
}
if (a&&b > 0)
{
if (a > b)
{
a = a * 2;
b = a * 3;
}
if (b > a)
{
b = b * 2;
a = a * 3;
}
if (a&&b == 0)
{
a = fabs(a);
b = fabs(b);
}
printf("a = %lf, b = %lf \n");
scanf_s("%d", &c);
return 0;
}
}
Вы получаете неопределенный результат, поскольку:
printf("a = %lf, b = %lf \n");
должен выводить два аргумента тип float, но вы их не передаете. Исправьте на:
printf("a = %lf, b = %lf \n", a, b);
А также закрывющую скобку тела if нужно поставить перед return 0;
а не после.
И после исправления этих ошибок ваша программа не выполнит то, что вы ожидаете, потому что вы проверки условый выполняете неверно.
Во-первых, нужно исправить вывод. Правильно будет так:
printf("a = %f, b = %f \n", a, b);
Во-вторых, исправить проверки в условиях. Когда сравниваете несколько чисел с константой, нужно делать это не сразу одним условием, а сравнивать каждое число отдельно, объединяя их логическими связками. Например,
if (a<0.0 && b<0.0) ... // Если оба отрицательны
if (a>0.0 && b>0.0) ... // Если оба положительны
В-третьих, раз уж пользуетесь идеологически-чистым вводом-выводом, нужно взять заголовочный файл stdio.h
вместо iostream
, и потом using namespace std
уже не нужен.
В-четвёртых, вместо scanf_s
надо использовать scanf
, если не знаете, в чём разница. А вы не знаете, это видно по коду.
В-пятых, нужно вынести вывод данных и выход из функции ЗА пределы последнего if
.
>> где же я мог накосячить при написании программы
Везде :)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В общем, пишу небольшое приложение на С++ в Qt, которое сможет отрисовывать графы, использую стороннюю библиотеку Graphviz в QtПри дебаге приложения...
Как прочитать весь текущий std::cin одной операцией в строку std::string?