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

Простенькая процедура - C++

Восстановить пароль Регистрация
 
kokoz9br
0 / 0 / 0
Регистрация: 01.05.2012
Сообщений: 42
16.10.2012, 20:03     Простенькая процедура #1
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
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// Вторая лаба.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using  namespace std;
/* Процедура ввода матриц */
    void vvod2m(int x[10][10],int Nx,int Mx)
    {
        cout<<"\n Nx=";cin>>Nx;
        cout<<"\n Mx=";cin>>Mx;
        for(int i=0;i<Nx;i++)
            for(int j=0;j<Mx;j++)
            {
                x[i][j]=rand()%100-50;
            }
    }
/* Процедура вывода матриц */
    void vivod2m(const int x[10][15],int Nx,int Mx)
    {
        for(int i=0;i<Nx;i++)
        {
            for(int j=0;j<Mx;j++)
            {
                cout<<"\t"<<x[i][j];
                cout<<"\n";
            }
        }
    }
/* Функция поиска суммы диагоналей */
    int SumDiag( int x[10][10],int Nx,int Mx)
    {
        int s=0;
        for(int i=0;i<Nx;i++)
        {
            for(int j=0;j<Mx;j++)
            {
                if (i==j)
                    s=s+x[i][j];
            }
        }
        int i=Nx;
        for(int j=0;j<Mx;j++)
        {
            int S=s+x[i][j];
            i--;
        }
 
/* Функция поиска максимума */
        int Maximum(int x[10][10],int Nx1,int Mx1)
        {
            int max=-9999;
            for(int i1=0;i<Nx1;i++)
            {
                for(int j1=0;j1<Mx1;j1++)
                {
                    if (a[i1][j1]> max)
                    Maximum=a[i1][j1];
                }
            }
            return Maximum;
        }
        void Zamena(int x[10][10],int Nx,int Mx, int Chislo)
        {
            for(int i-o;i<Nx;i++)
            for(int j=0;j<Mx;j++)
            {
                if (x[i][j]=0;)
                    x[i][j]==chislo;
            }
        }
        int _tmain(int argc, _TCHAR* argv[])
{
    vvod2m(x1,n1,m1);
    vvod2m(x2,n2,m2);
    vvod2m(x3,n3,m3);
    /////////////////
    vivod2m(x1,n1,m1);
    vivod2m(x2,n2,m2);
    vivod2m(x3,n3,m3);
    //////////////////
    int s1,s2,s3,summa;
    s1=sumdiag(x1,n1,m1);
    s2=sumdiag(x2,n2,m2);
    s3=sumdiag(x3,n3,m3);
    /////////////////////
    summa=s1*s2*s3;
    int m;
    m=maximum(x1,n1,m1)+maximum(x2,n2,m2)+maximum(x3,n3,m3);
    zamena(x1,n1,m1,S);
    zamena(x2,n2,m2,S);
    zamena(x3,n3,m3,S);
    ///////////////////
    vivod2m(x1,n1,m1);
    vivod2m(x2,n2,m2);
    vivod2m(x3,n3,m3);
    return 0;
}
При компиляции выдает ошибки:
Maxmimum:недопустимые локальные определения функций.
Zamena:недопустимые локальные определения функций.
wmain:недопустимые локальные определения функций.

fatal error C1075:конец файла обнаружен ранее,чем левая фигурная скобка '{' в <тут адрес,где хранится у меня .cpp>

Помогите пожалуйста,в чем проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 20:03     Простенькая процедура
Посмотрите здесь:

C++ Простенькая задачка
C++ Простенькая задача
C++ Простенькая игра на С++
Вроде простенькая C++
Простенькая БД на С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
16.10.2012, 21:40     Простенькая процедура #2
У тебя очень много ошибок, пересмотри код внимательно.
Цитата Сообщение от kokoz9br Посмотреть сообщение
fatal error C1075:конец файла обнаружен ранее,чем левая фигурная скобка '
где нехватает скобки
kokoz9br
0 / 0 / 0
Регистрация: 01.05.2012
Сообщений: 42
16.10.2012, 22:03  [ТС]     Простенькая процедура #3
Цитата Сообщение от David Sylva Посмотреть сообщение
У тебя очень много ошибок, пересмотри код внимательно.

где нехватает скобки
Ставлю закрывающую скобку в процедуре поиска суммы диагоналей.Он выдает 83 ошибки><

А что с локальными переменными процедур?
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
16.10.2012, 22:05     Простенькая процедура #4
Я запустил твою программу и он мне столько ошибок выдал, что я даже смотреть не стал. Исправляй и будь внимательней.
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
16.10.2012, 22:51     Простенькая процедура #5
Цитата Сообщение от kokoz9br Посмотреть сообщение
Ставлю закрывающую скобку в процедуре поиска суммы диагоналей
все правильно этим ты закрыл эти ошибки

Цитата Сообщение от kokoz9br Посмотреть сообщение
Maxmimum:недопустимые локальные определения функций.
Zamena:недопустимые локальные определения функций.
wmain:недопустимые локальные определения функций.
fatal error C1075:конец файла обнаружен ранее,чем левая фигурная скобка '{' в <тут адрес,где хранится у меня .cpp>
дли того чтобы проверить парность скобок достаточно курсор подвести к скобке и нажать "ctrl"+"]" итебя перебросит к парной скобке(если она есть) проверяет все виды скобок

Цитата Сообщение от kokoz9br Посмотреть сообщение
Он выдает 83 ошибки
какие ???
нажимай F4 и тебя перебросит к строке где ошибка


могу показать тебе несколько ошибок
в функции
Цитата Сообщение от kokoz9br Посмотреть сообщение
SumDiag
нет возвращаемого значения
должно быть что то типа
C++
1
return S;
в функции

Цитата Сообщение от kokoz9br Посмотреть сообщение
int Maximum(int x[10][10],int Nx1,int Mx1)
нет объевлениия переменной которую ты возвращаешь
Цитата Сообщение от kokoz9br Посмотреть сообщение
return Maximum;
это не паскаль если ты обзовешь переменную как функцию это не значит что она объявлена при объявлении функции
нужно явно
C++
1
nt Maximum;
и лучше им дать разные имена чтобы компилятор не запутался

Добавлено через 7 минут
Цитата Сообщение от kokoz9br Посмотреть сообщение
vvod2m(x1,n1,m1);
где у тебя объявлен массив x1 (а так же x2 x3)???
kokoz9br
0 / 0 / 0
Регистрация: 01.05.2012
Сообщений: 42
17.10.2012, 20:29  [ТС]     Простенькая процедура #6
Не совсем понимаю С++.

В общем,вот мое задание:

Ввести квадратные двумерные массивы. Вывести эти матрицы. Найти S = S1⋅ S2 ⋅ S3, где S1,S2,S3 – произведение
диагональных элементов (главной и побочной) и m = m1+ m2 + m3, где m1,m2,m3 – максимумы вышеупомянутых матриц. Значением S заменить нулевые элементы в каждой из матриц. (При решении реализовать процедуры ввода и вывода массивов: Vvod2m(A,N,Name), Vivod2m(A,N,Name); а также функции SumDiag(A,N):<тип массива> – сумма диагональных элементов и Maximum(A,N):<тип массива> – поиск максимума в матрице; а также процедуру замены нулевых элементов
значением Chislo: ZamenaZero(A,N,M,Chislo))



Процедура ввода нескольких массивов я оформил вот так.
C++
1
2
3
4
5
6
7
8
9
10
11
* Процедура ввода матриц */
    void vvod2m(int x[10][10],int Nx,int Mx)
    {
        cout<<"\n Nx=";cin>>Nx;
        cout<<"\n Mx=";cin>>Mx;
        for(int i=0;i<Nx;i++)
            for(int j=0;j<Mx;j++)
            {
                x[i][j]=rand()%100-50;
            }
    }
На паскале я бы это сделал так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
type
matrix=array[1..10,1..10]of real;
var
X1,X2:matrix;
n1,n2:integer;
 
procedure vvod2m(var A:matrix;n:integer;name:string);
var
i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
begin
write('',name, ' [',i,',',j,']=');
readln(A[i,j]);
end;
end;
Как в с++ и куда написать вот эту строку
type
Pascal
1
matrix=array[1..10,1..10]of real;

Если поможете, с процедурой ввода,то думаю с процедурой вывода я сам справлюсь.


Еще вопрос с процедурами и функциями. В паскале функция возвращает значение,а процедура может возвращать массиы,число и т.п.
Какова структура функции в с++?
У меня есть функция поиска максимума.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* Функция поиска максимума */
        int Maximum(int x[10][10],int Nx1,int Mx1)
        {
            int max=-9999;
            for(int i1=0;i<Nx1;i1++)
            {
                for(int j1=0;j1<Mx1;j1++)
                {
                    if (a[i1][j1]> max)
                    max=a[i1][j1];
                }
            }
            return max;
        }
В чем у меня ошибка?
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
17.10.2012, 20:55     Простенькая процедура #7
Цитата Сообщение от kokoz9br Посмотреть сообщение
В чем у меня ошибка?
вот она
Цитата Сообщение от kokoz9br Посмотреть сообщение
for(int i1=0;i<Nx1;i1++)
нужно
C++
1
for(int i1=0;i1<Nx1;i1++)
иначе у тебя изменяется i1 а сравнивается i это совершенно две разных переменных кстати вторая даже не объявлена

Добавлено через 2 минуты
Цитата Сообщение от kokoz9br Посмотреть сообщение
matrix=array[1..10,1..10]of real;
насколько я помню паскаль real это вещественное число
и судя по твоему фрагменту в паскале ты массивы объявляешь глобально
так или нет?
kokoz9br
0 / 0 / 0
Регистрация: 01.05.2012
Сообщений: 42
17.10.2012, 21:05  [ТС]     Простенькая процедура #8
Цитата Сообщение от ValeryS Посмотреть сообщение
вот она

нужно
C++
1
for(int i1=0;i1<Nx1;i1++)
иначе у тебя изменяется i1 а сравнивается i это совершенно две разных переменных кстати вторая даже не объявлена
Спасибо.А ошибки в return'e или заголовке процедуры нет?

Цитата Сообщение от ValeryS Посмотреть сообщение
насколько я помню паскаль real это вещественное число
и судя по твоему фрагменту в паскале ты массивы объявляешь глобально
так или нет?
Да.
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
17.10.2012, 21:26     Простенькая процедура #9
тогда все гораздо проще
объявляешь глобально два массива
C++
1
2
float X1[10][10];
float X2[10][10];
насчет функций распишу когда проверю не хотелось бы вводить тебя в заблуждение
kokoz9br
0 / 0 / 0
Регистрация: 01.05.2012
Сообщений: 42
18.10.2012, 17:12  [ТС]     Простенькая процедура #10
Всем спасибо. Разобрался. Я себе понапридумывал намного сложнее код,чем он должен быть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 20:35     Простенькая процедура
Еще ссылки по теме:

Простенькая задача C++
простенькая задача C++
Простенькая структура C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
18.10.2012, 20:35     Простенькая процедура #11
Цитата Сообщение от kokoz9br Посмотреть сообщение
Всем спасибо. Разобрался. Я себе понапридумывал намного сложнее код,чем он должен быть.
Ну и слава богу
" Ты заходи, если что"(с) волк "Жил-был пес"
Yandex
Объявления
18.10.2012, 20:35     Простенькая процедура
Ответ Создать тему
Опции темы

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