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

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

Восстановить пароль Регистрация
 
vnaumenko
2 / 2 / 0
Регистрация: 19.05.2012
Сообщений: 35
04.06.2012, 19:16     Переделать пару лабораторных в функции #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
/*
    Вариант №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;
}
, оформив в виде функций законченные последовательности действий. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.

Огромное вам спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2012, 19:16     Переделать пару лабораторных в функции
Посмотрите здесь:

C++ меню функции нужно немного переделать
C++ Тема Функции. Переделать программы
C++ Написал программу на С++, надо переделать на С (пару строк!)
Переделать функции в шаблон C++
Создайте функцию, которая пару последовательных чисел Фибоначчи преобразует в следующую пару C++
Переделать программу с использованием функции C++
C++ Написать реферат за пару часов на тему "Наследование, виртуальные функции и динамический полиморфизм"
Переделать код с использованием функции (процедуры) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 01:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru