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

Тема Функции. Переделать программы - C++

Восстановить пароль Регистрация
 
Procedure
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 9
31.05.2012, 18:15     Тема Функции. Переделать программы #1
Есть задания на одномерные мессивы и двумерные.

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
#include <iostream>
#include <math.h>
using std::cin;
using std::cout;
using std::endl;
int main(){
int n,i,j,
maxelem, minelem; // Номера максимального и минимального элементов
float summ = 0, // Сумма положительных элементов
temp;
cout << "Enter n: "; // Ввод количества элементов массива
cin >> n;
float *arr = new float [n]; // Создание массива
for (i = 0; i < n; i++){
cout << "Enter element number " << i + 1 << " : "; // Ввод элементов массива
cin >> arr[i];
}
maxelem = minelem = 0;
for (maxelem=minelem=i=summ=0;i<n;i++){
if (arr[i] > 0) summ += arr[i]; // Сумма положительных элементов
if (fabs(arr[i]) > fabs(arr[maxelem])) maxelem = i; // Определение номера максимального по модулю элемента
if (fabs(arr[i]) < fabs(arr[minelem])) minelem = i; // И минимального
}
cout << "Summ = " << summ << endl; // Вывод суммы положительных елементов
if (abs(maxelem - minelem) > 1){ // Если между максимальным и минимальным по модулю элементами
// есть элементы
int stelem = (maxelem < minelem ? maxelem : minelem); // Определяем какой из максимального и минимального элементов
int endelem = (maxelem < minelem ? minelem : maxelem); // имеет меньший номер
for (i = stelem + 1,temp = 1; i < endelem; i++)
temp *= arr[i]; // Произведение промежуточных элементов
cout << "Pro = " << temp << endl; // Вывод полученного произведения
}
else
cout << "No elements";
cout << "Source array:\n[";
for (i = 0; i < n; i++) // Вывод исходного массива
cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
// Сортировка массива методом сравнения:
for (int i = 0; i < n-1; i++) // Проход всего массива кроме последнего элемента
for (int j = i + 1; j <= n-1; j++) // Проход оставшейся части массива
if (arr[i] < arr[j]){ // Сравнение текущего элемента с элементом из оставшейся части.
temp = arr[i]; // Обмен значений элементов если они стоят в неправильном порядке
arr[i] = arr[j];
arr[j] = temp;
}
 
cout << "Array sorted:\n[";
for (i = 0; i < n; i++) // Вывод отсортированного массива
cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
delete [] arr;
cin.get(),cin.get();
return 0;
}
2)Задание и код программы
Тема Функции. Переделать программы

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
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
 
int main()
{
    int i,j,m,**arr;
    long mult = 1;
    long summ = 0;
    bool isNegative = false;
    bool isAnyPosit = false;
                            
    do
    {
        mult = 1;
        summ = 0;
       // srand(time(NULL));
        cout<<"Enter num of elements : ";
        cin>>m;
        cout<<"\tInput matrix\r\n";
        arr = new int *[m];
        for(i = 0; i < m; i++)
        {
            isNegative = false;
            arr[i] = new int [m];
           for(j = 0; j < m; j++);
            {
                cout<<(arr[i][j] = rand()%100 - 50)<<" ";
                if(arr[i][j] <= 0)
                    isNegative = true;
            }
            if(!isNegative)
            {
                for(j = 0; j < m; j++);
                    mult *= arr[i][j];
                isAnyPosit = true;
            }
            cout<<"\r\n";
        }
        
        for(i = 0; i < m; i++)
        
        for(j = i + 1; j < m - ((i == 0) ? 1 : 0); j++)
            summ += (arr[i][j] + arr[j][i]);
        if(isAnyPosit)
            cout<<"mult : "<<mult<<"\r\n";
        else
            cout<<"Matrix isn't contain Rows with all positive elements\r\n";
        cout<<"summ : "<<summ<<"\r\n";
        cout<<"Press Y for new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Задание: оформить каждый пункт задания в виде функции, помогите просто с функциями очень мало знаком а сроки жмут сильно!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 18:15     Тема Функции. Переделать программы
Посмотрите здесь:

Visual C++ тема функции. Построить последовательность чисел Фибоначчи. C++
C++ тема функции вижуал с++. Исправьте ошибки
помогите переделать под функции две программы C++
Переделать программы под функцию, void C++
C++ Нужно поправить программу (тема - функции)
C++ Тема: Циклы, функции. Написать программу по данной задаче
C++ Переделать код программы с паскаля на с++
C++ Переделать кусок программы в функцию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Procedure
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 9
31.05.2012, 18:42  [ТС]     Тема Функции. Переделать программы #2
НЕмного попутал с кодом вот для первой код:
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
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
 
int cont_null(int in_arr[100], int n) //функция, которая в качестве параметра получает линейный массив in_arr и его размерность n
                                      //возвращает 1,если не содержит ни одного нулевого элемента и 0, если такой элемент есть
{
  int i; // локальная переменная функции cont_null
  for (i = 0; i < n; i++)
    if (in_arr[i] == 0) return 0;
  return 1;
}
 
void main()
{
    int a[100][100],buff[100], i, j, k, p, s[100], l, buf, m, n;
 
    printf("\n Vedite m, n \n"); // размер массива
    scanf("%d%d", &m, &n);
 
    k = 0;
 
    printf("\n Vvedite matricu \n");
 
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            scanf("%d", &a[i][j]);
    
    for (j = 0; j < n; j++)
    {
        
        for (i = 0; i < m; i++) buff[i] = a[i][j]; // переписываем элементы столбца двумерного массива в одномерный буферный массив buff
        k = k + cont_null(buff, m); // вызываем нашу функцию для каждого столбца (переписанного в буфер), аккумулируем результаты в переменной k
  
    }
    printf("\n k=%d \n", k); //кол-во столбцов не содержащих ни одного нулевого элемента
    for (i = 0; i < m; i++)
        s[i] = 0;
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            if ((a[i][j] > 0) && (a[i][j] % 2 == 0))
                s[i] = s[i] + a[i][j]; //сумма положит четных элементов строки (харктеристика)
    for (l = 0; l < m; l++)
        for (i = 0; i < m - 1; i++)
        {
            if (s[i] > s[i + 1])
            {
                buf = s[i];
                s[i] = s[i + 1];
                s[i + 1] = buf;
                for (j = 0; j < n; j++)
                {
                    buf = a[i][j];
                    a[i][j] = a[i + 1][j];
                    a[i + 1][j] = buf; //сортировка
                }
            }
        }
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
            printf("%d ", a[i][j]);
        printf("\n");
    }
    getch();
}
Добавлено через 46 секунд
Для первой попробовал сделать функцию незнаю правильно нет
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
01.06.2012, 12:51     Тема Функции. Переделать программы #3
# 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
#include <iostream> 
#include <math.h>
 
using namespace std; 
 
double Mult(double *x, int begin, int end)
{
    if(begin > end) swap(begin, end);
 
    double res = 1;
    for(int i = begin + 1; i < end; i++)
        res *= x[i];
 
    return res;
}
 
void Sort(double *x, int n)
{
    for(int i = 0; i < n - 1; i++)         
        for(int j = 0; j < n - 1; j++)  
            if (x[j + 1] > x[j]) 
                swap(x[j+1], x[j]);
 
    for(int i = 0; i < n; i++)
        cout<<x[i]<<" ";
}
 
int main()
{   
    setlocale(0, "");
    int n;
    cout<<"n = ";
    cin>>n;
 
    double *x = new double [n];
    double s, min, max;
    int i_min, i_max;
    s = min = max = i_min = i_max = 0;
 
    cout<<"Введите элементы: ";
    for(int i = 0; i < n; i++)
    {
        cin>>x[i];
 
        if(x[i] > 0) s += x[i];
        
        if(fabs(x[i]) >= max) 
        {
            max = fabs(x[i]);
            i_max = i;
        }
 
        if(fabs(x[i]) <= min)
        {
            min = fabs(x[i]);
            i_min = i;
        }
    }
 
    cout<<"Cумма положительних элементов: "<<s<<endl;
    cout<<"Макс. по модулю: "<<x[i_max]<<endl;
    cout<<"Мин. по модулю: "<<x[i_min]<<endl;
    cout<<"Произведение: "<<Mult(x, i_min, i_max)<<endl;
    cout<<"Массив по убыванию: ";
    Sort(x, n);
    cout<<endl;
    delete [] x;
    system("pause");
    return 0;
}
Yandex
Объявления
01.06.2012, 12:51     Тема Функции. Переделать программы
Ответ Создать тему
Опции темы

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