Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
footbaler
1 / 1 / 0
Регистрация: 18.12.2010
Сообщений: 50
#1

Структурированный в объектно-ориентированный - C++

19.07.2011, 19:53. Просмотров 1706. Ответов 31
Метки нет (Все метки)

Доброго времени суток!
В чем собственно моя проблема. Есть задание курсовой роботы (миниатюры), есть исходник программы написанный мною (прилагаю). Но программу надо написать двумя способами, используя структурированный подход и объектно-ориентированный. Со структурированным я вроде справился, хотя если есть тут проблемы или вопросы просьба ткнуть носом. Как мне переделать программу во второй способ, кто что подскажет?
Заранее спасибо.
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
#include <iostream> 
using namespace std;
 
int E1, E2;
float r1=30.6, r2=3.25, r3=20.57;
 
float J2()
{
 return (E1/(r1+((r2*r3)/(r2+r3))))*(r3/(r2+r3))-(E2/(r2+(r1*r3/(r1+r3))));
}
 
float J3()
{
 return (E1/(r1+((r2*r3)/(r2+r3))))*(r3/(r2+r3))+(E2/(r2+(r1*r3/(r1+r3))))*(r1/(r1+r3));
}
 
float J1()
{
 return J2()+J3();
}
 
void main()
{
 cout<<"  Tablica zavicimosti J1,J2,J3 ot E1,E2  \n";
 cout<<"|----|----|-----------------------------|\n";
 cout<<"| E1 | E2 |     J2       J3       J1    \n";
 for(E1=10, E2=15; E1<=100, E2<=60; E1+=10, E2+=5)
 {
  cout<<"|----|----|-----------------------------|\n";
  cout<<"| "<<E1<<" | "<<E2<<" | "<<J2()<<"  "<<J3()<<"  "<<J1()<<"\n";
 }
 cout<<"|----|----|-----------------------------|\n";
 system("pause");
}
0
Миниатюры
Структурированный в объектно-ориентированный  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2011, 19:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структурированный в объектно-ориентированный (C++):

объектно-ориентированный анализ,объектно-ориентированное проектирование - C++
Прошу помочь построить диаграмму прециндентов и диаграмму классов,мне необходимо только начало диаграммы или хотя-бы какой-нибудь пример с...

Объектно-ориентированный C++ и другие языки - C++
Один мой знакомый посоветовал мне, для того чтобы лучше разобраться с объектно-ориентированной и библиотечно-шаблонной кухней C++ сперва...

Объектно-ориентированный анализ и проектирование с примерами приложений - C++
Стоит ли её читать, а то пролистал в середине кодов никаких нет один текст + немного картинок как из газеты? Добавлено через 41 минуту...

Объектно-ориентированный аналог телефонного справочника: поиск по нескольким параметрам одновременно - C++
Здравствуйте! Помогите, пожалуйста, с задачей! Создать объектно-ориентированный аналог телефонного справочника. Сформировать классы...

Задача на ориентированный граф - C++
Ребята, спасайте! обычно я прихожу сюда с недоделанным кодом/кодом в котором что-то неправильно работает, но тут времени совсем не...

Определить структурированный тип, набор функций (в виде меню) для работы с массивом структур - C++
Здравствуйте. Помогите пожалуйста решить задачу по структурам. на С++. Вот текст задачи: Определить структурированный тип, набор...

31
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
19.07.2011, 20:16 #2
footbaler, судя по тексту - нет ничего проще.
Возьми и помести свои функции (кроме main()) в класс.
1
footbaler
1 / 1 / 0
Регистрация: 18.12.2010
Сообщений: 50
19.07.2011, 20:18  [ТС] #3
Спасибо, я в принципе так и думал сделать, но решил подстраховаться.
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
19.07.2011, 20:20 #4
footbaler, не забудь объявить E1 и E2 полями класса.
кстати, константы r1, r2, r3 - либо тоже полями-переменными, либо полями-константами.
В последнем случае нужен конструктор со списком инициализации.
А если переменные, то просто конструктор с параметрами.
1
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.07.2011, 21:36 #5
Цитата Сообщение от footbaler Посмотреть сообщение
ткнуть носом
Цитата Сообщение от footbaler Посмотреть сообщение
void main()
Правильно писать
C++
1
int main()
, если у вас так работает, то это не значит что это сработает у других.
Ну и между оператоми принято ставить пробелы, анеписатьслитно, курсовая все таки, может кто-то и посмотрит кроме вас
1
footbaler
1 / 1 / 0
Регистрация: 18.12.2010
Сообщений: 50
19.07.2011, 22:13  [ТС] #6
Спасибо, все учел и у себя исправил!
0
footbaler
1 / 1 / 0
Регистрация: 18.12.2010
Сообщений: 50
22.08.2011, 22:18  [ТС] #7
Здравствуйте. Появилось еще несколько вопросов. Код в шапке оказался неверным, я его переделал, верный код ниже.
Собственно вопросы:
1) В коде я использовал printf, для того что бы в таблицах данные отображались на одном расстоянии. Но использовать его в C++ не правильно, как я понимаю. Как сделать правильно с помощью cout (или др.), получив тот же результат?
2)Повторюсь, если что еще неправильно в коде, просьба ткнуть носом.
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
#include <numeric>
#include <stdio.h>
#include <iostream>
using namespace std;
 
int E1, E2;
float r1=30.6, r2=3.25, r3=20.57;
 
float J2()
{
 return (E1/(r1+((r2*r3)/(r2+r3))))*(r3/(r2+r3))-(E2/(r2+(r1*r3/(r1+r3))));
}
 
float J3()
{
 return (E1/(r1+((r2*r3)/(r2+r3))))*(r3/(r2+r3))+(E2/(r2+(r1*r3/(r1+r3))))*(r1/(r1+r3));
}
 
float J1()
{
 return J2()+J3();
}
 
int main()
{
 int v;
 for(;;)
 {
  cout << "\n" <<
  "1. Tablica zavisimosti J1 ot E1 i E2" << "\n" <<
  "2. Tablica zavisimosti J2 ot E1 i E2" << "\n" <<
  "3. Tablica zavisimosti J3 ot E1 i E2" << "\n\n" <<
  "Dlya vivoda tablici vvedite 1-3, dlya vixoda - 4-...: ";
  cin >> v;
  if(v>=4)
  return 0;
  else
  system("cls");
  cout << "|---------------------------------------------------|\n";
  cout << "|       Tablica zavisimosti J" << v << " ot E1 i E2           |\n";
  cout << "|---|-----------------------------------------------|\n";
  cout << "|---|---------------------- E2 ---------------------|\n";
  cout << "| E1|      15   |      20   |     25    |     30    |\n";
  cout << "|---|-----------|-----------|-----------|-----------|\n";
  for(E1=10; E1<=100; E1+=10)
  {
   printf ( "|%3d|", E1);
   for(E2=15; E2<=30; E2+=5)
   {
    switch (v)
    {
     case 1: printf (" %10lf|", J1()); break;
     case 2: printf (" %10lf|", J2()); break;
     case 3: printf (" %10lf|", J3()); break;
    }
   }
   cout << "\n|---|-----------|-----------|-----------|-----------|\n";
  }
 }
}
Заранее спасибо.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2011, 22:36 #8
Флаги форматирования и манипуляторы
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
23.08.2011, 00:16 #9
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
#include <cstdlib>
#include <iostream>
#include <iomanip>
 
int E1, E2;
const float r1 = 30.6, r2 = 3.25, r3 = 20.57;
 
float J2()
{
    return (E1/(r1+((r2*r3)/(r2+r3))))*(r3/(r2+r3))-(E2/(r2+(r1*r3/(r1+r3))));
}
 
float J3()
{
    return (E1/(r1+((r2*r3)/(r2+r3))))*(r3/(r2+r3))+(E2/(r2+(r1*r3/(r1+r3))))*(r1/(r1+r3));
}
 
float J1()
{
    return J2()+J3();
}
 
int main()
{
    int v;
 
    for(;;)
    {
        std::cout << "\n1. Tablica zavisimosti J1 ot E1 i E2\n"
                     "2. Tablica zavisimosti J2 ot E1 i E2\n"
                     "3. Tablica zavisimosti J3 ot E1 i E2\n"
                     "-> ";
                     //"\nDlya vivoda tablici vvedite 1-3, dlya vixoda - 4-...: ";
 
        if( !(std::cin >> v) || (v < 1) || (v > 3) ) return 0;
 
        std::system("cls");
        std::cout << "|---------------------------------------------------|\n"
                     "|       Tablica zavisimosti J" << v << " ot E1 i E2           |\n"
                     "|---|-----------------------------------------------|\n"
                     "|---|---------------------- E2 ---------------------|\n"
                     "| E1|      15   |      20   |     25    |     30    |\n"
                     "|---|-----------|-----------|-----------|-----------|\n";
 
 
 
        std::cout.setf(std::ios::fixed);
        for(E1 = 10; E1 <= 100; E1+= 10)
        {
            std::cout << '|' << std::setw(3) << E1 << '|';
 
            for(E2 = 15; E2 <= 30; E2+= 5)
            {
                std::cout.width(11);
                switch(v)
                {
                    case 1: std::cout << J1() << '|'; break;
                    case 2: std::cout << J2() << '|'; break;
                    case 3: std::cout << J3() << '|'; break;
                }
            }
 
            std::cout << "\n|---|-----------|-----------|-----------|-----------|\n";
        }
    }
}
1
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
23.08.2011, 01:16 #10
Цитата Сообщение от footbaler Посмотреть сообщение
Со структурированным я вроде справился, хотя если есть тут проблемы или вопросы просьба ткнуть носом.
Цитата Сообщение от footbaler Посмотреть сообщение
int E1, E2;
float r1=30.6, r2=3.25, r3=20.57;
глобальные переменные не есть гуд.
посему переменные нужно описывать в main и передавать функциям
а для ООП (если не просто скинуть лабу)
создать класс источников питания (источник напряжения,источник тока)
где будет напряжение эдс, внутреннее сопротивление, на будущее паразитная емкость
класс сопротивлений
где будет активное сопротивление , на будущее реактивное
все это породить от одного абстрактного класса радио_элементы
потом туда можно будет запихивать все элементы которые знаешь
1
footbaler
1 / 1 / 0
Регистрация: 18.12.2010
Сообщений: 50
23.08.2011, 02:17  [ТС] #11
ValeryS, Спасибо за подсказки. Переменные объявил в main, и функциям передал. Я бы и сразу так сделал, но мне хотелось минимализма... что поделать, я только учусь. На счет ООП... мне бы пока по заданию сделать, на будущее будем писать позже :-)

Цитата Сообщение от Maxwe11 Посмотреть сообщение
Флаги форматирования и манипуляторы
Спасибо за ссылку. Я банально не знал как в поиске найти, не знал какой запрос писать :-)

rangerx, Спасибо и вам, все проще в коде стало.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
24.08.2011, 08:17 #12
Что-то ваша программа как-то непонятно считает.
При E1 = 10 В и E2 = 15 В она дает следующие значения токов:
J1 = 0.129 А
J2 = -0.706 А
J3 = 0.835 А.
Если принять для всех токов положительное направление снизу вверх, то по закону Ома для участка цепи, содержащей ЭДС, для ветви с r1 имеем:
J1 = (U + E1) / r1,
откуда
J1*r1 = U + E1
U = J1*r1 – E1 = 0.129 * 30.6 – 10 = -6.05 В

При таком U между узлами схемы остальные токи должны быть равны:
J2 = U / r2 = -6.05 / 3.25 = -1.86 A (у вас -0.706 А)
J3 = (U + E2) / r3 = (-6.05 + 15) / 20.57 = 0.435 A (у вас 0.835 А).
0
footbaler
1 / 1 / 0
Регистрация: 18.12.2010
Сообщений: 50
24.08.2011, 19:04  [ТС] #13
Mr.X, ну в условии написаны выражения J2, J3 и J1, по ним программа и считает, причем J1 = J2 + J3. т.е. прежде чем найти J1, находит значения J2 и J3. И вот из этого
Цитата Сообщение от Mr.X Посмотреть сообщение
При E1 = 10 В и E2 = 15 В она дает следующие значения токов:
J1 = 0.129 А
J2 = -0.706 А
J3 = 0.835 А.
получаем, что J1 = J2 + J3 = -0.706 А + 0.835 А = 0.129А.
0
Сыроежка
Заблокирован
24.08.2011, 20:47 #14
Структурированный подход не есть противопоставление объектно-ориентированному. Так что сама постановка вопроса некорректная! Объектно=ориентированные программирование включает в себя структурированное программирование.
0
footbaler
1 / 1 / 0
Регистрация: 18.12.2010
Сообщений: 50
24.08.2011, 21:13  [ТС] #15
Ну возможно и так. Суть мое курсовой - написать программу 2-мя способами, используя структурированный подход, и объектно-ориентированный. Потом сделать выводы, что ООП - это круто и привести аргументы по этому поводу.
0
24.08.2011, 21:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2011, 21:13
Привет! Вот еще темы с ответами:

Ориентированный граф и матрица инцидентности - C++
Вот у меня есть такое прекрасное задание: Базовый класс: Элемент ориентированного графа. Производные классы: дуга и вершина...

Из матрицы смежности сделать ориентированный граф - C++
Какаю библиотеку использовать что би нарисовать граф?Возможно есть готов код ,буду очень благодарный за любую помощь.У меня идей ноль)

Ориентированный граф. Получить из списка рёбер матрицу смежности - C++
Задача: Простой ориентированный граф задан списком ребер, выведите его представление в виде матрицы смежности. Входной файл содержит...

Реализовать программу, вычисляющую для точек в плоскости произвольно ориентированный прямоугольник - C++
Задание: Реализовать программу, вычисляющую для заданного набора точек в плоскости произвольно ориентированный прямоугольник, содержащий...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru