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

Посмотрите код, подскажите что исправить - C++

Восстановить пароль Регистрация
 
Си маньяк %)
1 / 1 / 0
Регистрация: 05.03.2011
Сообщений: 11
06.03.2011, 13:11     Посмотрите код, подскажите что исправить #1
Вот 4 дня назад начал изучать C++

Учительница по информатике дала задачу:
Вводятся 3 числа. Если положительное - возвести во 2 степень. Если отрницательное - в 4 степень.

Вот что у меня получилось:

gui.h
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
#include <iostream>
using namespace std;
 
// Название метода взято из WordPress :) Метод выводит "окно" приветствия.
void getHeader()
{
    cout << "Превед, медвед!!!!!!111!!11!!!! :D" << n;
    cout << "Получайте удовольствие! ;)" << n;
}
 
// Этот метод выводит линию в строку... замашка на GUI :)
void getLine()
{
    cout << "________________________________________________________________________________" << n;
}
 
// Этот метод просто выводит пустую строку... точнее символ перевода строки... во как! %)
void getSpace()
{
    cout << n;
}
 
// Этот метод отоброжает канец программы %)
void getEnd()
{
    cout << "Это всё! :P Хорошего дня!" << n;
}
functions.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
// Объявляем функции и методы.
 
// GUI блок.
void getHeader();
void getLine();
void getSpace();
void getEnd();
 
// Остальные методы и функции.
void fuck_a(int);
void fuck_b(int);
void fuck_c(int);
integers.h
C++
1
2
3
4
5
// Объявляем переменные и константы.
const char n = '\n'; // Это символ перевода строки.
const char s = ' '; // А это... пробел :)
 
int result_a, result_b, result_c;
main.cpp
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
#include "integers.h"
#include "functions.h"
#include "gui.h"
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL,".1251");
 
    int a, b, c;
 
    getLine();
    getHeader();
    getLine();
 
    cout << "Введите 3 числа:" << n;
    getLine();
 
    // Вводим переменную "а" и обрабатываем ее... как умеем :)
    cout << "a: ";
    cin >> a;
    fuck_a(a);
    getLine();
 
    // Переменная "b".
    cout << "b: ";
    cin >> b;
    fuck_b(b);
    getLine();
    
    // Ну и конечно переменная "c"... куда же без нее %)
    cout << "c: ";
    cin >> c;
    fuck_c(c);
    getLine();
    
    cout << n;
    cout << "Результат в виде одной строки:" << n;
    getLine();
    cout << result_a << s << result_b << s << result_c << n;
    getLine();
    getEnd();
    getSpace();
 
    cout << "Пожалуйста, напишите что-нибудь ;)" << n;
    cin >> a;
 
    return 0;
}
 
void fuck_a(int a)
{
    // Проверяем условие для переменной "a". Если она больше или равна нулю, то возводится во
    // 2 степень. А если отрицательная то в 4 степень.
    
    if (a >= 0)
    {
        cout << "a положительное или нуль. Мы делаем: a ^ 2 | Результат: ";
        a = a * a;
        result_a = a;
        cout << a << n;
        
    }
    else
    {
        cout << "a отрицательноe. Мы делаем: a ^ 4 | Результат: ";
        a = a * a * a * a;
        result_a = a;
        cout << a << n;
    }
}
 
void fuck_b(int b)
{
    // Насилуем переменную "b".
 
    if (b >= 0)
    {
        cout << "b положительное или нуль. Мы делаем: b ^ 2 | Результат: ";
        b = b * b;
        result_b = b;
        cout << b << n;
    }
    else
    {
        cout << "b отрицательное. Мы делаем: b ^ 4 | Результат: ";
        b = b * b * b * b;
        result_b = b;
        cout << b << n;
    }
}
 
void fuck_c(int c)
{
    // Насилуем переменную "c".
 
    if (c >= 0)
    {
        cout << "c положительное или нуль. Мы делаем: c ^ 2 | Результат: ";
        c = c * c;
        result_c = c;
        cout << c << n;
    }
    else
    {
        cout << "c отрицательное. Мы делаем: c ^ 4 | Результат: ";
        c = c * c * c * c;
        result_c = c;
        cout << c << n;
    }
}
Подскажите, где можно что-то улучшить.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2011, 13:11     Посмотрите код, подскажите что исправить
Посмотрите здесь:

посмотрите код C++
C++ Посмотрите код
C++ Посмотрите код
C++ Народ гляньте код и подскажите что не так.
Вот код, подскажите как исправить ошибку, пожалуйста??? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
06.03.2011, 13:22     Посмотрите код, подскажите что исправить #2
Цитата Сообщение от Си маньяк %) Посмотреть сообщение
// Название метода взято из WordPress Метод выводит "окно" приветствия.
Это не метод, это простая функциия.

Добавлено через 1 минуту
И зачем тут раздельная компиляция, если задача на пару строк.
IrineK
Заблокирован
06.03.2011, 13:29     Посмотрите код, подскажите что исправить #3
Функции
C++
1
2
3
void fuck_a(int);
void fuck_b(int);
void fuck_c(int);
делают одинаковую работу.
Достаточно одной функции
C++
1
void fuck_all(int);
Описание функции берем почти ваше:
C++
1
2
3
4
5
6
7
void fuck_all(int x)
{
        if (x >= 0)
               cout <<"Ищем квадрат: "<< x*x << '\n';
        else
                cout <<"Ищем 4 степень: "<< x*x*x*x << '\n';
 }
Обращение к функции из main:
C++
1
2
3
4
5
6
7
8
9
10
11
12
.....
cout << "a: ";
cin >> a;
fuck_all(a);
......
cout << "b: ";
cin >> b;
fuck_all(b);
.....
cout << "c: ";
cin >> c;
fuck_all(c);
sandora
12 / 12 / 0
Регистрация: 10.02.2011
Сообщений: 42
06.03.2011, 13:30     Посмотрите код, подскажите что исправить #4
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{ 
double A[3];
 
for (int i = 0; i < 3; i++ )
{
   cin>>A[i];
}
 
for (int i = 0; i < 3; i++ )
{
   if ( A[i] >= 0) A[i]= pow (A[i], 2);
   else A[i] = pow ( A[i], 4);
   
   cout>>A[i];
}
 
 
return 0;
 
}
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
06.03.2011, 13:50     Посмотрите код, подскажите что исправить #5
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
const char n = '\n'; // Это символ перевода строки.
const char s = ' '; // А это... пробел :)
 
int result_a, result_b, result_c;
 
void getHeader();
void getLine();
void getSpace();
void getEnd();
 
 
// Название метода взято из WordPress :) Метод выводит "окно" приветствия.
void getHeader()
{
        cout << "Превед, медвед!!!!!!111!!11!!!! :D" << n;
        cout << "Получайте удовольствие! ;)" << n;
}
 
// Этот метод выводит линию в строку... замашка на GUI :)
void getLine()
{
        cout << "________________________________________________________________________________" << n;
}
 
// Этот метод просто выводит пустую строку... точнее символ перевода строки... во как! %)
void getSpace()
{
        cout << n;
}
 
// Этот метод отоброжает канец программы %)
void getEnd()
{
        cout << "Это всё! :P Хорошего дня!" << n;
}
 
//Вводятся 3 числа. Если положительное - возвести во 2 степень.
// Если отрницательное - в 4 степень.
 
int funk(int a)
{
        // Проверяем условие для переменной "a". Если она больше или равна нулю, то возводится во
        // 2 степень. А если отрицательная то в 4 степень.
        
        if (a >= 0)
        {
                cout << "a положительное или нуль. Мы делаем: a ^ 2 | Результат: ";
                a = a * a;
        }
        else
        {
                cout << "a отрицательноe. Мы делаем: a ^ 4 | Результат: ";
                a = a * a * a * a;
        }
        cout << a << n;
    return a;
}
 
int main ( )
{
        setlocale (LC_ALL,".1251");
 
        int a, b, c;
 
        getLine();
        getHeader();
        getLine();
 
        cout << "Введите 3 числа:" << n;
        getLine();
 
        // Вводим переменную "а" и обрабатываем ее... как умеем :)
        cout << "a: ";
        cin >> a;
        result_a=funk(a);
        getLine();
 
        // Переменная "b".
        cout << "b: ";
        cin >> b;
        result_b=funk(b);
        getLine();
        
        // Ну и конечно переменная "c"... куда же без нее %)
        cout << "c: ";
        cin >> c;
        result_c=funk(c);
        getLine();
        
        cout << n;
        cout << "Результат в виде одной строки:" << n;
        getLine();
        cout << result_a << s << result_b << s << result_c << n;
        getLine();
        getEnd();
        getSpace();
 
        cout << "Пожалуйста, напишите что-нибудь ;)" << n;
        cin >> a;
 
 
 
    system("pause");
    return 0;
}
Учительнице привет
Си маньяк %)
1 / 1 / 0
Регистрация: 05.03.2011
Сообщений: 11
06.03.2011, 13:56  [ТС]     Посмотрите код, подскажите что исправить #6
Цитата Сообщение от asics Посмотреть сообщение
Добавлено через 1 минуту
И зачем тут раздельная компиляция, если задача на пару строк.
Да фиг его знает Я если честно до сих пор не до конца понимаю зачем нужны заголовочные файлы. gui.h я копирую во все консольные проекты. functions.h тоже (из-за прототипов функций). integers.h из-за одного символа ('\n'). Может совместить functions.h и integers.h в один заголовочный файл? Например, header.h

И вопрос: если я вынесу setlocale() в header.h из main() ничего плохого не произойдет?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
06.03.2011, 14:00     Посмотрите код, подскажите что исправить #7
Си маньяк %), Я же тебе говорю, забей ты на эти .h файлы(в даный момент), перед тобой стоит задача на пару строк, и здесь использовать хедеры, та даже функции, не целесообразно.(имхо, конечно)
Си маньяк %)
1 / 1 / 0
Регистрация: 05.03.2011
Сообщений: 11
06.03.2011, 14:01  [ТС]     Посмотрите код, подскажите что исправить #8
Цитата Сообщение от dimon1984 Посмотреть сообщение
... system("pause");...
Вот за это респект! Наверное 2 дня ищу как программу приостановить в конце, чтобы не мелькала.

Училка не причем! Она только на асемблере, паскале и фортране программирует. Просто дала задачу из сборника.
Си маньяк %)
1 / 1 / 0
Регистрация: 05.03.2011
Сообщений: 11
06.03.2011, 14:03  [ТС]     Посмотрите код, подскажите что исправить #9
Цитата Сообщение от asics Посмотреть сообщение
Си маньяк %), Я же тебе говорю, забей ты на эти .h файлы(в даный момент), перед тобой стоит задача на пару строк, и здесь использовать хедеры, та даже функции, не целесообразно.(имхо, конечно)
Спасибо за совет! Учту.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
06.03.2011, 14:05     Посмотрите код, подскажите что исправить #10
Заголовочные файлы (как и следует из их названия) предназначены для объявление интерфейса модуля (прототипов функций и типов данных, которые он экспортирует). Код, определяющий реализацию (функций, типов), в них помещать не принято. Конечно, сейчас я не говорю про шаблоны С++.
IrineK
Заблокирован
06.03.2011, 14:06     Посмотрите код, подскажите что исправить #11
To dimon1984
У вас будет идти запрос на а,b,c, а подпрограмма int funk(int a) будет их все описывать как "а". Нехорошо...
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
06.03.2011, 14:08     Посмотрите код, подскажите что исправить #12
Цитата Сообщение от Си маньяк %) Посмотреть сообщение
Наверное 2 дня ищу как программу приостановить в конце, чтобы не мелькала
http://www.cyberforum.ru/cpp-beginners/thread10807.html - тут искать не пробовал ?
dimon1984
40 / 38 / 0
Регистрация: 22.01.2011
Сообщений: 670
06.03.2011, 14:08     Посмотрите код, подскажите что исправить #13
а - это копия значения в функции
IrineK
Заблокирован
06.03.2011, 14:11     Посмотрите код, подскажите что исправить #14
Я имею виду элементарный вывод на консоль.
Например, будет идти текст: "b =....."
А потом из вашей подпрограммы: "a положительное или нуль...."
То же самое - для с.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2011, 14:14     Посмотрите код, подскажите что исправить
Еще ссылки по теме:

C++ посмотрите код, в чем не правильно! (определить наименьшее неотрицательное целое k такое, что b < 2k)
C++ Мультисписок на базе бестиповых указателей (оцените код и подскажите что исправить )
Исправить код, что было только рисование линии C++

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

Или воспользуйтесь поиском по форуму:
Си маньяк %)
1 / 1 / 0
Регистрация: 05.03.2011
Сообщений: 11
06.03.2011, 14:14  [ТС]     Посмотрите код, подскажите что исправить #15
Про заголовочные файлы понял Тогда подскажите куда мне вынести все функции из gui.h? В main.cpp?

P.S. - Отказываться от них не хочу

И вот (если сейчас не задам вопрос, то точно забуду): Возможно буду программировать под линукс. А функция getLine(); не будет корректна для него (кол-во символов в строке терминала может быть разным). Как в линуксе (да и если пошла такая пьянка то и в windows) получить текущее кол-во символов в строке терминала\командной строки, чтобы "выровнить линию"?
Yandex
Объявления
06.03.2011, 14:14     Посмотрите код, подскажите что исправить
Ответ Создать тему
Опции темы

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