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

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

Войти
Регистрация
Восстановить пароль
 
Jiton
2 / 2 / 1
Регистрация: 09.12.2008
Сообщений: 14
#1

Как исправить ошибку в условии? - C++

27.12.2008, 22:14. Просмотров 685. Ответов 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
//*************************************************************************************\\
///////////////////////////////ЗАДАНИЕ №221//////////////////////////////////////////
/////Даны натуральное число n, действительные числа Х1,...Хn. Получить (1+r)/(1+s),//
//где r-сумма всех тех членов последовательности Х1,...Хn, которые не превосходят 1,/ 
//                                                а s-сумма членов, больших 1.  /////
/////////////////////////////////////////////////////////////////////////////////////
//                                     версия 1.2    2008 г.
//                             Автор: Вологжанин Евгений, группа ПС-11
/////////////////////////////////////////////////////////////////////////////////////
 
#include "stdafx.h"        //это подключается файл stdafx.h 
#include <stdio.h>         //Функции ввода - вывода для стандартных потоков
#include <conio.h>         //Функции для работы с терминалом в текстовом режиме
#include <ctype.h>         //Функции и макросы проверки и преобразования символов
#include <stdlib.h>
#include <math.h>          //Функция математических преобразований
 
void vvod(double maxInt,double minInt,double minNat,double maxNat);
void vivod(double r, double s);
void yslovie(int i, double *mas);
int int_protect();
double protect(double maxnum,double minnum);
 
int main() 
{
    const double maxInt=1.7e+308;
    const double minInt=-1.7e-308;
    const int maxNat=100;//ограничение на ввод количества элементов массива
    const int minNat=2;//ограничение на ввод количества элементов массива
    char ch;
    printf("\n---------------------ZADANIE  221----------------------------");
    printf("\n   Dany natural'noe chislo N, deystvitel'nye chisla:x1,x2,x3...xn.");
    printf("\n   Polychit (1+r)/(1+s), gde r-symma vsex tex chlenov ");
    printf("\n   posledovatelnosti X1,...Xn, kotorie ne prevosxodyat 1, a ");
    printf("\n   s-symma chlenov, bolshih 1.");
    do
    {
        printf("/n");
        vvod( maxInt,minInt,minNat,maxNat);
        printf("\n");
        printf ("Do you want to continue?(Y/N)\n");
        ch = toupper (_getch ());
    }
    while (ch != 'N');
    printf("\n");
    printf("\n");
    printf("                     <<<Rabota programmy zavershena>>>");
    printf("\n----------------------------------------------------");
    printf("\n                Rabotu vypolnil student gruppy PS-11");
    printf("\n                                  Volodjanin Evgenii");
    printf("\n");
    _getch();
}
//////////////////////////////ВВОД МАССИВА////////////////////////////
void vvod(double maxInt,double minInt,double minNat,double maxNat)
{
double *x;
 int N,i;
        do
        {
            printf ("\nVvedite razmer massiva N (ot 2 do 100): ");        
            N=int_protect();
            if(N<minNat||N>maxNat)
            {
                printf("\nVi vveli nepravil'noe chislo.");
                printf("\nNazhmite na lubuy klavishu.");
                _getch();
            }
            }        
        while (N<minNat||N>maxNat);
        x=(double*)malloc(N*sizeof(double));
printf("\nVvedite elementy massiva x[%d](%lg...%lg):",N,minInt,maxInt);//ввод элементов массива
    for (i=0;i<N;i++)
    {
            printf("\n");
            printf("x[%d] = ",i);
            x[i]= protect(maxInt,minInt);
        }
     printf("\n");
    printf("\n");
    printf("N = %d",N);
    printf("\n");
    printf("\nVivod zadannogo massiva x[%d]:",N);//вывод заданного массива x[N]
    printf("\n");
        for(int i=0;i<N;i++)
        {
            printf("x[%d] = %6.2lg",i,x[i]);
            printf("\n");
        }
    printf ("\n");
    yslovie( N,x);
}
 
/////////////////////////ВЫВОД РЕЗУЛЬТАТА///////////////////////////////
void vivod(double r, double s)
{
   double P;
   printf("\n summa r %6.2lg,summa s %6.2lg",r,s);//Эхо-контроль
        printf("\n Rezyltat P=%6.2lg\n",P=(1+r)/(1+s));//вывод длины наименьшего отрезка
        _getch();
        
}
 
 
/////////////////////////////Условие/////////////////////
void yslovie(int N, double *x)
{
    int i
    double s,r;
    for (i=0;i<N;i++)
    {
        if(x[i]>1)
        {
            s+=x[i];
        }
        else r+=x[i];
    }
    vivod(r,s);
}
 
//******************************************************************
//Функция защиты действительных чисел
//******************************************************************
double protect(double maxnum,double minnum)
{
    const int max=17;
int g=0, // флажек точки
    k=0,// флажек "е"
    m=0, // счетчик знаков до запятой 
    i=0,t; // счетчик з наков
char a[max]={0}, //числовой массив на 13  символов
           x=0; // вводимое значение строки
double q=0; // переменная , отвечающая за выводимый результат
do {
   t=i-1;
   x=_getch();
   if (x>=48 && x<=57 && i<max && m<8) //если вводены числа
      {printf ("%c",x);
       a[i]=x;
       m++;i++;}
 
 
   if (x==8 && i>0) // если нажата <BACKSPACE>
     {
         printf ("%c %c",8,8);
        m--; i--;
      if (a[i]=='.') {g=0;m=i;}
      if (a[i]=='e') {k=0;t--;}
      a[i]=0;
   }
 
   if (x==46 && i<max && g==0) // если нажата точка
    {printf ("%c",x);
    a[i]=x;
    i++; m=0;g=1;}
 
   if (x==45 && i==0) // если нажата клавиша "-"
      {printf ("%c",x);
       a[i]=x;
       ++m;++i;}
   if (x==45 && a[t]=='e')
      {
       printf ("%c",x);
       a[i]=x;
       i++;m++;
       }
 
  if (x==101 && i>0 && i<max-1 && k==0  )//если нажата "е"
  {  
    printf("%c",x);
    a[i]=x;
    m++; i++; k=1;
    
    }
}
 
  while (x!=13 || i==0); // делать пока не нажата клавиша <ENTER>
   q=atof (a);//преобразуем массив строк в числовое значение
   if(fabs(q)<minnum || fabs(q)>maxnum) 
   {  a[i]='\0';
       for (int j=i;j>0;j--)    
      { printf("\b \b");}
        return protect(maxnum,minnum);// возвращаем прверку на условие вновь, если число выходит за рамки границ
   }
   else
   return q; //возвращаем значение
}
//***************************************************************************************
//проверка корректности вводимых натуральных чисел 
//***************************************************************************************
int int_protect()
{
char a[2]={0},x=0;
int q=0, i=0;
do {
   x=_getch();
   if (x>=48 && x<=57 && i<2)
     {printf ("%c",x);
      a[i]=x;
      i++;}
   if (x==8 && i>0)
     {printf ("%c %c",8,8);
      i--;
      a[i]=0;}
   q=atoi (a);
 }while (x!=13 || q==0 || i==0);
   return q;
}
Добавлено через 9 часов 33 минуты 35 секунд
может быть кто-нибудь проверит, а то у меня мозг уже ваще не соображает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2008, 22:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как исправить ошибку в условии? (C++):

Как исправить ошибку в условии if else? - C++
Вообщем, проблема в том, что x&lt;0 программа считает, а остальное (x=0, x&gt;0) нет, в чём ошибка? #include &lt;iostream&gt; #include &lt;cmath&gt; ...

Исправить ошибку в условии - C++
Здравствуйте все! Такой вопрос возник: Есть код у меня: void inputPerechFile(knigi * &amp; sx, int &amp; n) { int i; perech t; ...

Исправить ошибку в условии if "выражение должно быть допустимым для изменения левосторонним значением" - C++
#include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); cout &lt;&lt; &quot;Введите количество посетителей&quot; &lt;&lt;...

Подскажите как исправить ошибку. прога ломается на 79 строке. а ошибку не выдает - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int chisla(int a,int b) { ...

Как исправить ошибку? - C++
#include &lt;stdio.h&gt; #include &lt;tchar.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #include &lt;string.h&gt; //Стуктура времени ...

Как исправить ошибку? - C++
D:\C++\az\main.cpp|6|error: expected unqualified-id before '{' token| ||=== Build finished: 1 errors, 0 warnings ===| Что это за...

1
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
27.12.2008, 22:57 #2
Код
int i
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2008, 22:57
Привет! Вот еще темы с ответами:

Как исправить ошибку - C++
Process exited with return value 3221225725 выскакивает после запуска программы, использую интовый массив. как снять это ограничение?

Как исправить ошибку? - C++
Программирую в КБ. Выходит одна ошибка, понятия не имею как исправить. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; ...

Как исправить ошибку - C++
доброго времени суток. вот у меня есть тут такой дефолт констрактор. MString::MString():length(8){ this-&gt;data = new char; ...

Как исправить ошибку? - C++
Ошибка 7 error LNK1120: 1 неразрешенных внешних элементов Ошибка 6 error LNK2019: ссылка на неразрешенный внешний символ _main в функции...


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

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

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