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

Функция для двумерного массива

25.10.2012, 00:33. Показов 3217. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно написать функцию или скажите, пожалуйста, правильно ли она составлена в коде

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
в каждой строке существуют элементы на нечетных местах нечетные
*/
bool uslov (int n, int a[N][N])
{
    int k=0;
    for(int i=0; i<n; i++)  //перебор по строкам
    {
        for(int j=0; j<n; j+=2)  // цикл для просмотра элементов в строке
            if(a[i][j]%2==1)return true;
        break;
        k++;
    }   
    if(k==n)
        return true;
    else
        return false;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2012, 00:33
Ответы с готовыми решениями:

Шаблонная функция для двумерного массива
Всем дорого здравия! Насколько безопасно использовать такую функция и для статических и для динамических массивов: #include...

Функция fill Для двумерного массива
Как использовать функцию fill с двумерным массивом std::fill(array, array + size, 1.0); к примеру есть двумерный массив int...

Шаблонная функция для инициализации двумерного массива
Вот так можно сделать функцию для иниц. двумерного массива типа int. int** CreateArray(int row,int column) { int** arr =...

11
178 / 161 / 38
Регистрация: 08.10.2012
Сообщений: 423
25.10.2012, 11:09
Цитата Сообщение от Yakov112 Посмотреть сообщение
Мне нужно написать функцию или скажите, пожалуйста, правильно ли она составлена в коде
Любая функция, вне зависимости от того как составлена, всегда что-то делает и иногда даже выдает ответ. А вот то что она делает и правильный ли ответ это уже зависит от вашего написания тела функции...
Если ваша функция смотрит каждую строку, но столбец через один и возвращает true когда находит, среди просмотренных значений, первый четный элемент, и возвращает false если не находит таковых элементов то ваша функция работает верно.
1
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
25.10.2012, 17:11  [ТС]
Цитата Сообщение от MrGrig Посмотреть сообщение
ваша функция работает верно
MrGrig, т.е. я так понимаю задача при нахождении на нечетных местах в каждой строке четного элемента выполнена правильно? и ничего не стоит исправлять?
0
178 / 161 / 38
Регистрация: 08.10.2012
Сообщений: 423
25.10.2012, 19:34
Цитата Сообщение от Yakov112 Посмотреть сообщение
MrGrig, т.е. я так понимаю задача при нахождении на нечетных местах в каждой строке четного элемента выполнена правильно? и ничего не стоит исправлять?
нет не правильно, дайте точную формулировку вашего задания и я поправлю вашу функцию
0
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
25.10.2012, 20:24  [ТС]
MrGrig, в каждой строке существуют элементы на нечетных местах нечетные - это и есть точная формулировка...а если совсем подробно вот код программы так написано полное условие нужно выполнить первое условие(второе работает отлично

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
/*
 
Условие задачи:
 
Дан двухмерный массив (вектор) n целых чисел.
Ввод функцией void inMas1(int& n,int a[N]), вывод массива функцией void outMas1(int n,int a[N]) 
Если условие выполнено (функция типа bool), то выполнить пребразование (функция типа void) и выполнить вычисление (функция типа int)
 
 
Условие на элементы в строках-столбах двухмерного массива
 
1.в каждой строке существующие элементы на нечетных местах нечетные
2. Вычислить сумму элементов в области 8.
 
*/
#include<iostream>
#include<locale>
#define N 100
 
using namespace std;
 
bool uslov (int n, int a[N][N])
{
    int k=0;
    for(int i=0; i<n; i++)  //перебор по строкам
    {
        for(int j=0; j<n; j+=2)  // цикл для просмотра элементов в строке
            if(a[i][j]%2==1)return true;
        break;
        k++;
    }   
    if(k==n)
        return true;
    else
        return false;
}
 
void inMas1(int& n,int a[N][N])
{
    cout<<"\nВведите элементы матрицы A \n";
    for (int i=0; i<n; i++)      //цикл по переменной i, в которой перебираем строки матрицы
        for (int j=0; j<n; j++)  //цикл по переменной j, в котором перебираем элементы внутри строки
        {   
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];    //ввод очередного элемента матрицы
        }   
}
 
void outMas1(int n,int a[N][N])
{
    cout<<"\nВы ввели матрицу A \n";
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)//цикл по переменной i, в котором перебираем строки матрицы
        cout<<a[i][j]<<"\t"; //вывод очередного элемента матрицы
        cout<<endl; //переход на новую строку после вывода всех элементов строки
    }
}
 
void sum(int n, int a[N][N])
{
    int s=0;
    for(int i=0;i<(n/2);i++)
        for(int j=0;j<(n/2);j++)
            if(j<=i) s+=a[i][j];
    cout<<"сумма равна "<<s<<endl;
}
 
int main()
{
    setlocale (LC_ALL, "RUS");
    int i,j,n,m,a[N][N];
    cout<<"n="; //ввод количества строк
    cin>>n;
                                                //cout<<"m="; //ввод количества столбцов
                                                //cin>>m;
    inMas1(n,a);
    outMas1(n,a);
    if(uslov(n,a))
    {
        cout<<"\nВерно, на нечетных местах стоят нечетные элементы"<<endl;
        sum(n,a);
    }
    else
        cout<<"\nERROR!!!Матрица не подходит по условию!!!"<<endl;
    
    return 0;
}
0
178 / 161 / 38
Регистрация: 08.10.2012
Сообщений: 423
25.10.2012, 20:51
хм ну по заданию счас гляну, вроде все нормально единственное ваша функция условия мне немного не нравится
1
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
25.10.2012, 20:57  [ТС]
MrGrig, помогите исправьте)))) а то писал один код, но как оказалось условие задачи не правильно понял...вот пытался исправить
там короче когда смотришь нечетные элементы в строке то как только первый нечетный нашелся можно из этой стоки выходить и сто то типа счетчика сделать, которая следит за хорошими строками.
еще в если в строке на нечетных местах есть четные и нечетное элементы то условие выполнено, а если все четные то нет.
0
178 / 161 / 38
Регистрация: 08.10.2012
Сообщений: 423
25.10.2012, 20:59
Цитата Сообщение от Yakov112 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
void sum(int n, int a[N][N])
{
* * int s=0;
* * for(int i=0;i<(n/2);i++)
* * * * for(int j=0;j<(n/2);j++)
* * * * * * if(j<=i) s+=a[i][j];
* * cout<<"сумма равна "<<s<<endl;
}
вы уверены что функция должна работать именно так? вросто таким образом посчитаются только эти элементы

C++
1
2
3
4
5
6
7
ij 0  1  2  3  4  5
0  *  *  *  #  #  #
1  #  *  *  #  #  #
2  #  #  *  #  #  #
3  #  #  #  #  #  #
4  #  #  #  #  #  #
5  #  #  #  #  #  #
* выделены элементы которые просуммируются
просто я немного не понял что есть
Цитата Сообщение от Yakov112 Посмотреть сообщение
2. Вычислить сумму элементов в области 8.
0
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
25.10.2012, 23:32  [ТС]
Цитата Сообщение от MrGrig Посмотреть сообщение
вы уверены что функция должна работать именно так? вросто таким образом посчитаются только эти элементы
да мне это и нужно, и эта часть проги работает, у меня не правильно как я понял реализовано первое условие "в каждой строке существуют элементы на нечетных местах нечетные" выше в проге опечатка в слове "существующие" нужно !именно! "существуют"

Добавлено через 4 минуты
т.е. не обязательно чтобы все элементы на нечетных местах в строке были нечетные, это условие не верно только тогда когда все элементы на нечетных местах в строке будут четные

Добавлено через 2 часа 22 минуты
Цитата Сообщение от MrGrig Посмотреть сообщение
ij 0 1 2 3 4 5
0 * * * # # #
1 # * * # # #
2 # # * # # #
3 # # # # # #
4 # # # # # #
5 # # # # # #
а почему эти то?
разве не
Code
1
2
3
4
5
6
7
ij  0 1 2  3 4 5
0 * # # # # #
1 * * # # # #
2 * * * # # #
3 # # # # # #
4 # # # # # #
5 # # # # # #
???
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
26.10.2012, 06:11
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool uslov (int n, int a[N][N])
{
    for(int i=0; i<n; i++)  //перебор по строкам
    {
        for(int j=0; j<n; j+=2)  // цикл для просмотра элементов в строке
            if(a[i][j]%2==1)
                break;
        if(j==n)
            return false;    
    }
    return true;    
}
1
0 / 0 / 1
Регистрация: 08.12.2011
Сообщений: 69
26.10.2012, 16:00  [ТС]
valeriikozlov,
Цитата Сообщение от valeriikozlov Посмотреть сообщение
if(j==n)
а можно узнать почему тут j? ведь мне нужно проверить,что в каждой строке существует нечетный элемент на нечетном месте, а не то что если этот элемент находится на n-ом месте
примеры матрицы:
верная

Code
1
2
3
4
ij0 1 2
0 1 2 4
1 2 3 1
2 1 3 5
- это верная матрица и ответ true

Code
1
2
3
4
ij0 1 2
0 1 2 4
1 2 3 1
2 2 6 4
- это уже не верная и результат false
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
26.10.2012, 18:56
У меня ошибка в коде - упустил что j увеличивается на 2, а не на один. Вот так будет правильно (заодно смотрите комментарии к коду, которые дадут ответы на Ваши вопросы):
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool uslov (int n, int a[N][N])
{
    for(int i=0; i<n; i++)  //перебор по строкам
    {
        for(int j=0; j<n; j+=2)  // цикл для просмотра элементов в строке
            if(a[i][j]%2==1)// если встретили в строке i на нечетном месте нечетный элемент, прекращаем дальше смотреть эту строку (и в этом случае j остается меньше n)
                break;
        if(j>=n)//вот это условие выполниться, если в строке i нет ни одного нечетного элемента на нечетном месте
            return false;// поэтому дальше матрицу можно не смотреть а вернуть false
    }
    return true;// если дошли сюда, то значит в каждой строке есть хотя бы один нечетный элемент на нечетном месте, поэтому возвращаем true
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.10.2012, 18:56
Помогаю со студенческими работами здесь

Функция для удаления строки из двумерного массива
Массив должен передаваться в функцию как параметр. Написать функцию для удаления строки из двумерного массива. Оставшиеся строки должны...

нужна функция для обмена строк двумерного массива на плюсах
доброго времени суток нужна ваша помощь в решении задачи вот здесь она уже решена но это c# а мне нужно точно такаяже прога на плюсах...

Функция проверки двумерного массива C++
Здравствуйте! Мне нужна помощь вот в чем - мое полное задание это написать игру пятнашки которая должна состоять из 5 функций!! 1 -...

Функция ввода двумерного массива
Ребят, помогите! Надо написать функцию чтобы с помощью нее мы вводили двумерный массив! Не знаю какие параметры задать и что внутри...

Функция печати двумерного массива
Компилируется успешно, но при вызове функции Print() выводя &quot; |1&quot; попадает в бесконечный цикл. void Print(float **M, int n, int m) { ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru