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

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

Войти
Регистрация
Восстановить пароль
 
qwerty11
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 13
#1

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

24.10.2013, 11:21. Просмотров 347. Ответов 3
Метки нет (Все метки)

Учусь писать на с++. В универе дали задание написать програмку, которая вычисляет сумму элементов матрицы фиксированного размера, лежащих выше главной диагонали. Дополнительные требования- в функции 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     Функция с циклом
Посмотрите здесь:

Последовательность.. с циклом do .. while C++
C++ Программа с циклом
C++ Загвоздка с циклом for
C++ работа с циклом for
Проблемы с циклом!!! C++
C++ Проблемы с циклом for
Задачка с циклом while C++
C++ Повторение циклом while
Проблемы с циклом while C++
Работа с циклом do while C++
Задача с циклом C++
C++ Затруднения с циклом do-while

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.10.2013, 11:37     Функция с циклом #2
Используйте тег [CPP] при оформлении кода.
Рыжий Лис
Просто Лис
217 / 172 / 46
Регистрация: 17.05.2012
Сообщений: 631
Записей в блоге: 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     Функция с циклом
Ответ Создать тему
Опции темы

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