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

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

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

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

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

Пытаюсь переписать код с циклом for, в код с циклом while, но не совсем получается - C++
Возникло пару вопросов: #include &lt;iostream&gt; using namespace std; int main () { for (int i = 0; i&lt;=10; i++) cout &lt;&lt;...

Проблемы с циклом for - C++
Проблема в x! = он выводиться всегда как константа 6....( #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;cstdlib&gt; using...

Задачка с циклом while - C++
И снова здравствуйте! Решаю простую задачку, но вот что-то накрутил с циклом while! Тесты проходят нормально на 0, 1, 2, но на всех...

Повторение циклом while - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; using namespace std; int main() { //инициализация int...

Проблемы с циклом while - C++
Подскажите пожалуйста: #include &lt;stdio.h&gt; int main() { int mas; int i=0; while(scanf(&quot;%d&quot;, &amp;mas)!=EOF) ...

Загвоздка с циклом for - C++
Вообщем смысл задачи: дан отрезок на оси &quot;х&quot; от &quot;а&quot; до &quot;b&quot; , и задан шаг на этом отрезке &quot;h&quot;. Нужно используя оператор for, вывести в...

3
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.10.2013, 11:37 #2
Используйте тег [CPP] при оформлении кода.
0
Рыжий Лис
Просто Лис
347 / 272 / 80
Регистрация: 17.05.2012
Сообщений: 1,116
Записей в блоге: 4
24.10.2013, 11:46 #3
Цитата Сообщение от qwerty11 Посмотреть сообщение
if (j>i) S+=a[i][j];
Цитата Сообщение от qwerty11 Посмотреть сообщение
if (j>0) S+=1;
сравните эти строки. Почему они вдруг должны отличатся?
0
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 не надо будет передавать в функцию.
1
24.10.2013, 11:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 11:48
Привет! Вот еще темы с ответами:

работа с циклом for - C++
Ребят, я чот запутался с реализацией этой задачи http://www.cyberforum.ru/attachment.php?attachmentid=57132&amp;stc=1&amp;d=1294243087 как я...

Работа с циклом do while - C++
Здравствуйте! есть задача в которой используется метод прогонки с проверкой условия. я использовала следующий цикл: for(i=0;i&lt;=N-1;i++) ...

Затруднения с циклом do-while - C++
Здравствуйте! Дано задание: Используя оператор цикла do-While, составить программу, которая вычисляет сумму уравнения , при этом х...

Проблемы с циклом!!! - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include&lt;iomanip&gt; using namespace std; typedef struct { float...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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