Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 12.06.2018, 17:52   #1
Vyacheslav.
Форумчанин
 
Регистрация: 22.10.2017
Сообщений: 109
Репутация: 10
Сообщение [РЕШЕНО] Функция в программе. Помогите пожалуйста найти и исправить ошибки

Здравствуйте! Помогите пожалуйста найти и исправить ошибки.
Создать функцию определяющую среднее значение парных элементов матрицы и минимальное среди непарных элементов матрицы, и с ее помощью обработать три двумерных массива.
Код:

#include <iostream>// подключение заголовочного файла
#include <Windows.h>// подключение заголовочного файла
using namespace std;//подключение пространства имён
float B[100][100] = { 0 }, s, min, k, n, m, z; //обьявление массивов
int i, j;
float example() {
    int i, j;
    min = B[1][1]; //присваивание первого элемента масива как минимальное
    for (i = 0; i < ::n; i++) {  //начало цикла обработки данных
        for (j = 0; j < ::m; j++) {
            if (fmod(B[i][j], 2) == 0) { s = s + B[i][j]; k = k + 1; }  //условие с расчётом для парных элементов
            else {
                if (B[i][j] < min) { min = B[i][j]; }   //условие с расчётом для непарных элементов
            }
        }
    }return 0;
}
int main()// оглавление главной функции
{
    SetConsoleCP(1251);  //установка кодовой таблици для ввода и вывода кирилици в консоли
    SetConsoleOutputCP(1251);   
    for (z = 0; z < 3; z++) {
        cout << "vvedite kol-vo strok i stolbcov" << endl;  //ввод кол-ва строк и столбцов
        cin >> m >> n;
        k = 0; //обнуление кол-ва парных элементов
        s = 0; //обнуление суммы парных элементов
        for (i = 0; i < n; i++) {  //начало цикла ввода масива
            for (j = 0; j < m; j++) {
                cout << "vvedite element masiva [" << i + 1 << "][" << j + 1 << "]" << endl;
                cin >> B[i][j];
            }
        }
        example();
        cout << "sred. arefmet. parnih elementov =" << s / k << "\n" << "minimalnoe iz neparnih =" << min << endl;
    }
    system("pause");
}

Vyacheslav. вне форума   Ответить с цитированием
Старый 13.06.2018, 16:43   #2
2Lui
Форумчанин
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 67
Репутация: 0
По умолчанию

Код:

min = B[1][1]; //присваивание первого элемента масива как минимальное
    for (i = 0; i < ::n; i++) {  //начало цикла обработки данных
        for (j = 0; j < ::m; j++) {
            if (fmod(B[i][j], 2) == 0) { s = s + B[i][j]; k = k + 1; }  //условие с расчётом для парных элементов
            else {
                if (B[i][j] < min) { min = B[i][j]; }   //условие с расчётом для непарных элементов
            }
        }

Ну массив(матрица) начинается с
[0][0]->[0][1]->[0][2]->[0][...100]
[1][0]->[1][1]->[1][2]->[1][...100]
[...100][0]->[1][1]->[1][2]->[1][...100]

не используй глобальные переменные, массивы создавай в мейне и передавай в функцию,сделай еще одну функцию для заполнения массива рандом числами, можешь и в мейне сделать если функцию не можешь написать, а то в ручную каждый раз задолбаешся вводить, зачем ты создал функцию float и возвращаешь 0? сделай тогда void

Последний раз редактировалось Вадим Мошев; 14.06.2018 в 01:32.
2Lui вне форума   Ответить с цитированием
Старый 14.06.2018, 00:01   #3
Vyacheslav.
Форумчанин
 
Регистрация: 22.10.2017
Сообщений: 109
Репутация: 10
По умолчанию

Спасибо. Уже сделал.
Vyacheslav. вне форума   Ответить с цитированием
Старый 14.06.2018, 02:01   #4
Вадим Мошев
гигаМодератор :)
Заслуженный модератор
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес:
Сообщений: 7,510
Репутация: 3678
По умолчанию

Vyacheslav., Напишите, как вы это сделали. Это будет полезно другим читателям.
Вадим Мошев вне форума   Ответить с цитированием
Старый 14.06.2018, 06:36   #5
jura_k
неформал
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 561
Репутация: 42
По умолчанию

Цитата:
Сообщение от 2Lui Посмотреть сообщение
не используй глобальные переменные, массивы создавай в мейне и передавай в функцию,
Не согласен. Глобальный массив удобнее. Придётся передавать функции ссылку на массив, если объявить его в 'main'.
__________________
Я поэт. Зовут Незнайка. От меня вам балалайка.
Я переводчик. Зовут jura_k. От меня вам программирование под MS-DOS.
jura_k вне форума   Ответить с цитированием
Старый 15.06.2018, 00:12   #6
2Lui
Форумчанин
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 67
Репутация: 0
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
Не согласен. Глобальный массив удобнее. Придётся передавать функции ссылку на массив, если объявить его в 'main'.
Может быть удобнее в таких простых программах. А так нет.
2Lui вне форума   Ответить с цитированием
Старый 15.06.2018, 15:44   #7
Julik2
Пользователь
 
Регистрация: 06.06.2018
Сообщений: 26
Репутация: 10
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
Не согласен. Глобальный массив удобнее. Придётся передавать функции ссылку на массив, если объявить его в 'main'.
Цитата:
Сообщение от 2Lui Посмотреть сообщение
Может быть удобнее в таких простых программах. А так нет.
Удобно-не-удобно, ромашка что ли
Во-первых, массив в принципе не должен передаваться в функцию.
Логично обрабатывать массив "на уровне" определения массива.
А во-вторых, технически, неразумно через аргументы функции передавать большие структуры по значению, даже если это не перегрузит стек, то явно будет снижение производительности.
__________________
(O|O)
Julik2 вне форума   Ответить с цитированием
Старый 15.06.2018, 19:45   #8
2Lui
Форумчанин
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 67
Репутация: 0
По умолчанию

А зачем по значению передавать? указатель передай, где написано что массив не должен передаваться в функцию? Что хочешь то и передаешь,
мне интересно как пишут функции сортировки массива, или что то подобное без передачи массива)

Последний раз редактировалось 2Lui; 15.06.2018 в 19:48.
2Lui вне форума   Ответить с цитированием
Старый 15.06.2018, 19:54   #9
Julik2
Пользователь
 
Регистрация: 06.06.2018
Сообщений: 26
Репутация: 10
По умолчанию Работа с массивами на C

Цитата:
Сообщение от 2Lui Посмотреть сообщение
где написано что массив не должен передаваться в функцию? Что хочешь то и передаешь.
Программист - desireless сущность, хотелками не должен руководствоваться.

А массив передавать в функцию не стоит по причине отсутствия логики. Массив в программе является уникальным объектом, и следовательно, обработчик тоже будет уникальным, и выделять его в функцию нецелесообразно.

Функции для массивов с передачей параметров на языке C рациональны только для математических программ или учебных, просто для разделения последовательности операций - ввод, обработка, печать массива.

Последний раз редактировалось Julik2; 16.06.2018 в 13:45.
Julik2 вне форума   Ответить с цитированием
Старый 15.06.2018, 20:50   #10
2Lui
Форумчанин
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 67
Репутация: 0
По умолчанию

Поясните мне почему массив является уникальным объектом? и где тут отсутствует логика при передачи указателя?
Пример тебе нужно что то с массивом сделать, что ты будешь каждый раз писать сортировку? или сделаешь функцию сортировки и просто передашь функции сортировки указатель на массив?
2Lui вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите исправить ошибки в программе bakulan123 Помощь студентам 2 25.11.2017 17:20
Помогите, пожалуйста, исправить ошибки в программе thedgehog Паскаль 1 16.12.2014 11:40
Помогите Исправить Ошибки в Программе Maxim_Burea Помощь студентам 5 26.09.2009 22:54
Помогите исправить ошибки в программе Gambit90 Помощь студентам 1 20.12.2007 17:24


02:17.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru