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

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

Войти
Регистрация
Восстановить пароль
 
vnaumenko
2 / 2 / 0
Регистрация: 19.05.2012
Сообщений: 35
#1

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

04.06.2012, 19:16. Просмотров 340. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2012, 19:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переделать пару лабораторных в функции (C++):

Написал программу на С++, надо переделать на С (пару строк!) - C++
Здравствуйте, пользователи форума! Я начал изучать программирование с языка С++, минуя С. Мне нужно исправить в исходном коде несколько...

Создайте функцию, которая пару последовательных чисел Фибоначчи преобразует в следующую пару - C++
Создайте функцию, которая пару последовательных чисел Фибоначчи преобразует в следующую пару. Например, исходные данные: 1,2; результат:3,5

Переделать функции в шаблон - C++
lib.h #pragma once int **rnd(int sizeA, int sizeB); int *Conversion(int **array, int sizeA, int sizeB); file.cpp ...

Переделать программу с использованием функции - C++
вот код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void main () { setlocale(LC_ALL, &quot;RUSSIAN&quot;); int...

Тема Функции. Переделать программы - C++
Есть задания на одномерные мессивы и двумерные. 1)Задание и код программы #include &lt;iostream&gt; #include &lt;math.h&gt; using...

Переделать код с использованием функции (процедуры) - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;complex&gt; int main() { std::cout &lt;&lt; std::fixed; std::complex&lt;double&gt;...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2012, 19:16
Привет! Вот еще темы с ответами:

меню функции нужно немного переделать - C++
следующая проблема... я сделал меню но у меня переменные не связаны между функциями где у меня ошибки? как можно исправить ...

Написать реферат за пару часов на тему "Наследование, виртуальные функции и динамический полиморфизм" - C++
Здравствуйте форумчане,нужна помощь. Помогите написать реферат за пару часов на тему &quot;Наследование, виртуальные функции и динамический...

Функции,задачка на стоянку автомобилей,чуть переделать - C++
Значит мы вводим время для 3х автомобилей, парковка посуточная, т.е больше 24 ч вводить нельзя! Так вот..если мы ввели 5,10,24.01 то он...

помогите переделать под функции две программы - C++
пожалуйста, помогите #include &lt;iostream&gt; int _tmain(int argc, _TCHAR* argv) { int matrix ; for (int i = 0; i &lt; 8; i++) ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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