Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 01.05.2012
Сообщений: 57
1

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

16.10.2012, 20:03. Показов 1209. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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>

Помогите пожалуйста,в чем проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2012, 20:03
Ответы с готовыми решениями:

Простенькая БД на С++
Здраствуйте,нужно было написать простую БД В меню 4 пункта,допустим выбираем пункт 2 &quot; 2. Udalenie...

Простенькая Задачка
Вводятся числа a и b. Найти количество таких чисел в диапазоне , которые не принадлежат отрезку .

Простенькая структура
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;locale&gt; #include &lt;cstring&gt;; #include...

Простенькая игра на С++
Нужен совет! Какую простую игру можно написать на С++ что бы были использованы основные принципы...

10
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
16.10.2012, 21:40 2
У тебя очень много ошибок, пересмотри код внимательно.
Цитата Сообщение от kokoz9br Посмотреть сообщение
fatal error C1075:конец файла обнаружен ранее,чем левая фигурная скобка '
где нехватает скобки
0
0 / 0 / 1
Регистрация: 01.05.2012
Сообщений: 57
16.10.2012, 22:03  [ТС] 3
Цитата Сообщение от David Sylva Посмотреть сообщение
У тебя очень много ошибок, пересмотри код внимательно.

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

А что с локальными переменными процедур?
0
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
16.10.2012, 22:05 4
Я запустил твою программу и он мне столько ошибок выдал, что я даже смотреть не стал. Исправляй и будь внимательней.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
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)???
1
0 / 0 / 1
Регистрация: 01.05.2012
Сообщений: 57
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;
        }
В чем у меня ошибка?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
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 это вещественное число
и судя по твоему фрагменту в паскале ты массивы объявляешь глобально
так или нет?
1
0 / 0 / 1
Регистрация: 01.05.2012
Сообщений: 57
17.10.2012, 21:05  [ТС] 8
Цитата Сообщение от ValeryS Посмотреть сообщение
вот она

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

Цитата Сообщение от ValeryS Посмотреть сообщение
насколько я помню паскаль real это вещественное число
и судя по твоему фрагменту в паскале ты массивы объявляешь глобально
так или нет?
Да.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
17.10.2012, 21:26 9
тогда все гораздо проще
объявляешь глобально два массива
C++
1
2
float X1[10][10];
float X2[10][10];
насчет функций распишу когда проверю не хотелось бы вводить тебя в заблуждение
1
0 / 0 / 1
Регистрация: 01.05.2012
Сообщений: 57
18.10.2012, 17:12  [ТС] 10
Всем спасибо. Разобрался. Я себе понапридумывал намного сложнее код,чем он должен быть.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
18.10.2012, 20:35 11
Цитата Сообщение от kokoz9br Посмотреть сообщение
Всем спасибо. Разобрался. Я себе понапридумывал намного сложнее код,чем он должен быть.
Ну и слава богу
" Ты заходи, если что"(с) волк "Жил-был пес"
2
18.10.2012, 20:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2012, 20:35
Помогаю со студенческими работами здесь

Простенькая задача
Нужно написать программу которая выдает запрос на ввод часов и запрос на ввод минут. Функция main...

Простенькая задача
Помогите пожалуйста с простенькой задачой. Известно S сумма деталей.Так же изввестно что 3...

простенькая задачка
Здраствуйте, люди добрые!) Подскажите решение, ато сыну задали в школе и он чето туго соображает)...

Простенькая задачка
Помогите решить задачку. Ввести целые числа, и вывести те из них, которые делятся на число «М» ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru