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

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

Войти
Регистрация
Восстановить пароль
 
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
#1

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

23.06.2012, 17:37. Просмотров 508. Ответов 7
Метки нет (Все метки)

программа определяет максимум среди сумм диагоналей, параллельных главной диагонали матрицы. Нужно оформить каждый пункт задания в виде функции; все необходимые переменные передаются им в качестве параметров

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";
            
        
    }
}
а дальше не знаю(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2012, 17:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оформить каждый пункт задания в виде функции (C++):

Оформить каждый пункт задания в виде функции - C++
Помогите оформить каждый пункт задания в виде функции. Все необходимые данные для функции должны передаваться им в качестве параметров....

Оформить каждый пункт задания в виде функции - C++
Помогите, пожалуйста оформить каждый пункт в виде функции, коды все готовы, рабочие. #include &lt;iostream&gt; #include &lt;windows.h &gt; ...

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

Используя текст программы оформить каждый пункт задания в виде функции - C++
Выполнить задание 6-й лабораторной работы («Двумерные массивы»), оформив каждый пункт задания в виде функции. Все необходимые данные для...

Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функции - C++
Составить программу решения поставленной задачи: Вычислить m значений функции f(x) на отрезке . Вычисление величины f(x) оформить в виде...

Оформить в виде функции - C++
Добрый вечер, нужно оформить программу в виде функции. Вроде все правильно сделал. но не могу понять на что ругается программа...#include...

7
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++). Дальше не смотрел.
0
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 - идекс столбца на единицу меньше кол-ва строк, индекс столбца увеличивается на единицу
0
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]?
0
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;
}
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
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--)
Гоню, у Вас все правильно.
0
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();
}
}
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
24.06.2012, 07:55 #8
Если их разносить по отдельным функциям, то суммы для каждой диагонали придется где-то хранить.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 07:55
Привет! Вот еще темы с ответами:

Оформить в виде функции - C++
Даны действительные числа s, t. Получить: g(1.2, s)+g(t, s)-g(2s - 1.5t), |g(ln(s, t+1))-g(t, s)|, где

Оформить в виде функции - C++
Помогите пожалуйста, вот задание: Оформить каждый пункт задания в виде функции. Все необходимые данные для функции должны передаваться им...

Оформить в виде функции - C++
Оформить в виде функции на C/C++ решение задачи: b_i = a_i \,- \,(\min_{1\leq j\leq n}a_j) \\i = 1, 2 .. n #include &lt;ctime&gt; ...

Оформить задачу в виде функции - C++
Всем привет. Не понимаю, что нужно делать. Пожалуйста помогите! Выполнить задания третьего семинара ( Одномерные массивы ) и четвертого...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
24.06.2012, 07:55
Ответ Создать тему
Опции темы

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