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

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

Войти
Регистрация
Восстановить пароль
 
n.che
0 / 0 / 0
Регистрация: 11.03.2010
Сообщений: 6
#1

не могу исправить ошибки в программе - C++

21.03.2010, 18:43. Просмотров 375. Ответов 7
Метки нет (Все метки)

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


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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <stdio.h>
#include <conio.h>
 
int main()
{
clrscr();
 
int N_stage, N_entrance, N_abon_per_stage;
float H_stage, H_between_stages, R_entrance;
float alpha_high = 0.18;
float alpha_low = 0.045;
float U_input = 104;
float U_DA, U_high, U_low;
float U_max = 78;
float U_min = 68;
float reserve = 5;
float DA_place = (float) N_entrance/2 + 0.5;
float dist_DA_entrance;
float atenuation_low, attenuation_high;
int stage_num, entr_num, entrance_num, AO_num;
float temp_U_abon_high;
float temp_U_abon_low;
 
 
int L;
 
cout << "Enter the number of stages:";
cin >> N_stage;
cout << "\nEnter the number of entrances:";
cin >> N_entrance;
cout << "\nEnter the number of abonents per stage:";
cin >> N_abon_per_stage;
cout << "\nEnter the stage height:";
cin >> H_stage;
cout << "\nEnter the distance between stages:";
cin >> H_between_stages;
cout << "\nEnter the distanse between entrances:";
cin >> R_entrance;
 
float res_AO_beta_mas[N_stage][N_entrance];
float res_U_low_mas[N_stage][N_entrance];
float res_U_high_mas[N_stage][N_entrance];
 
 
 
switch (N_abon_per_stage)
       {
    case 1:
        float beta[] = { 26, 24, 20, 16, 14, 12, 10, 8.5, 6.5 };
        float beta_inner[] = { 0.7, 0.7, 0.7, 0.9, 0.9, 0.9, 1.4, 2, 2.8 };
        L = 9;
        break;
    case 2:
        float beta[] = { 26, 24, 20, 16, 14, 12, 10, 8 };
        float beta_inner[] = { 0.4, 0.4, 0.9, 1.3, 2, 2, 3.3, 3.8 };
        L = 8;
        break;
    case 3:
        float beta[] = { 26, 24, 20, 16, 14, 12, 10 };
        float beta_inner[] = { 1, 1, 1, 1.3, 1.4, 3.4, 4 };
        L = 7;
        break;
    default: cout << "\aInvalid number of abonents!" << endl;
       }
 
switch (N_entrance)
       {
    case 2:
        U_DA = U_input - 4;
    case 3:
        U_DA = U_input - 6;
    case 4:
        U_DA = U_input - 8;
    case 6:
        U_DA = U_input - 10;
    case 8:
        U_DA = U_input - 12;
    default: cout << "\aInvalid number of entrances!" << endl;
       }
 
int N;
 
if ( N_entrance%2 == 0 ) N = N_entrance/2;
    else N = N_entrance/2 + 1;
 
for ( entrance_num = 1; entrance_num <= N; ++entrance_num )
 
       {
    dist_DA_entrance = ( DA_place - entrance_num ) * R_entrance + reserve;
    attenuation_low = dist_DA_entrance * alpha_low;
    attenuation_high = dist_DA_entrance * alpha_high;
    U_low = U_DA - attenuation_low;
    U_high = U_DA - attenuation_high;
 
    for ( stage_num = N_stage; stage_num >= 1; --stage_num )
 
        {
         int flag_AO_is_chosen = 0;
         for ( AO_num = 1; AO_num <= L; ++AO_num )
            {
             temp_U_abon_low = U_low - beta[AO_num];
             temp_U_abon_high = U_high - beta[AO_num];
 
             if (( temp_U_abon_low > U_min ) && ( temp_U_abon_low < U_max ) && ( temp_U_abon_high > U_min ) && ( temp_U_abon_high < U_max ))
                {
                 res_AO_beta_mas[N_stage - stage_num + 1][entrance_num] = beta[AO_num];
                 res_U_low_mas[N_stage - stage_num +1][entrance_num] = temp_U_abon_low;
                 res_U_high_mas[N_stage - stage_num +1][entrance_num] = temp_U_abon_high;
                 flag_AO_is_chosen = 1;
                 break;
                }
            }
         if (flag_AO_is_chosen == 0 )
            cout << "\aNot enough sighal amplification" << endl;
 
         U_low = U_low - beta_inner[AO_num] - ( H_between_stages + H_stage ) * alpha_low;
         U_high = U_high - beta_inner[AO_num] - ( H_between_stages + H_stage ) * alpha_high;
        }
       }
for ( int i = N_entrance; i>= N_entrance/2; --i)
    {
     res_AO_beta_mas[][i] = res_AO_beta_mas[][N_entrance - i + 1];
     res_U_low_mas[][i] = res_U_low_mas[][N_entrance - i + 1];
     res_U_high_mas[][i] = res_U_high_mas[][N_entrance - i + 1];
    }
 
for ( entr_num = 1; entr_num <= N_entrance; ++entr_num )
    {
     printf ( "\n~~~~~Entrance #%d~~~~~", entr_num )
     for ( stage_num = 1; stage_num <= N_stage; ++stage_num )
         printf ( "%d\t %3.1f - %3.1f\t %d", ( N_stage - stage_num + 1 ), res_U_high_mas[stage_num][entr_num], res_U_low_mas[stage_num][entr_num], res_AO_beta_mas[stage_num][entr_num] );
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2010, 18:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не могу исправить ошибки в программе (C++):

Исправить ошибки в программе - C++
#include &lt;iostream&gt; using namespace std; char a; int k, i; int main() { setlocale(0, &quot;&quot;); cout &lt;&lt; &quot;Введите...

Исправить ошибки в программе - C++
Вот задача такая нужно прочитать из файла число прибавить к нему один и записать полученную суму обратно в этот же файл.Вот как я это...

Исправить ошибки в программе - C++
#include &lt;vector&gt; #include &lt;limits&gt; using namespace std; int n, minrow, INF; vector &lt; vector&lt;int&gt; &gt; a; vector&lt;int&gt; xy,...

Исправить ошибки в программе - C++
Здравствуйте,знаю что намудрил,буду очень благодарен, удалось убрать большинство ошибок,но некоторые остались, заранее спасибо! Текст...

Исправить ошибки в программе - C++
3. Даны действительные числа a, b, c, d, s, t, u (s и t одновременно не равны нулю). Известно, что точки (a, b) и (c, d) не лежат на...

Исправить ошибки в программе C++ - C++
База данных есть некоторые ошибки не могу исправить... #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 894
21.03.2010, 18:49 #2
а порядок ошибок какой?

Добавлено через 50 секунд
ты пасатри че куда не катит и увидишь ошибки.
0
n.che
0 / 0 / 0
Регистрация: 11.03.2010
Сообщений: 6
21.03.2010, 18:53  [ТС] #3
я не знаю как исправить. С++ изучала только полгода на 2м курсе, ничего уже не помню, и вот понадобился.
0
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 894
21.03.2010, 18:58 #4
ну....в некоторых строках точно отсутствуют точки с запятой.....эммм...

Добавлено через 3 минуты
я ваще мало изучал, просто я кабы....ну с массивами могу.... а вот в ентом мне трудновато разобраться......есь такая прога ноутпад ++ мне много помогает ошибки искать, попробуй...очь удобно)
0
n.che
0 / 0 / 0
Регистрация: 11.03.2010
Сообщений: 6
21.03.2010, 19:03  [ТС] #5
там самые первые ошибки начинает выдавать здесь:

float res_AO_beta_mas[N_stage][N_entrance];
float res_U_low_mas[N_stage][N_entrance];
float res_U_high_mas[N_stage][N_entrance];

как инициализировать двумерный массив с размерами, которые надо ввести?

а дальше в первом switch. и там я вообще не догадываюсь, как можно сделать массив неизвестного заранее размера
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
21.03.2010, 20:04 #6
Цитата Сообщение от cibertronic Посмотреть сообщение
ноутпад ++ мне много помогает ошибки искать
Ошибки очень хорошо помогает искать отладчик
Цитата Сообщение от n.che Посмотреть сообщение
там самые первые ошибки начинает выдавать здесь:
По стандарту C размеры массивов задаются только константами, т.е. нужно использовать динамическое выделение памяти
Цитата Сообщение от n.che Посмотреть сообщение
как инициализировать двумерный массив с размерами, которые надо ввести?
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
size_t n, m;
std::cin >> n >> m;
//Выделение памяти
int **array=new int*[n];
for(size_t i=0; i<n; ++i)
{
   array[i]=new int[m];
   for(size_t j=0; j<m; ++j)
      array[i][j]=...//Инициализация в цикле
}
 
//...
 
//Высвобождение памяти
for(size_t i=0; i<n; ++i)
   delete[] array[i];
delete[] array;
Так же инициализировать массив можно с помощью доступа по индексам
1
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
21.03.2010, 23:31 #7
я не увидел где вы подключаете iostream. В зависимости от того какой у вас Borland может возникнуть необходимость писать
C++
1
2
std::cin>>
std::cout<<
1
n.che
0 / 0 / 0
Регистрация: 11.03.2010
Сообщений: 6
22.03.2010, 01:00  [ТС] #8
Всем спасибо, всё получилось=)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2010, 01:00
Привет! Вот еще темы с ответами:

Исправить ошибки в программе - C++
#include&lt;stdio.h&gt; void NewMatr(int **matr, int size) { for(int i=0;i&lt;size;i++) for(int j=0;j&lt;size;j++) {...

Исправить ошибки в программе - C++
Написать программу которая выводит ваше имя на экран в основном модуле и в модуле функции... #include&lt;stdio.h&gt; fun(); voind main()...

Исправить ошибки в программе на С++ - C++
#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;vector&gt; using namespace std; class Comp { public: boolean...

Доделать и исправить ошибки в программе! - C++
Кодирование Хаффмана Нужно доделать и исправить ошибки в программе! По 11 варианту! См. приложения! Нужно перенести большую часть...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.03.2010, 01:00
Ответ Создать тему
Опции темы

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