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

Лабу оформить в виде функции (сама лаба есть) - C++

Войти
Регистрация
Восстановить пароль
 
romkaspb
1 / 1 / 0
Регистрация: 13.10.2010
Сообщений: 52
30.05.2011, 03:04     Лабу оформить в виде функции (сама лаба есть) #1
Товарищи! Прошу помощи, уже 2 недели мучаюсь с одной лабораторной, сил нет больше) Не могу никак написать несколько функций) Точнее просто есть готовая лаба, а её надо оформить в виде функций. Не могу написать так как не могу разобраться что писать в параметры, return ну и вообще) Прошу помощи, последняя лаба для зачета))
Вот код:
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
#include <iostream>
using namespace std;
int main()
{       int matrix [8][8]={12,14,17,24,11,15,28,17,14,11,12,13,14,15,16,17,17,13,21,22,24,42,22,35,24,66,55,29,91,43,68,11,11,12,13,14,15,16,17,18,15,19,20,21,22,23,24,25,28,26,27,28,29,-5,31,32,17,17,16,15,14,13,12,11};
        int i,j;
        for (i=0;i<8; i++)
        {for (j=0; j<8; j++)
        cout << matrix[i][j]<<" ";
        cout << endl;
        }
        for (i = 0; i < 8; i++)
        {
                bool isk (true);
                for (j = 0; j < 8; j++)
                {
                        if (matrix[i][j] != matrix [j][i])
                        {
                                isk = false;
                                break;
                        }
                }
 
                if (isk)
                        cout << "k: " << i << "\n";
 
        }
        for (i = 0; i < 8; i++)
        {
                bool isbelowzero (false);
                for (j = 0; j < 8; j++)
                        if (matrix [i][j] < 0) isbelowzero = true;
 
                if (isbelowzero)
                {
                        int summ(0);
                        for (j = 0; j < 8; j++)
                                summ = summ + matrix[i][j];
                        cout << "Summ = "<< summ<<endl;
                }
        }
 
        return 0;
}
Делает он вот что:
Для заданной матрицы 8 на 8 найти такие k, чтобы k-ая строка матрицы совпадала с k-ым столбцом.
Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
Нужны три функции:вывод матрицы, поиск k-ой строки, сумма

Спасибо большое заранее!
P.S. Если кому не трудно, проясните новичку по поводу параметров функции, return ну и вообще что где писать) Спасибо))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2011, 03:04     Лабу оформить в виде функции (сама лаба есть)
Посмотрите здесь:

Вычисление формулы! Оформить в виде функции!! C++
C++ Оформить в виде функции
C++ Оформить каждый пункт задания в виде функции
C++ Оформить в виде функции на C++ решение задачи
C++ Оформить в виде функции на С/С++ решение задачи
C++ Оформить в виде функции
C++ Оформить в виде функции
оформить в виде функции одномерный массив C++
C++ Оформить функции в виде методов класса
Оформить в виде функции C++
Оформить обработку в виде функции C++
Оформить решение в виде функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Runa
 Аватар для Runa
131 / 83 / 3
Регистрация: 28.08.2009
Сообщений: 363
30.05.2011, 06:34     Лабу оформить в виде функции (сама лаба есть) #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
68
69
70
71
72
73
#include <iostream>
using namespace std;
 
void Print(int matrix[8][8]) // вывод на экран
{
    for (int i=0;i<8; i++)
    {
        for (int j=0; j<8; j++)
            cout << matrix[i][j]<<" ";
        cout << endl;
    }
}
 
void Find(int matrix[8][8]) // поиск k-ой строки
{
        for (int i = 0; i < 8; i++)
        {
                bool isk (true);
                for (int j = 0; j < 8; j++)
                {
                        if (matrix[i][j] != matrix [j][i])
                        {
                                isk = false;
                                break;
                        }
                }
 
                if (isk)
                        cout << "k: " << i << "\n";
 
        }
}
 
int FindBellowZero(int matrix[8])
{
 
    if (IsBelowZero(matrix[8]))
    {
            cout << "Summ = "<< Sum(matrix[8])<<endl;
    }
    return summ;
}
 
bool IsBelowZero(int matrix[8]) // Функция проверяет наличие отрицательных элементов
{
    bool isbelowzero (false);
    for (int j = 0; j < 8; j++)
            if (matrix[j] < 0) isbelowzero = true;
    return isbelowzero;
}
 
int Sum(int matrix[8]) //Функция считает сумму в строке
{
    int summ(0);
    for (int j = 0; j < 8; j++)
        summ = summ + matrix[j];
    return sum;
}
 
int main()
{       int matrix [8][8]={12,14,17,24,11,15,28,17,14,11,12,13,14,15,16,17,17,13,21,22,24,42,22,35,24,66,55,29,91,43,68,11,11,12,13,14,15,16,17,18,15,19,20,21,22,23,24,25,28,26,27,28,29,-5,31,32,17,17,16,15,14,13,12,11};
                
        Print(matrix);
 
        Find(matrix);
 
        for (int i = 0; i < 8; i++)
        {
                FindBellowZero(matrix[i]); // передается строка матрицы
        }
 
        return 0;
}
Добавлено через 16 минут
Цитата Сообщение от romkaspb Посмотреть сообщение
Если кому не трудно, проясните новичку по поводу параметров функции, return ну и вообще что где писать)
вообще так:
1) выносишь кусок кода, который представляет собой логически завершенной блок, (например поиск строки, содержащей отрицательный элемент или вывод массива на экран) запихиваешь его в функцию (которая кроме названия еще ничего не содержит),
2) начинаешь смотреть каких данных не хватает функции для работы - выносишь их в параметры
3) если функция что-то вычисляет, значит она должна результат своих вычислений вернуть и он потом где-то используется, если нет то void

если что не понятно - спрашивай
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
30.05.2011, 06:40     Лабу оформить в виде функции (сама лаба есть) #3
Также есть вопрос по теме...
Есть функция, возвращающая некоторое значение, но вызывается как войдовая...
Что при этом происходит?
Например, такая
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
Token_value get_token()
{
    char ch = 0;
    do {
        if (!std::cin.get(ch)) return curr_tok = END;
    } while (ch!='\n'&&isspace(ch));
 
    switch (ch) {
        case 0:
             return curr_tok = END;
        case ';':case '\n':
             return curr_tok = PRINT;
        case '*':case'/':case '+':case '-':case '(':case ')':case '=':
             return curr_tok=Token_value(ch);
        case '0':case '1':case '2':case '3':case '4' :
        case '5':case '6':case '7':case '8':case '9':case '.':
             std::cin.putback(ch);
             std::cin>>number_value;
             return curr_tok=NUMBER;
        default:
             if (isalpha(ch)) {
                 string_value = ch;
                 while (std::cin.get(ch)&&isalnum(ch)) string_value.push_back(ch);
                 std::cin.putback(ch);
                 return curr_tok = NAME;
             }
             error ("bad token");
             return curr_tok = PRINT;
    }
}
int main(){
   get_token();
   return 0;
}
Runa
 Аватар для Runa
131 / 83 / 3
Регистрация: 28.08.2009
Сообщений: 363
30.05.2011, 06:44     Лабу оформить в виде функции (сама лаба есть) #4
функция исправно возвращает значение, только оно никуда не присваивается
например некоторые функции возвращают false в случае, если во время выполнения что-то пошло не так, тогда ты можешь обработать результат и вызвать функцию еще раз (как пример), а можешь не обращать на это внимание
romkaspb
1 / 1 / 0
Регистрация: 13.10.2010
Сообщений: 52
30.05.2011, 22:33  [ТС]     Лабу оформить в виде функции (сама лаба есть) #5
Спасибо за объяснение!)
Вчера ночью писал эту лабу, сделал! Вот если надо:
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
#include <iostream.h>
#include <math.h>
#include <iomanip>
#include <fstream.h>
 
int vivod(int matrix[8][8]){
    int i,j;
for (i=0;i<8; i++)
    {for (j=0;j<8; j++)
        cout<<matrix[i][j]<<" ";
        cout<<endl;}
return 1;
}
int first(int matrix[8][8]){
 for (int i = 0; i < 8; i++)
     {
     bool isk (true);
   for (int j = 0; j < 8; j++)
   {
   if (matrix[i][j] != matrix [j][i])
    {
   isk = false;
                break;
              }
        }
           if (isk)
            cout << "k: " << i << "\n";
    }
     return i;
}
int sec(int matrix[8][8]){
    int i,j;
     for (i = 0; i < 8; i++)
        {
                bool isbelowzero (false);
                for (j = 0; j < 8; j++)
                        if (matrix [i][j] < 0) isbelowzero = true;
 
                if (isbelowzero)
                {
                        int summ(0);
                        for (j = 0; j < 8; j++)
                                summ = summ + matrix[i][j];
                        cout << "Summ = "<< summ<<endl;
                }
        }
 
        return 0;
}
int main(){
    int matrix[8][8]={11,14,17,24,11,15,28,17,
                      14,11,12,13,14,15,16,17,
                      17,13,21,22,24,42,22,16,
                      24,66,-9,29,91,43,68,15,
                      11,12,13,14,15,16,17,14,
                      15,19,20,21,22,23,24,13,
                      28,26,27,28,29,-5,31,12,
                      17,17,16,15,14,13,12,11};
    vivod(matrix);
    first(matrix);
    sec(matrix);
    return 0;
}
Yandex
Объявления
30.05.2011, 22:33     Лабу оформить в виде функции (сама лаба есть)
Ответ Создать тему
Опции темы

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