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

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

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

выдает ошибку в условии, функция double - C++

27.12.2008, 22:14. Просмотров 647. Ответов 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 секунд
может быть кто-нибудь проверит, а то у меня мозг уже ваще не соображает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2008, 22:14     выдает ошибку в условии, функция double
Посмотрите здесь:
Выдает ошибку в функции в условии if. Не вызывает firstName, secondName и patron C++
Выдает ошибку в void main () и const double y=6.61*pow(10, -11); C++
C++ Функция public выдает ошибку
C++ Функция CreateFile(), выдает ошибку: ERROR_NOT_SUPPORTED.
Почему компиллятор выдает ошибку и не хочет что бы функция принимала 2 переменных C++
C++ Найти ошибку в условии
Исправить ошибку в условии C++
Как исправить ошибку в условии if else? C++
C++ Функция getline в условии while
C++ Функция округления double
исправьте ошибку!округлить double до 2-х знаков после запятой C++
Функция для преобразования double в строку символов. C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.12.2008, 22:57     выдает ошибку в условии, функция double #2
Код
int i
Yandex
Объявления
27.12.2008, 22:57     выдает ошибку в условии, функция double
Ответ Создать тему
Опции темы

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