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

Функция с циклом - C++

Восстановить пароль Регистрация
 
qwerty11
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 13
24.10.2013, 11:21     Функция с циклом #1
Учусь писать на с++. В универе дали задание написать програмку, которая вычисляет сумму элементов матрицы фиксированного размера, лежащих выше главной диагонали. Дополнительные требования- в функции main должно быть обращение к функции, находящей сумму элементов лежащих выше главной диагонали. Массив заполняется случайными числами.

Написал програмку без функции, она работает, всё ок:

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main()
{
int S, i, j, N, a[3][3];
N=3;
for (i=0; i<N; i++)
for (j=0; j<N; j++)
a[i][j]=rand()%10;
cout<<"matrix a \n";
for (i=0; i<N; i++)
{
for (j=0; j<N; j++)
cout<<a[i][j]<<"\t";
cout<<endl;
}
for (S=i=0; i<N; i++)
for (j=0; j<N; j++)
if (j>i) S+=a[i][j];
cout<<"S="<<S<<endl;
system("pause");
return 0;
}

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

/ 7.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int i, j,S, N, a[3][3];
int Summ ( int N)
{
for ( i=0; i<N; i++)
for (j=0; j<N; j++)
if (j>0) S+=1;
return S;
}
int main()
{
int i, j, N, a[3][3];
N=3;
for (i=0; i<N; i++)
for (j=0; j<N; j++)
a[i][j]=rand()%10;
cout<<"matrix a \n";
for (i=0; i<N; i++)
{
for (j=0; j<N; j++)
cout<<a[i][j]<<"\t";
cout<<endl;
}
cout<<"Summ="<<Summ(N)<<endl;
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2013, 11:21     Функция с циклом
Посмотрите здесь:

C++ Программа с циклом
C++ Загвоздка с циклом for
с циклом for C++
Задача с циклом for C++
Задачка с циклом while C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.10.2013, 11:37     Функция с циклом #2
Используйте тег [CPP] при оформлении кода.
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
24.10.2013, 11:46     Функция с циклом #3
Цитата Сообщение от qwerty11 Посмотреть сообщение
if (j>i) S+=a[i][j];
Цитата Сообщение от qwerty11 Посмотреть сообщение
if (j>0) S+=1;
сравните эти строки. Почему они вдруг должны отличатся?
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.10.2013, 11:48     Функция с циклом #4
Не понятно, с чего вы вдруг начали изменять уже работающий код, при переносе его в функцию? Почему j>0 а не j>i? Почему S+=1 а не S+=a[i][j]?

Кстати да, саму матрицу в функцию тоже надо передавать, как иначе то? Одного N там недостаточно.

Глобальных переменных тоже там не надо никаких, не надо бояться объявить переменные с одинаковым названием в разных зонах видимости.

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
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
 
int Summ (int N, int a[3][3])
{
    int S = 0; int i, j;
    for (i=0; i<N; i++)
        for (j=0; j<N; j++)
            if (j>i)
                S+=a[i][j];
    return S;
}
 
int main()
{
    int i, j, N, a[3][3];
    N=3;
    for (i=0; i<N; i++)
        for (j=0; j<N; j++)
            a[i][j]=rand()%10;
    cout<<"matrix a \n";
    for (i=0; i<N; i++)
    {
        for (j=0; j<N; j++)
            cout<<a[i][j]<<"\t";
        cout<<endl;
    }
    cout<<"Summ="<<Summ(N, a)<<endl;
    system("pause");
    return 0;
}
И да, наверное было бы логичнее использовать #define N 3
и объявлять массив как a[N][N]; Тогда и N не надо будет передавать в функцию.
Yandex
Объявления
24.10.2013, 11:48     Функция с циклом
Ответ Создать тему
Опции темы

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