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

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

Восстановить пароль Регистрация
 
n.che
0 / 0 / 0
Регистрация: 11.03.2010
Сообщений: 6
21.03.2010, 18:43     не могу исправить ошибки в программе #1
с массивами что-то совсем напутала, и исправить не получается, целый день сижу, мозг скис уже
взываю о помощи.


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] );
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2010, 18:43     не могу исправить ошибки в программе
Посмотрите здесь:

C++ Исправить ошибки в программе
C++ Исправить ошибки в программе
Исправить ошибки в программе на С++ C++
Исправить ошибки в программе C++
C++ Исправить ошибки в программе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
21.03.2010, 18:49     не могу исправить ошибки в программе #2
а порядок ошибок какой?

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

Добавлено через 3 минуты
я ваще мало изучал, просто я кабы....ну с массивами могу.... а вот в ентом мне трудновато разобраться......есь такая прога ноутпад ++ мне много помогает ошибки искать, попробуй...очь удобно)
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. и там я вообще не догадываюсь, как можно сделать массив неизвестного заранее размера
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
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;
Так же инициализировать массив можно с помощью доступа по индексам
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
21.03.2010, 23:31     не могу исправить ошибки в программе #7
я не увидел где вы подключаете iostream. В зависимости от того какой у вас Borland может возникнуть необходимость писать
C++
1
2
std::cin>>
std::cout<<
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2010, 01:00     не могу исправить ошибки в программе
Еще ссылки по теме:

Нужно исправить ошибки в программе C++
Доделать и исправить ошибки в программе! C++
C++ Исправить ошибки в программе C++

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

Или воспользуйтесь поиском по форуму:
n.che
0 / 0 / 0
Регистрация: 11.03.2010
Сообщений: 6
22.03.2010, 01:00  [ТС]     не могу исправить ошибки в программе #8
Всем спасибо, всё получилось=)
Yandex
Объявления
22.03.2010, 01:00     не могу исправить ошибки в программе
Ответ Создать тему
Опции темы

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