Форум программистов, компьютерный форум CyberForum.ru

Ошибка в if - else - C++

Восстановить пароль Регистрация
 
 
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
14.11.2012, 23:05     Ошибка в if - else #1
Короче ребят вот в чём дело,почему-то каждый шаг выводит одно и тоже значение,но по идее разные должен.
И при c==0 и x>0 выбивает вот,что rghost.ru/41573289.view плиз обо всём поподробней)


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
65
66
// labAn.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <clocale>
 
 
 
int _tmain()
{
    setlocale(LC_ALL,"Russian");
    setlocale(LC_ALL,"rus");
 
    float Xn,Xk,dx,x,a,b,c,funk;
    int logic,s,g,h;
    
    printf("Введите Xn:\n");
        scanf_s("%f", &Xn);
 
    printf("Введите Xk:\n");
        scanf_s("%f", &Xk);
 
    printf("Введите dx:\n");
        scanf_s("%f", &dx);
    
    printf("Введите a:\n");
        scanf_s("%f", &a);
    
    printf("Введите b\n");
        scanf_s("%f", &b);
 
    printf("Введите x:\n");
        scanf_s("%f", &x);
    
    printf("Введите c\n");
        scanf_s("%f", &c);
    
    //Считаем логическое выражение
    s=floor(a);
    g=floor(b);
    h=floor(c);
    logic=s|g|h;
    printf("Результат логического выражения = %d\n",logic);
 
    while (Xn<=Xk)
    {
        if ((c<0) && (x!=0))
        {funk = ((-a)*x)-c;
             printf("Шаг: %.2f ; Результат выражения =  %.2f\n",Xn,funk);}
        else { if ((c>0) && (x==0))
        {   funk = (x-a)/(-c);
            printf("Шаг: %.2f ; Результат выражения =  %.2f\n",Xn,funk);}
        else {funk = (b*x)/(c*a);
            printf("Шаг: %.2f ; Результат выражения =  %.2f\n",Xn,funk);}}
        Xn+=dx;
    };
 
    
 
    getchar ();
    getchar ();
 
    return 0;
}
Добавлено через 11 минут
upupup
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 23:05     Ошибка в if - else
Посмотрите здесь:

C++ Вылетает ошибка error C2061: синтаксическая ошибка: идентификатор "_TCHAR"
C++ Глупая ошибка, но до сих пор неисправленная ошибка: ";"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 23:09     Ошибка в if - else #2
C++
1
funk = (x-a)/(-c);
Деление на ноль при c=0
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
14.11.2012, 23:12  [ТС]     Ошибка в if - else #3
Дело в том,что c>0 обязательно,так следует из условия,тоже об этом думал,но так не может быть,иначе если с=0,то выполняется последнее выражение=)
CableGuy
 Аватар для CableGuy
14 / 14 / 1
Регистрация: 29.03.2012
Сообщений: 41
14.11.2012, 23:12     Ошибка в if - else #4
Там же условие при с>0, делить на 0 не будет.
А разве мы можем так записать (-с)? Первый раз такое вижу...
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
14.11.2012, 23:14  [ТС]     Ошибка в if - else #5
тоже об этом думал,ну в условии так задано,также наврятли в этом причина(((
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 23:15     Ошибка в if - else #6
Цитата Сообщение от faLek Посмотреть сообщение
Дело в том,что c>0 обязательно
Я Вам намекнул на причину ошибки. Тогда вот Вам.
C++
1
2
3
4
5
6
7
8
if ((c<0) && (x!=0))
        {funk = ((-a)*x)-c;
             printf("Шаг: %.2f ; Результат выражения =  %.2f\n",Xn,funk);}
        else { if ((c>0) && (x==0))
        {   funk = (x-a)/(-c);
            printf("Шаг: %.2f ; Результат выражения =  %.2f\n",Xn,funk);}
        else {funk = (b*x)/(c*a);
            printf("Шаг: %.2f ; Результат выражения =  %.2f\n",Xn,funk);}}
При c=0 выполняется
C++
1
funk = (b*x)/(c*a)
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
14.11.2012, 23:19  [ТС]     Ошибка в if - else #7
так да,но именно с-а нужно,и ещё сча только заметил,возможно ли такое,что при с>0 мы должны делить на отрицательное число?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 23:25     Ошибка в if - else #8
Цитата Сообщение от faLek Посмотреть сообщение
так да,но именно с-а нужно
так нужно c-a или c*a? c*a при c=0 всегда дает ноль в знаменателе.
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
14.11.2012, 23:39  [ТС]     Ошибка в if - else #9
ну это понятно,но мне нужно именно с-а,так что там не будет 0.

Добавлено через 8 минут
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от XНАЧ до XКОН с шагом dX.

f=-ax-c при c<0 и x!=0
f=x-a/-c при с>0 и x==0
f=bx/c-a в остальных случаях

где a, b, c – действительные числа. Функция F должна принимать действительное значение, если выражение Ац ИЛИ Вц ИЛИ Сц не равно 0, и целое значение в противном случае. Через Ац, Вц, и Сц обозначены целые части значений a, b, c, операции И и ИЛИ – поразрядные. Значения a, b, c, XНАЧ, XКОН, dX ввести с клавиатуры.

Вот условие задание,чтобы было понятней.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 23:40     Ошибка в if - else #10
Цитата Сообщение от faLek Посмотреть сообщение
C++
1
else {funk = (b*x)/(c*a); printf("Шаг: %.2f ; Результат выражения = %.2f\n",Xn,funk);}}
Ну тогда и пишите c-a. Зачем Вы умножаете?
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
14.11.2012, 23:46  [ТС]     Ошибка в if - else #11
вот я же дубина=),простите,не заметил.Могли бы ещё ответить на пару вопросов,почему одинаковые значение считает,по идее с каждым шагом должно быть немного разное значение.
И ещё может ли быть в условии c>0 и делиться на -с,или положительное число просто станет отрицательным?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 23:52     Ошибка в if - else #12
C++
1
s=floor(a);
Зачем?
Цитата Сообщение от faLek Посмотреть сообщение
или положительное число просто станет отрицательным?
если c=1, то будет деление на -1. Просто не понял вопроса.
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
15.11.2012, 00:01  [ТС]     Ошибка в if - else #13
да всё правильно вы поняли))),а floor использую,чтобы в логическом было целое значение,а то вдруг плохой парень захочет ввести вещественное число=).Ну и последний вопрос,почему выводит одинаковые значения при вычислении?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
15.11.2012, 00:12     Ошибка в if - else #14
Цитата Сообщение от faLek Посмотреть сообщение
а floor использую,чтобы в логическом было целое значение
У Вас все равно s типа int.
Цитата Сообщение от faLek Посмотреть сообщение
Ну и последний вопрос,почему выводит одинаковые значения при вычислении?
Ошибка в if - else
Вы про то, что везде 4,98?
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
15.11.2012, 00:26  [ТС]     Ошибка в if - else #15
да,про оно самое,вроде бы всё правильно записал,а выводит одинаковое,по мойму должно разное значение быть)

Добавлено через 1 минуту
так я же а ввожу с клавиатуры,поэтому s берёт значение а и если же оно вещественное делает его целым.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
15.11.2012, 00:36     Ошибка в if - else #16
Цитата Сообщение от faLek Посмотреть сообщение
да,про оно самое,вроде бы всё правильно записал,а выводит одинаковое,по мойму должно разное значение быть)
А с чего оно будет разным?
У Вас это значение зависит от переменных a,b,c,x, а они в цикле не изменяются, поэтому и значения всегда одинаковые.

Добавлено через 3 минуты
Цитата Сообщение от faLek Посмотреть сообщение
так я же а ввожу с клавиатуры,поэтому s берёт значение а и если же оно вещественное делает его целым.
В int в любом случае запишется только целое число(дробная часть просто испарится). А в данном случае вызов floor лишний
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
15.11.2012, 00:38  [ТС]     Ошибка в if - else #17
угу ясненько,ещё один вопрос,как можно было бы сделать,чтобы значения были разные)
Простите ,что спрашваю,просто хочу досконально выучить язык С,так каждой мелочью интересуюсь)

Добавлено через 2 минуты
можно просто присвоить
s=a;ну,а так понятно к чему вы клонили
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
15.11.2012, 00:44     Ошибка в if - else #18
в конце цикла к x прибавьте dx. У Вас же dx - это шаг изменения x.
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
15.11.2012, 00:48  [ТС]     Ошибка в if - else #19
программа зацикливается,и dx шаг изменения Xn
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
15.11.2012, 00:52     Ошибка в if - else #20
Цитата Сообщение от faLek Посмотреть сообщение
программа зацикливается,и dx шаг изменения Xn
В конце цикла:
C++
1
2
        Xn+=dx;
          x+=dx;
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от XНАЧ до XКОН с шагом dX.
x изменяется в данном интервале, а Xn и Xk - это только "ограничители"
Yandex
Объявления
15.11.2012, 00:52     Ошибка в if - else
Ответ Создать тему
Опции темы

Текущее время: 06:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru