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

Переделать пару лабораторных в функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать функцию SumRow, вычисляющую сумму элементов матрицы, расположенных в K-й строке http://www.cyberforum.ru/cpp-beginners/thread596236.html
Описать функцию SumRow(A, M, N, K) вещественного типа, вычис-ляющую сумму элементов вещественной матрицы A размера M × N, распо-ложенных в K-й строке (если K > M, то функция возвращает 0). Для данной...
C++ Написать программу решающая СЛАУ методом Якоби Очень прошу помочь,да я дуб дубом в С++. Пытался сам,честно 2 день сижу-не идет((( За вознаграждение!!!)))так что и вам хорошо и мне хуже будет уже))) http://www.cyberforum.ru/cpp-beginners/thread596227.html
Количество строк в текстовом файле C++
Описать функцию LineCount(S) целого типа, возвращающую количе-ство строк в текстовом файле с именем S. Если файл не существует, то функция возвращает –1. С помощью этой функции найти количество строк...
Описать функцию C++
Описать функцию, удаляющую из итоговой ведомости группы дисциплины, по которым не менее чем у 20% студентов имеются двойки. Используя эту функцию, вывести новую ведомость группы по заданной...
C++ Как создать n массивов? http://www.cyberforum.ru/cpp-beginners/thread596220.html
как создать определенное количество однотипных двумерных массивов, их количество зависит от переменной. Величина переменной определяется на старте программы пользователем.
C++ Сортировка стека методом вставки Дан стек реализованный статически. Неоходимо написать функцию вставки в него элемента с сохранением порядка элементов. То есть после вставки стек должен быть отсортирован. Сортировка стека должна... подробнее

Показать сообщение отдельно
vnaumenko
2 / 2 / 0
Регистрация: 19.05.2012
Сообщений: 35

Переделать пару лабораторных в функции - C++

04.06.2012, 19:16. Просмотров 310. Ответов 0
Метки (Все метки)

У меня есть три, рабочих, программы, их надо переделать в функции, понятия не имею как. Препод абсолютно ничего не хочет рассказывать. Прошу вашей помощи.

Функции и массивы
Выполнить задания
третьего семинара («Одномерные массивы»)
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
/*
    Вариант №16 | Науменко Вячеслав АСб11и1.
    В одномерном массиве, состоящем из N вещественных элементов, вычислить:
    1) количество отрицательных элементов массива;
    2) сумму модулей элементов массива, расположенных после минимального по
    модулю элемента.
    Заменить все отрицательные элементы массива их квадратами и упорядочить
    элементы массива по возрастанию.
    Дата: 24.03.12
    Компилятор: CodeGear RAD Studio 2007
*/
#include <iostream.h>
#include <math.h>
#include <windows.h>
using namespace std;
int main(){
    char s[256];
    CharToOem("Массивы. Вариант 16. Науменко Вячеслав. АСб11и1.", s);
    SetConsoleTitle(s);
    const int N=10; // Длина массива
    float Mas[N], MasVKvadrat[N], Negative=0, MinMas, NomerMinMas, x;
    int i, j, SummaPosleMin = 0;
    CharToOem("Вводим массив: ", s);
    cout << s;
    for (i = 0; i < N; i++) {
        cin >> Mas[i];
    }
    CharToOem("Массив: ", s);
    cout << s;
    for (i = 0; i < N; i++) cout << Mas[i] << " ";
    cout << endl;
    for (i = 0; i < N; i++) {
        if (Mas[i] < 0) Negative++;
    }
    CharToOem("Количество отрицательных чисел: ", s);
    cout << s << Negative << endl;
    MinMas = Mas[0];
    NomerMinMas = 0;
    for (i = 0; i < N; i++) {
        if (abs(MinMas) > abs(Mas[i])) ((MinMas = Mas[i]) && (NomerMinMas = i+1));
    }
    CharToOem("Минимальный по модулю: ", s);
    cout << s << MinMas << endl;
    CharToOem("Позиция первого минимального по модулю: ", s);
    cout << s << NomerMinMas+1 << endl;
    for (i = NomerMinMas; i < N; i++) SummaPosleMin = SummaPosleMin + abs(Mas[i]);
    CharToOem("Сумма модулей элементов после минимального по модулю: ", s);
    cout << s << SummaPosleMin << endl;
    for (i = 0; i < N; i++) {
        if (Mas[i] < 0) MasVKvadrat[i] = Mas[i]*Mas[i];
        else (MasVKvadrat[i] = Mas[i]);
    }
    CharToOem("Массив, где отрицательные в квадрате: ", s);
    cout << s;
    for (i = 0; i < N; i++) cout << MasVKvadrat[i] << " ";
    cout << endl;
    for (i = 0; i < N-1; i++){
        int tmp = 0;
        for (j = i+1; j < N; j++)
            if (MasVKvadrat[i] > MasVKvadrat[j]) {
                tmp = MasVKvadrat[i];
                MasVKvadrat[i] = MasVKvadrat[j];
                MasVKvadrat[j] = tmp;
                }
    }
    CharToOem("Массив упорядочен по возрастанию: ", s);
    cout << s;
    for (j = 0; j < N; j++) cout << MasVKvadrat[j] << " ";
    cout << endl;
    cout << (char)cin.get();
    cin.get();
    return 0;
}
и
четвертого семинара («Двумерные массивы»)
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
/*
    Вариант №16 | Науменко Вячеслав АСб11и1.
 
    В одномерном массиве, состоящем из N вещественных элементов, вычислить:
    1) количество отрицательных элементов массива;
    2) сумму модулей элементов массива, расположенных после минимального по
    модулю элемента.
    Заменить все отрицательные элементы массива их квадратами и упорядочить
    элементы массива по возрастанию.
 
    Компилятор: CodeGear RAD Studio 2007
*/
//----------------------------------------------------------------------------//
#include <iostream.h>
#include <math.h>
#include <algorithm>
#include <windows.h>
#include <iomanip.h>
//----------------------------------------------------------------------------//
using namespace std;
int main(){
    char q[256];
    char w[256];
    CharToOem("Двумерные массивы. Вариант 16. Науменко Вячеслав. АСб11и1.", q);
    SetConsoleTitle(q);
    int nstr, ncol;
 
    CharToOem("     Создаем двумерный массив     ", q);
        cout << q;     cout << endl;
    CharToOem("Введите количество строчек: ", q);
        cout << q;     cin >> nstr;
    CharToOem("Введите количество колонок: ", q);
        cout << q;     cin >> ncol;
 
    int s, c, cc, povt_temp, povt, min;
    int **a = new int *[nstr];
    int *povtor = new int [nstr];
    for (s=0; s<nstr; s++) a[s] = new int [ncol];
    for (s=0; s<nstr; s++) povtor[s] = 0;
 
    CharToOem("Введите элементы массивы", q);
        cout << endl << q << endl;
    for (s=0; s<nstr; s++)
        for (c=0; c<ncol; c++) cin >> a[s][c];
    for (s=0; s<nstr; s++) {
        for (c=0; c<ncol; c++) cout << setw(4) << a[s][c] << " ";
            cout << endl;
        }
    CharToOem("Первый положительный столбец: ", q);
    for (c=0; c<ncol; c++) {
        for (s=0; s<nstr; s++) {
            if ( a[s][c]<0 ) break;
        }
        if (s == nstr) {
            cout << q << c+1;
            break;
        }
    }
    cout << endl;
    CharToOem("Повторений в строке ", q);
    for (s=0; s<nstr; s++) {
        for (c=0; c<ncol; c++) {
            for (cc=c+1; cc<ncol; cc++) {
                if(a[s][c] == a[s][cc]) {
                    povtor[s]++;
                }
            }
        }
    if (povtor[s] == 10) {
        povtor[s] = povtor[s]-5;
        cout << q << s+1 << ": " << povtor[s] << endl;
    }
    if (povtor[s] == 6) {
        povtor[s] = povtor[s]-2;
        cout << q << s+1 << ": " << povtor[s] << endl;
    }
    if (povtor[s] == 3) {
        povtor[s] = povtor[s];
        cout << q << s+1 << ": " << povtor[s] << endl;
    }
    if (povtor[s] == 1) {
        povtor[s] = povtor[s]+1;
        cout << q << s+1 << ": " << povtor[s] << endl;
    }
    if (povtor[s] == 0) {
        povtor[s] = povtor[s]+1;
        cout << q << s+1 << ": " << povtor[s] << endl;
    }
    }
 
    int buf_a, buf_povtor, nmin;
    for (s=0; s<nstr-1; s++) {
        nmin = s;
        for (c=s+1; c<nstr; c++) {
            if (povtor[c] < povtor[nmin]) nmin = c;
        }
        buf_povtor = povtor[s];
        povtor[s] = povtor[nmin];
        povtor[nmin]=buf_povtor;
        for (c=0; c<ncol; c++) {
            buf_a = a[s][c];
            a[s][c] = a[nmin][c];
            a[nmin][c] = buf_a;
        }
    }
    for (s=0; s<nstr; s++) {
        for (c=0; c<ncol; c++) cout << setw(4) << a[s][c] << " ";
            cout << endl;
    }
 
    cout << endl;
 
    cout << (char)cin.get();
    cin.get();
    return 0;
}
, оформив каждый пункт задания в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.

Функции, строки и файлы
Выполнить задания
пятого семинара («Строки и файлы»)
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
/*
    Строки и файлы. Вариант 16. Науменко Вячеслав. АСб11и1.
 
    Написать программу, которая считывает текст из файла и выводит на экран
    сначала вопросительные, а затем восклицательные предложения.
 
    Компилятор: CodeGear RAD Studio 2007
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
 
unsigned char *vopr[50];
unsigned char *voskl[50];
unsigned char buffer[1500];
char filename[80];
int kl=0;
int pr=0;
FILE *fp;
FILE *save;
 
int main(void)
{
  int c;
  int kolvo=0;
  int n=0;
  char q[256];
  char w[256];
  CharToOem("Строки и файлы. Вариант 16. Науменко Вячеслав. АСб11и1.", q);
    SetConsoleTitle(q);
  CharToOem("ВВЕДИТЕ ПУТЬ К ФАЙЛУ: ", w);
  printf(w);
  gets(filename);
 
  if((fp=fopen(filename, "r"))==NULL)
    {
       CharToOem("ОШИБКА ЧТЕНИЯ ФАЙЛА [%s]...\n", w);
       fprintf(stderr, w, filename);
       CharToOem("Нажмите клавишу Enter...", w);
       printf(w);
       getch();
       fclose(fp);
       exit(1);
    }
 
  rewind(fp);
 
 
  while(!feof(fp))
  {
    fgets(&buffer[kolvo], 2 ,fp);
 
    if(buffer[kolvo]=='.')
    {
       for(n=0; n<1500; n++)
       {
         buffer[n]=='\0';
       }
       kolvo=-2;
    }
 
    if(buffer[kolvo]=='!')
    {
       voskl[kl]=(unsigned char *)malloc(strlen(buffer)+1);
       strcpy(voskl[kl++], buffer);
       for(n=0; n<1500; n++)
       {
         buffer[n]=='\0';
       }
       kolvo=-2;
    }
 
    if(buffer[kolvo]=='?')
    {
       vopr[pr]=(unsigned char *)malloc(strlen(buffer)+1);
       strcpy(vopr[pr++], buffer);
       for(n=0; n<1500; n++)
       {
         buffer[n]=='\0';
       }
       kolvo=-2;
    }
 
    kolvo++;
  }
 
  if((save=fopen("save.txt", "w"))==NULL)
    {
       CharToOem("Ошибка чтения файла...\n", w);
       fprintf(stderr, w);
       CharToOem("Нажмите клавишу Enter...", w);
       printf(w);
       fclose(save);
       fclose(fp);
       getch();
       exit(1);
    }
 
  kolvo=0;
  CharToOem("\nВОПРОСИТЕЛЬНЫЕ: \n", w);
  printf(w);
  CharToOem("ВОПРОСИТЕЛЬНЫЕ: \n", w);
  fprintf(save, w);
 
  for(kolvo=0; kolvo<pr; kolvo++)
  {
  fprintf(stdout, "%s\n", vopr[kolvo]);
  fprintf(save, "%s\n", vopr[kolvo]);
  }
 
  CharToOem("\n\nВОСКЛИЦАТЕЛЬНЫЕ: \n", w);
  printf(w);
  CharToOem("ВОСКЛИЦАТЕЛЬНЫЕ: \n", w);
  fprintf(save, w);
 
  for(kolvo=0; kolvo<kl; kolvo++)
  {
  fprintf(stdout, "%s\n", voskl[kolvo]);
  fprintf(save, "%s\n", voskl[kolvo]);
  }
 
 
  fclose(save);
  fclose(fp);
 
  CharToOem("\n\nКОНЕЦ", w);
  puts(w);
  getch();
  return 0;
}
, оформив в виде функций законченные последовательности действий. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.

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