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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2011, 18:33   #1
annum
Пользователь
 
Регистрация: 08.02.2011
Сообщений: 10
Сообщение Простейшая программа,нуб)

Доброго времени суток.Вообщем в С++ я вообще бревно,новичок,мы только начали изучать его. Надо вообщем написать программу,которая считывает значение х,а,б . И потом в зависимости от их значений высчитывает одну из трёх функций. На дефли это раз плюнуть,но с С++ я просто 0 ) помогите

Код:
#include <vcl.h>
#include <iostream.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int x,a,b;
float z;
void log(float);
void sin(float);
int main(int argc, char* argv[])
{
cout<<"Enter A:";
cin>>a;
cout<<"Enter B:";
cin>>b;
cout<<"Enter X:";
cin>>x;
 if (x<=a)
{
z=log(x)+sin(x);
return 0;
}
 if ((a<x) and (x<b))
{
z=log(x)+cos(x);
return 0;
}
 if (x>=b)
{
z=tan(x);
return 0;
}
cout>>z;
cin.get();

        return 0;
}
ошибки такие
[C++ Error] Unit1.cpp(24): E2109 Not an allowed type
[C++ Error] Unit1.cpp(27): E2377 If statement missing )


я понимаю что несовместимость типов,но чёрт..не могу сообразить что куда.Помогите ) Заранее благодарен!

Последний раз редактировалось ACE Valery; 10.02.2011 в 00:50.
annum вне форума Ответить с цитированием
Старый 08.02.2011, 18:43   #2
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Код:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    cout << "Enter A: ";
    int a;
    cin >> a;
    cout << "Enter B: ";
    int b;
    cin >> b;
    cout << "Enter X: ";
    int x;
    cin >> x;
    int z;
    if(x <= a) {
        z = log(x) + sin(x);
    } else if((a < x) && (x < b)) {
        z = log(x) + cos(x);
    } else {
        z = tan(x);
    }
    cout << z << endl;
    cin.ignore();
    cin.get();
    return 0;
}
1. Убрал return'ы (ведь тебе надо вывести z на экран, а ты завершал программу до этого).
2. Подключил мат. библиотеку.
3. Использовал нормальное написание include'а (без .h).
4. Вошёл в пространство имён std.
5. Вместо and надо использовать &&.
6. Если не выполены первые 2 условия, то третье получается автоматом.
7. Если выполнено первое условие, но второе и третье проверять не надо. Короче, надо использовать else.
8. <не-не-не>
9. Убрал лишние инклюды.
10. Убрал аргументы main.
11. Убрал лишние указания компилятору.

И не используй этот C++ builder, у него преимуществ никаких. А ещё он платный, а воровать плохо.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 08.02.2011 в 19:15.
Obey-Kun вне форума Ответить с цитированием
Старый 08.02.2011, 18:52   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

по поводу 8 пункта.
имеет он такой метод
http://cplusplus.com/reference/iostream/istream/
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.02.2011, 18:55   #4
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Верно, имеет. Но делает не то, что надо .
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 08.02.2011, 18:56   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

однако под паузу годится(по крайней мере что в gcc, что в MSVS)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.02.2011, 18:57   #6
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

И логичнее, кстати, делать не так
Код:
    if(x <= a) {
        z = log(x) + sin(x);
    } else if((a < x) && (x < b)) {
        z = log(x) + cos(x);
    } else {
        z = tan(x);
    }
а так
Код:
    if(x <= a) {
        z = log(x) + sin(x);
    } else if(x >= b) {
        z = tan(x);
    } else {
        z = log(x) + cos(x);
    }
Ибо тут как минимум писанины меньше. И шансов ошибиться тоже. И выполняется на пару тактов быстрее.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 08.02.2011 в 19:42.
Obey-Kun вне форума Ответить с цитированием
Старый 08.02.2011, 18:57   #7
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

у меня cin.get() не паузует, ЧЯДНТ?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 08.02.2011, 19:03   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

наверно чтото в потоке остается после ввода чисел(чет не учел)
тогда clear get
ну или ваш вариант.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.02.2011, 19:09   #9
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

блин, а просто getline()-то нету, нужны параметры.
лучше таки get().
вот только почему оно у меня не работает, ума не приложу. поток-то чистый должен быть.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 08.02.2011, 19:15   #10
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Код:
cin.ignore();
cin.get();
работает как надо
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется простейшая программа на ассемблер(с описанием) Bzeak Фриланс 5 10.01.2013 17:16
статья - Простейшая программа WinAPI на C++ Pblog Обсуждение статей 7 23.06.2011 12:54
Простейшая программа в MFC iceman2112 Win Api 6 17.01.2011 05:33
Простейшая программа Hemul Общие вопросы C/C++ 9 05.10.2010 01:53
Простейшая программа с импользованием Chart bookkc Помощь студентам 2 16.03.2010 10:37