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

Оформить каждый пункт задания в виде функции - C++

Восстановить пароль Регистрация
 
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
23.06.2012, 17:37     Оформить каждый пункт задания в виде функции #1
программа определяет максимум среди сумм диагоналей, параллельных главной диагонали матрицы. Нужно оформить каждый пункт задания в виде функции; все необходимые переменные передаются им в качестве параметров

C++ (Qt)
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
#include "iostream.h"
#include "conio.h"
int main()
{
    int a[10][10];
    int i, j, n=10, m=10, sum=0, max=0, b=n-1, c=1;
    int *p;//указатель
    p=new int[n*m];
    cout<<"Vvedite elementi massiva\n";
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]= ";//"a[i][j]="
            cin>>a[i][j];
        }
 while(b)
    {
        for(i = 0,j = b; i < c; i++, j++)
            sum += a[i][j];
        if (max < sum)
        {
            max = sum;
        }
       
        sum = 0;
        c++;
        --b;
    }   
    cout<<"Maximum= "<<max<<endl;
   return sum;
return 0;
 getch();
}
}
вот что получилось у меня

C++ (Qt)
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
 #include "stdafx.h"
#include "iostream.h"
#include "conio.h"
 
void vvod(int a[10][10],int n,int m)
{
    int i,j;
    cout<<"Vvedite elementi massiva\n";
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        }
    }
}
 
void vivod(int a[10][10],int n,int m)
{
    int i,j;
    cout<<"\nElementi matrici:\n";
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
         cout<<a[i][j]<<"  ";
        cout<<"\n";
            
        
    }
}
а дальше не знаю(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2012, 17:37     Оформить каждый пункт задания в виде функции
Посмотрите здесь:

C++ Оформить в виде функции
Используя текст программы оформить каждый пункт задания в виде функции C++
C++ Оформить каждый пункт задания в виде функции
C++ Оформить в виде функции
C++ Оформить в виде функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nanex
22 / 16 / 2
Регистрация: 15.10.2011
Сообщений: 305
23.06.2012, 17:50     Оформить каждый пункт задания в виде функции #2
До этого момента что-то понятное, а дальше, после while(b)...

Цитата Сообщение от Julia9311 Посмотреть сообщение
for(i = 0,j = b; i < c; i++, j++)
sum += a[i][j];
Что вы этим хотели выразить? Чему у вас c равно (c=1; ... for (i=0;i<c;i++))? Куда у вас j пойдет (b=n-1; ... for(j=b;;j++). Дальше не смотрел.
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
23.06.2012, 18:08  [ТС]     Оформить каждый пункт задания в виде функции #3
for(i = 0,j = b; i < c; i++, j++)//перемещение по диагонали, пока не закончится ее длина
sum += a[i][j];//сумма элементов диагонали
с=1, b=n-1

Добавлено через 13 минут
с-длина диагонали
j - идекс столбца на единицу меньше кол-ва строк, индекс столбца увеличивается на единицу
nanex
22 / 16 / 2
Регистрация: 15.10.2011
Сообщений: 305
23.06.2012, 18:24     Оформить каждый пункт задания в виде функции #4
Цитата Сообщение от Julia9311 Посмотреть сообщение
for(i = 0,j = b; i < c; i++, j++)//перемещение по диагонали, пока не закончится ее длина
sum += a[i][j];//сумма элементов диагонали
с=1, b=n-1

Добавлено через 13 минут
с-длина диагонали
j - идекс столбца на единицу меньше кол-ва строк, индекс столбца увеличивается на единицу
У вас c=1 и в цикле ограничение по c. Угадайте сколько раз он выполнится (если i=0 и цикл должен выполняться до тех пор пока i<1, а на первом же шаге i++)?
C++
1
for(i = 0,j = b; i < c; i++, j++)
У вас b=n-1, а n=10, а j=b и потом j++.
Теперь, если вы определяете int a[10][10], то куда выйдет индекс j в массиве a[i][j] (где j равно 9 на первом шаге) на втором шаге (если бы он был!!!), когда j станет равно 10. Вы считаете допустимым использовать a[i][10]?
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
23.06.2012, 19:08  [ТС]     Оформить каждый пункт задания в виде функции #5
я сделала, но правильно ли?

C++ (Qt)
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
#include "iostream.h"
#include "conio.h"
 
void vvod(int a[10][10],int n,int m)
{
    int i,j;
    cout<<"Vvedite elementi massiva\n";
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        }
    }
}
 
void vivod(int a[10][10],int n,int m)
{
    int i,j;
    cout<<"\nElementi matrici:\n";
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
         cout<<a[i][j]<<"  ";
        cout<<"\n";
            
        
    }
}
 
long maximum(int a[10][10],int n,int m)
{
int i=0,j=0;
long c,b,sum,max;
c=1, b=n-1,sum=0,max=0;
 
while(b)
    {
        for(i = 0,j = b; i < c; i++, j++)//перемещаемся по диагонали, пока не закончится ее длина
        //(индекс столбца на единицу меньше кол-ва строк, индекс столбца не больше длины диагонали,
        //индексы строки и столбца увеличиваются на 1)
            sum += a[i][j];//сумма элементов диагонали
        if (max < sum)//если сумма больше максимума, то
        {
            max=sum;
        }
        sum = 0;//сумма снова равна нулю
        c++;//размер диагонали увеличиваем на 1
        --b;//индекс уменьшаем на 1, пока он не будет равен нулю
    }   
   return sum;//возвращение значения
}
 
 
 
int main(int argc, char* argv[])
{
    int a[10][10];
    int i=0,j=0,n=10,m=10,c=1,b=n-1,max=0,sum=0;
    
    int *p;
    p=new int[n*m];
 
    vvod(a,n,m);
    vivod(a,n,m);
 for(i = 0,j = b; i < c; i++, j++)
if(max = sum) 
cout<<"Maximum= "<<max<<endl;
    getch();        
    return 0;
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
23.06.2012, 19:35     Оформить каждый пункт задания в виде функции #6
Цитата Сообщение от nanex Посмотреть сообщение
Угадайте сколько раз он выполнится
1 раз.

Добавлено через 4 минуты
Цитата Сообщение от Julia9311 Посмотреть сообщение
C++
1
for(i = 0,j = b; i < c; i++, j++)
C++
1
for(i = 0,j = b; i < c; i++, j--)
Добавлено через 1 минуту
Причем это обработка верхней половины матрицы.

Добавлено через 4 минуты
Цитата Сообщение от kazak Посмотреть сообщение
for(i = 0,j = b; i < c; i++, j--)
Гоню, у Вас все правильно.
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 01:31  [ТС]     Оформить каждый пункт задания в виде функции #7
не понимаю как оформить именно этот пункт. Нужно ли оформлять функции отдельно для суммы и отдельно для максимума?

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while(b)
    {
        for(i = 0,j = b; i < c; i++, j++)
            sum += a[i][j];
        if (max < sum)
        {
            max = sum;
        }
       
        sum = 0;
        c++;
        --b;
    }   
    cout<<"Maximum= "<<max<<endl;
   return sum;
return 0;
 getch();
}
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 07:55     Оформить каждый пункт задания в виде функции
Еще ссылки по теме:

Оформить каждый пункт задания в виде функции (обработка массивов) C++
Оформить в виде функции C++
Оформить обработку в виде функции C++

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

Или воспользуйтесь поиском по форуму:
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
24.06.2012, 07:55     Оформить каждый пункт задания в виде функции #8
Если их разносить по отдельным функциям, то суммы для каждой диагонали придется где-то хранить.
Yandex
Объявления
24.06.2012, 07:55     Оформить каждый пункт задания в виде функции
Ответ Создать тему
Опции темы

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