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

Получить среднее арифметическое и среднее геомерическое элементов последовательности - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ блок-схема алгоритма и програмный код функции http://www.cyberforum.ru/cpp-beginners/thread21645.html
Прошу помочь с данным заданием. Напишите блок-схему алгоритма и програмный код функции с коментариями. Для функции передаваемые параметры: указатель на массив и количество элементов массива. Возвращаемые значения: число положительных и число отрицательных элементов массива, максимальный элемент массива.
C++ Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента Дан целочисленный массив А. Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента. http://www.cyberforum.ru/cpp-beginners/thread21605.html
C++ Редактирование строки
Нужно редактировать текстовый файл таким образом: у нас есть определенное кол-во символов,которое может быть в строке(можно определить define'ом,пусть будет N) и нужно сделать так,чтобы в строке в файле(уже в получившемся) было не более N символов,причем если слово обрывается,то его нужно поместить в следующую строку без пробела(может быть в файле много пробелов). Кодировка может включать...
Программа, должна выполнять дочерный процесс и передавать ему параметр через его переменные окружения C++
Программа, должна выполнять дочерный процесс и передавать ему параметр через его переменные окружения. В качестве параметра использовать название файла, который открывается. Проверить следующие ситуации: в команде SET указано неверное название переменной окружения; в команде SET указано неверное название файла, или указан файл отсутствует. Хто разбирается помогите пожалуйста!
C++ Ширина столбцов матрицы http://www.cyberforum.ru/cpp-beginners/thread21588.html
#include<stdio.h> #include<conio.h> #define A 3 #define B 2 int main() { int mass,i,j,a,b,s=0; clrscr(); printf("input mass\n"); for(i=0;i<A;i++)
C++ Помогите! нужна простая программа Всем привет, нуждаюсь в вашей помощи, мне нужна простая программа написанная на С++, не важно что она будет делать, главное чтобы в ней был цикл, желательно операторы if, for, switch. А также нужна еще блок-схема для этой программы. Заранее благодарен. подробнее

Показать сообщение отдельно
Immes
0 / 0 / 0
Регистрация: 23.01.2009
Сообщений: 13
11.02.2009, 00:02  [ТС]     Получить среднее арифметическое и среднее геомерическое элементов последовательности
Помогите пожалуйста.Не могу сделать переменную a не глобальной и ещё не работает защита-он пишет,что число введено неверно,но всё равно его запоминает.
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
209
210
211
212
213
214
215
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>  
#include <ctype.h>  
#include <stdlib.h>  
#include <math.h>  
  
void vvod(float *maxNat);  
void uslovie(float maxNat, float *retmass);  
float zashita(int min,int max,int idx);  
 
float *a;
  
int main()  
{  
    // количнство введных элементов
    float maxNat=0;           
    int i;
    float k,z;
    char ch;
 
 
        printf("\n---------------------ZADANIE----------------------\n");
        printf("\nDany deystvitel'nye chisla a1, a2, ... . Poluchit' ");
        printf("\nsrednee arifmeticheskoe i srednee geometricheskoe ");
        printf("\nposledovetel'nosti chisel predshestvujushih pervomu ");
        printf("\notricatel'nomu chislu an.Izvestno,chto a1>0 i");
        printf("\nsredi a2, a3... est' otricatel'noe chislo");
        printf("\n");
        printf("------------------------------------------------------");
 
    do
    {            
            // выделим память для хранения 1-ого элемента
          //float *a = (float*)malloc(sizeof(float));    
          a = (float*)realloc(NULL, sizeof(float));              
          vvod(maxNat);
 
          if (maxNat != 0)
          {
            float b[2];
            uslovie(maxNat, b);
 
            printf("\nSrednee ariphmeticheskoe = %f",b[0]);
            printf("\nSrednee geometicheskoe = %f",b[1]);          
          };
          
 
      printf("\n Dlja prodolzhenija raboty programmy nazhmite 'Y'\n\n\n");                //запрос на продолжение работы программы
      ch=(toupper(_getch()));
    }
    while(ch=='Y');
 
    printf("\n");
    printf("\n------------------------------------------------------");
    printf("                          Rabota programmy zavershena\n");
    _getch();
}
//------------------------------------------------------------------------------
void vvod(float *maxNat)  
{
    const float maxInt=3.4e38;
    int i=0;    
    float el;
    
    do                                                            
    {        
        printf("\nVvedite chislo (-%g ... %g).",maxInt,maxInt);
        printf("\n a%d = ",i);
        el=zashita(-maxInt,maxInt,i);
 
        if(el<-maxInt||el>maxInt)
        {
            printf("\nVi vveli nepravil'noe chislo.");
            printf("\nNazhmite na lubuy klavishu.");
            _getch();
        }
 
        // добавляем в массив:        
        // realloc перераспределение памяти
        // в main выделили память и создали указатель
        // здесь мы перевыделяем память в зависимости от кол-ва элементов в массиве
        // 1. передаётся ссылка на старое место памяти
        // 2. выделяется нужное количество памяти  i * sizeof(float) байт
        // 3. из старого места "а" копируется в новое
        // 4. старое место удаляется        
        a = (float*)realloc(a, (i+1) * sizeof(float));
        a[i] = el;                        
        i++;
    } while(el>0);
    
    // количество введеных элементов
    *maxNat = (float)i;
 
 
    printf("\n");
    printf("\nN = %d",*maxNat);
    printf("\nVvedennye chisla:");                        //вывод заданного массива a[N]
    printf("\n");
 
    for(i=0;i<*maxNat;i++)
    {
        printf("a%d = %g",i,a[i]);
        printf("\n");
    }
}
 
//------------------------------------------------------------------------------
 
void uslovie(float maxNat, float *retmass)
{
    float A = 0, G = 1;
 
    for (int i = 0; i < maxNat; i++)
    {
        if(a[i]<0) break;
        A += a[i];
        G = G*a[i];
    }
 
    retmass[0] = A/maxNat;
    retmass[1] = pow(G,(1/maxNat));
}
 
//------------------------------------------------------------------------------
float zashita(int min,int max,int idx)
{
    const int N=7;
    char ch;
    char str[100], str1[100];
 
    int i=0, cntPtr=0, cntE=0, cntNeg=0;
 
    do
    {
        ch=(char)getch();
 
        if((ch=='-')&&(cntNeg==0) && min!=1 && idx!=0)     // '-'  
        {  
            str[i++]=ch;  
            putch(ch);  
            cntNeg++;  
        }  
  
        if((ch=='e'||ch=='E')&&(cntE==0)&& min!=1)      // 'e'  
        {  
            str[i++]=ch;  
            putch(ch);  
            cntE++;  
        }  
  
        if((ch=='.')&&(i>0)&&(!cntPtr)&& min!=1)    // '.'  
        {  
            str[i++]=ch;  
            putch(ch);  
            cntPtr++;  
        }  
  
        if((ch>='0')&&(ch<='9'))             //  
        {  
            str[i++]=ch;  
            putch(ch);  
        }  
  
        if((ch=='\b')&&(i>0))                   // работа BackSpace  
        {  
            i--;  
            printf("\b \b");  
        }  
  
        if((i==(N+1))&&(i>0)&&(min==1)||(i==(N+2))&&(i>0)&&(min!=1))  
        {  
            i--;  
            printf("\b \b");  
        }  
    }  
    while(ch!='\r');  
  
  
        str[i]='\0';                //преобразование числа с е в float  
        bool f=0;  
        for(int k=0;k<i;k++)  
            if(str[k]=='e')  
            {  
                f=1;  
                break;  
            }  
        if(f)  
        {  
            float bas=1,  
                  degree=0;  
            int k=0;  
            while(str[k]!='e')  
            {  
                str1[k]=str[k];  
                k++;  
            }  
            str1[k]='\0';  
            bas=atof(str1);  
            if(!bas)bas=1;  
     k++;  
            int k1=0;  
            while(str[k]!='\0')  
            {  
                str1[k1]=str[k];  
                k++;  
                k1++;  
            }  
            str1[k1]='\0';  
            degree=atof(str1);  
            return(bas*pow(10,degree));  
        }  
  
        return atof(str);  
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru