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

Разбить на несколько функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Где ошибка? http://www.cyberforum.ru/cpp-beginners/thread974966.html
Подскажите пожалуйста где ошибка ? #include "stdafx.h" #include <iostream> #include <math.h> #include <iomanip> using namespace std; int _tmain() {
C++ Контроль ввода данных Здравствуйте! Меня интересует ваше мнение по организации этого вопроса. Предположим что у нас несколько полей ввода и в конце надо сохранить изменения. Чаще всего встречаются схемы: 1. при вводе... http://www.cyberforum.ru/cpp-beginners/thread974960.html
C++ Перевожу программу с Pascal, проверьте правильность перевода
Вот код на PAscal {Dan spisok iz n celih chisel a1, a2, ..., an. Naiti samuyu dlinnuyu neubivayushuyu posledovaelnost' elementov spiska} program prog1324; uses crt; type PList=^TList; ...
Другой способ удаления объекта из бинарника C++
Здравия желаю! Этот участок кода удаляет искомую структуру из файла, накладывая на неё хвост. В конце хвоста остается дублированная структура, которая удаляется уменьшением размера файла. Это не...
C++ Передача входного потока в дочерний процесс http://www.cyberforum.ru/cpp-beginners/thread974940.html
Воспользовался вот этим кодом, добавив в код процесса-клиента (дочернего) считывание строки с помощью getchar(). В результате получилось что консоль ожидает ввода, но ввести что-либо невозможно....
C++ Напишите программу, печатающую гистограмму появления различных введенных символов во входной строке 1) Напишите программу, печатающую гистограмму появления различных введенных символов во входной строке. подробнее

Показать сообщение отдельно
nalasco
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 3
11.10.2013, 23:25
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
//#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
 
 
 
 
void Sort(double* x, int n)
{
    double tmp;
    /*int i, j;
    for ( j = n - 1; j >=0 && x[j] == 0.0; --j );
    if ( j < 0 ){
        printf("\nVse elementi v massive nulevie\n");
    }
    for ( i = 0; i < j; ++i ){
        while ( x[i] == 0 && i < j ){
            tmp = x[i];
            x[i] = x[j];
            x[j--] = tmp;
        }
    }*/
 
    for(int i = 0; i < n; ++i)
    {
        for(int j = n-1; j>i; --j)
        {
            if(x[j - 1] < x[j])
            {
                tmp = x[j - 1];
                x[j - 1] = x[j];
                x[j] = tmp;
            }
        }
    }
 
    //printf("\nVse nuli v konce massiva\n");
    //for (int i = 0; i < n; ++i )
    //  printf("x[%d] = %d\n", i, x[i]); 
 
 
}
 
int input() //функция ввода данных
{
    printf ("Vvedite znachenie n (ot 1 do 999) and press <ENTER>: "); //вывод на экран приглашения на ввод данных
    char str[4],c;  //объявление символьных переменных
    int pos=0;  //инициализация переменной количества вводимых символов
    do //выполняем ввод данных
    {
        c = getch();  //считывание введённого символа без эхо-отображения
        if(c>='0'&&c<='9' && pos<3)  //если переменная соответствует диапазону 
            //и не превышает разрешённое количество вводимых символов
        {
            str[pos++]=c; //двигаем позицию курсора на шаг вправо, и присваиваем введённое значение
            printf("%c",c); //то выводим его на экран
        }
        else if(c==0x08 && pos>0) //если введён <backspace>
        {
            pos--; //двигаем позицию курсора на шаг влево
            printf("%c %c",c,c);
        }
    } while(c!=0x0D); //ввод данных выполняется, пока не введён <enter>
    str[pos]=0;
    return atoi(str);  //преобразование символьной строки в число типа int и её возврат в основную функцию
}
 
void Summa(double* x, int n)
{
    double sum;
    int i;
    i = 0;
    sum = 0.0;
    int index1 = -1;
    int index2 = -1;
    for(int i = 0; i < n; ++i)
    {
        if(x[i] > 0)
        {
            index1 = i;
            break;          
        }
    }
 
    if(index1 >=0)
    {
        for(int i = index1 + 1; i < n; ++i)
        {
            if(x[i] > 0)
            {
                index2 = i;
                break;
            }
        }
    }
    
    if(index1 < 0 && index2 < 0)
    {
        printf("\nV massive net pologitelnih elementov\n");
    }
    else if(index1 >= 0 && index2 < 0 )
    {
        printf("\nV massive tolko odin pologitelniy element\n");
    }
 
    if(index2 > 0 )     
            n = index2;
        
    for(int i = index1+1; i < n; ++i)
    {       
        sum += x[i];        
    }
    
 
    //while ( x[i] < 0 && i < n )
    //  ++i;
    //if ( i == n )
    //{
    //  printf("\nV massive net pologitelnih elementov\n");
    //}
    //i = 0; 
    //while ( x[i] < 0 && i < n )
    //  sum += x[i++];
    //if ( i == n )
    //{
    //  printf("\nV massive tolko odin pologitelniy element\n");
    //}
 
    printf("\nIndex_left = %i", index1);
    printf("\nIndex_right = %i", index2);
    printf("\nSumma elementov mejdu pervim i vtorim pologitelnimi elmentami ravna %f\n", sum);
 
}
 
void Max(double* x, int n)
{
    double max;
    int maxi = -1;
    //max=0;
    //maxi = 0;
    max = x[0];
    for ( int i = 0; i < n; ++i )
    {
        if(x[i] < 0)
            x[i] *= -1; // по модулю в условии
        if ( max < x[i] )
        {
            maxi = i;
            max = x[maxi];
        }
    }
    printf("\nMaksimalniy po module element:\nx[%d] = %f\n", maxi, max); 
 
}
 
int main()
{
    double* x;
    int n, i;
    printf("Enter N: ");
    n =input(); 
    printf("\n");
    x= new double [n];
    for(i=0; i<n; ++i)
    {
        printf("Enter digit: ");
        scanf("%lf", &x[i]);
    }
    Summa(x,n);
    Max(x,n);
 
    Sort(x, n);
    printf("Sorted array\n");
    for(i=0; i<n; ++i)
        printf("%f ", x[i]);
    printf("\n");
    free(x);
    return 0;
}
Добавлено через 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
//#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
 
 
 
 
void Sort(double* x, int n)
{
    double tmp;
    /*int i, j;
    for ( j = n - 1; j >=0 && x[j] == 0.0; --j );
    if ( j < 0 ){
        printf("\nVse elementi v massive nulevie\n");
    }
    for ( i = 0; i < j; ++i ){
        while ( x[i] == 0 && i < j ){
            tmp = x[i];
            x[i] = x[j];
            x[j--] = tmp;
        }
    }*/
 
    for(int i = 0; i < n; ++i)
    {
        for(int j = n-1; j>i; --j)
        {
            if(x[j - 1] < x[j])
            {
                tmp = x[j - 1];
                x[j - 1] = x[j];
                x[j] = tmp;
            }
        }
    }
 
    //printf("\nVse nuli v konce massiva\n");
    //for (int i = 0; i < n; ++i )
    //  printf("x[%d] = %d\n", i, x[i]); 
 
 
}
 
int input() //функция ввода данных
{
    printf ("Vvedite znachenie n (ot 1 do 999) and press <ENTER>: "); //вывод на экран приглашения на ввод данных
    char str[4],c;  //объявление символьных переменных
    int pos=0;  //инициализация переменной количества вводимых символов
    do //выполняем ввод данных
    {
        c = getch();  //считывание введённого символа без эхо-отображения
        if(c>='0'&&c<='9' && pos<3)  //если переменная соответствует диапазону 
            //и не превышает разрешённое количество вводимых символов
        {
            str[pos++]=c; //двигаем позицию курсора на шаг вправо, и присваиваем введённое значение
            printf("%c",c); //то выводим его на экран
        }
        else if(c==0x08 && pos>0) //если введён <backspace>
        {
            pos--; //двигаем позицию курсора на шаг влево
            printf("%c %c",c,c);
        }
    } while(c!=0x0D); //ввод данных выполняется, пока не введён <enter>
    str[pos]=0;
    return atoi(str);  //преобразование символьной строки в число типа int и её возврат в основную функцию
}
 
void Summa(double* x, int n)
{
    double sum;
    int i;
    i = 0;
    sum = 0.0;
    int index1 = -1;
    int index2 = -1;
    for(int i = 0; i < n; ++i)
    {
        if(x[i] > 0)
        {
            index1 = i;
            break;          
        }
    }
 
    if(index1 >=0)
    {
        for(int i = index1 + 1; i < n; ++i)
        {
            if(x[i] > 0)
            {
                index2 = i;
                break;
            }
        }
    }
    
    if(index1 < 0 && index2 < 0)
    {
        printf("\nV massive net pologitelnih elementov\n");
    }
    else if(index1 >= 0 && index2 < 0 )
    {
        printf("\nV massive tolko odin pologitelniy element\n");
    }
 
    if(index2 > 0 )     
            n = index2;
        
    for(int i = index1+1; i < n; ++i)
    {       
        sum += x[i];        
    }
    
 
    //while ( x[i] < 0 && i < n )
    //  ++i;
    //if ( i == n )
    //{
    //  printf("\nV massive net pologitelnih elementov\n");
    //}
    //i = 0; 
    //while ( x[i] < 0 && i < n )
    //  sum += x[i++];
    //if ( i == n )
    //{
    //  printf("\nV massive tolko odin pologitelniy element\n");
    //}
 
    printf("\nIndex_left = %i", index1);
    printf("\nIndex_right = %i", index2);
    printf("\nSumma elementov mejdu pervim i vtorim pologitelnimi elmentami ravna %f\n", sum);
 
}
 
void Max(double* x, int n)
{
    double max;
    int maxi = -1;
    //max=0;
    //maxi = 0;
    max = x[0];
    for ( int i = 0; i < n; ++i )
    {
        if(x[i] < 0)
            x[i] *= -1; // по модулю в условии
        if ( max < x[i] )
        {
            maxi = i;
            max = x[maxi];
        }
    }
    printf("\nMaksimalniy po module element:\nx[%d] = %f\n", maxi, max); 
 
}
 
int main()
{
    double* x;
    int n, i;
    printf("Enter N: ");
    n =input(); 
    printf("\n");
    x= new double [n];
    for(i=0; i<n; ++i)
    {
        printf("Enter digit: ");
        scanf("%lf", &x[i]);
    }
    Summa(x,n);
    Max(x,n);
 
    Sort(x, n);
    printf("Sorted array\n");
    for(i=0; i<n; ++i)
        printf("%f ", x[i]);
    printf("\n");
    free(x);
    return 0;
}
Добавлено через 1 минуту
могу предложить вот такой вариант...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru