0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
1

Замена нулей на единицы и единицы на нули в матрицах с использованием функций

27.03.2018, 17:39. Показов 7031. Ответов 20
Метки нет (Все метки)

Всем доброго времени суток! Пишу программу в которой должна производиться замена нулей, в третьем столбце, на единицы в матрице а. А в пятом столбце нужно заменить все единицы на нули в пятом столбце в матрице b. Я не знаю как реализовать замену через функции. Написал только ввод самих матриц.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <math.h>
#include <conio.h> 
void matrin(float[][7], int n, int m, char с);
void main()
{
    float a[5][7], b[4][7];
    matrin(a, 5, 7, 'a'); matrin(b, 4, 5, 'b');
    }
void matrin(float a[][7], int n, int m, char c)
{
    int i, j;
    printf("Введите матрицу%1c %2d * %2d\n", c, n, m);
    for (i = 0;i<n;i++)
        for (j = 0;j<m;j++)
            scanf_s("%f", &a[i][j]);
}
Надеюсь на вашу помощь! И заранее спасибо!)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2018, 17:39
Ответы с готовыми решениями:

Скопировать в новый текстовый файл все символы исходного, заменив все нули на единицы, а единицы на нули
Дан текстовый файл f. Переписать в файл g все компоненты файла f с заменой символа 0 на символ 1 и...

Файл состоит из нулей и единиц. Поставить в начало файла нули, а затем единицы
Файл состоит из нулей и единиц. Поставить в начало файла нули, а затем единицы.

Поставьте в начало этой последовательности нули, а затем единицы. Подсчитайте количество нулей и единиц
Создайте одномерный массив, представляющий собой последовательность из нулей и единиц (через...

Последовательность состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы
VBA Массивы Последовательность а1, а2,..., аn, состоит из нулей и единиц. Поставить в начало этой...

20
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 18:25  [ТС] 2
Я написал код, но он не работает. Показывает ошибки в обоих циклах.
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
#include <stdio.h>
#include <math.h>
#include <conio.h> 
#include <iostream>
 
using namespace std;
 
void matrin(float[][7], int n, int m, char с);
void main()
{
    float a[5][7], b[4][7];
    matrin(a, 5, 7, 'a'); matrin(b, 4, 5, 'b');
    }
void matrin(float a[][7], int n, int m, char c)
{
    int i, j;
    printf("Введите матрицу%1c %2d * %2d\n", c, n, m);
    for (i = 0;i<n;i++)
        for (j = 0;j<m;j++)
            scanf_s("%f", &a[i][j]);
}
void matrin(float a)
{
for (int i = 0; i < 5; i++)
{
    if (float a[i][3] = 0);
    {
        float a[i][3] = 1;
        }
    cout << float a[i][j] << " ";
    cout << endl;
}
}
void matrin(float b)
{
for (int i = 0; i < 4; i++)
    {
        if (float b[i][5] = 1);
        {
            float b[i][5] = 0;
        }
        cout << float b[i][j] << " ";
        cout << endl;
    }
}
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
05.04.2018, 18:36 3
Можно название ошибки.

Добавлено через 2 минуты
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
void matrin(float a)
{
for (int i = 0; i < 5; i++)
{
    if (float a[i][3] = 0);
    {
        float a[i][3] = 1;
        }
    cout << float a[i][j] << " ";
    cout << endl;
}
}
void matrin(float b)
{
for (int i = 0; i < 4; i++)
    {
        if (float b[i][5] = 1);
        {
            float b[i][5] = 0;
        }
        cout << float b[i][j] << " ";
        cout << endl;
    }
}
Ну а что ты хотел? Ты пеpедаешь в паpаметpы функии обычную пеpеменную,а в цикле pаботаешь с ней как с двумеpным массивом(матpицей). И вообще pеализовывать тело функции лучше вне функции main

Добавлено через 1 минуту
Опять же , уже котоpый pаз повтоpяю , не ставьте одинаковые имена пеpеменным. Вот мне сейчас не удобно pазбиpать твой код.

Добавлено через 2 минуты
В коде очень много ошибок.
C++
1
if (float a[i][3] = 0)
Тут ты пpисваиваешь в условии if!
А должно быть так
C++
1
 if (float a[i][3] == 0);
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 18:49  [ТС] 4
В стоках
C++
1
if (float a[i][3] = 0);
C++
1
float a[i][3] = 1;
C++
1
if (float b[i][3] = 0);
C++
1
float b[i][3] = 1;
Ошибка:Значение должно иметь константное значение
В строках
C++
1
cout << float a[i][j] << " ";
C++
1
cout << float a[i][j] << " ";
использование имени типа не допускается и требуется точка с запятой
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
05.04.2018, 18:53 5
Зачем ты везде пишешь float? Это означает что ты заного объявляешь пеpеменную.
А на ошибки я указал выше
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 18:57  [ТС] 6
Если убрать везде float, то будет ошибка индификатор не определен или выражение должно иметь тип указателя на объект.

C++
1
    if (float a[i][3] == 0);
Здесь теперь ошибка: требуется =
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
05.04.2018, 18:59 7
Sibya, матрицы 5х7 и 4х7 даны по условию ? сформулируйте оригинал условия задачи.
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 19:00  [ТС] 8
Заменить в третьем столбце матрицы A (5×7) все нули на единицы, а в
пятом столбце матрицы B (4×5) — все единицы на нули
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
05.04.2018, 19:03 9
Цитата Сообщение от axela002 Посмотреть сообщение
Зачем ты везде пишешь float?
Ты так и не ответил, кто тебя этом учил?
Как объявляется пеpеменная (массив) , и в дальнейшем используется, ты знаешь?
1
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
05.04.2018, 19:04 10
Цитата Сообщение от Sibya Посмотреть сообщение
Заменить в третьем столбце матрицы A (5×7) все нули на единицы, а в
пятом столбце матрицы B (4×5) — все единицы на нули
Это полное условие ? про функции что-нибудь говорится или это Вы сами решили что они нужны ?
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 19:05  [ТС] 11
Yetty, Разработайте программу, выделив в ней одну или несколько под-
программ (функций). Требования к составляемым подпрограммам:
каждая подпрограмма является функционально завершенной и должна
вызываться более одного раза с разными фактическими параметрами;
подпрограмма обработки не должна содержать ввод (вывод) данных;
в подпрограммах не рекомендуется использовать глобальные переменные.
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
05.04.2018, 19:19 12
не совсем понятно, зачем
Цитата Сообщение от Sibya Посмотреть сообщение
Требования к составляемым подпрограммам:...
подпрограмма ... должна вызываться более одного раза
если подпрограмма должна один раз обработать матрицу a, а вторая подпрограмма соответственно один раз матрицу b
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 19:21  [ТС] 13
Yetty, Я тоже не совсем понял зачем, но условие такое...
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
06.04.2018, 14:44 14
Лучший ответ Сообщение было отмечено Sibya как решение

Решение

Sibya, вот решение, не Ok конечно, но какое условие такой и код:

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
#include <iostream>
#include <ctime>
using namespace std;
 
void Change (double**x, int n, int m, int k)
{   
    if (n==5)
    for (int j=0; j<m; j++)
    if (x[k-1][j]==0) x[k-1][j]=1;
    if (n==4)
    for (int i=0; i<n; i++)
    if (x[i][k-1]==1) x[i][k-1]=0;
}    
    
void Random (double**x, int n, int m)
{
    for (int i = 0; i < n; i++)    
    for (int j = 0; j < m; j++) 
    x[i][j]=rand()%4;
}
 
void Print (double**x, int n, int m)
{
    for (int i = 0; i < n; i++)  
    {
    for (int j = 0; j < m; j++) 
    cout <<x[i][j]<<" ";    
    cout << endl;
    }
    cout << endl;
}
 
void Delete (double**x, int n)
{
for (int i = 0; i < n; i++)
    delete [] x[i];
    delete [] x;
}   
 
int main()
{
    srand((int)time(0));
    
      double **a = new double*[5]; 
    for (int i = 0; i < 5; i++)
      a[i]=new double[7];
    
      double **b = new double*[4]; 
    for (int i = 0; i < 4; i++)
      b[i]=new double[5];
      
    Random (a, 5, 7);
    Random (b, 4, 5);
    Print (a, 5, 7);
    Print (b, 4, 5);
    Change (a, 5, 7, 3);    
    Change (b, 4, 5, 5);
    Print (a, 5, 7);
    Print (b, 4, 5);
    Delete (b, 4);
    Delete (a, 5);   
 
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
06.04.2018, 15:04  [ТС] 15
Yetty, Спасибо огромное! Но нужно сделать не рандомное заполнение, а ручное...
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
06.04.2018, 15:25 16
Цитата Сообщение от Sibya Посмотреть сообщение
Но нужно сделать не рандомное заполнение, а ручное...
у Вас есть желание 55 чисел вводить с клавиатуры ?

замените строку 19 на cin >> x[i][j]; и слово Random замените везде например на слово Set
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
06.04.2018, 15:44  [ТС] 17
Yetty, Если бы я выбирал условие... Спасибо огромное! Вы мне очень сильно помогли!)
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
06.04.2018, 16:01 18
Цитата Сообщение от Sibya Посмотреть сообщение
Если бы я выбирал условие
Так Вы ведь сбрасывали условие. Там нет ни слова про заполнение с клавиатуры. Или условие снова дополнилось ?
0
0 / 0 / 0
Регистрация: 18.12.2020
Сообщений: 2
19.12.2020, 02:30 19
Yetty, а можно разбор кода)))
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
19.12.2020, 05:32 20
PROGRAM_CHEK, там ошибка, нужно менять не в строке, а в столбце. исправил и закомментировал:
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
#include <iostream>
#include <ctime>
using namespace std;
 
// функция замены 
void Change (double **x, int n, int m, int k, int c, int d)
{   
    for (int i = 0; i < n; i++)
        if (x[i][k-1]==c) x[i][k-1]=d;
}    
  
// функция заполнения матрицы случайными числами  
void Random (double **x, int n, int m)
{
    for (int i = 0; i < n; i++)    
        for (int j = 0; j < m; j++) 
            x[i][j]=rand()%4;
}
 
// функция вывода матрицы на печать
void Print (double **x, int n, int m)
{
    for (int i = 0; i < n; i++)  
    {
        for (int j = 0; j < m; j++) 
            cout <<x[i][j]<<" ";    
        cout << endl;
    }
    cout << endl;
}
 
// освобождение памяти
void Free (double **x, int n)
{
    for (int i = 0; i < n; i++)
    delete[]x[i];
    delete[]x;
}   
 
int main()
{
    srand((int)time(0));
    
    // объявление динамического массива
      double **a = new double*[5]; 
    for (int i = 0; i < 5; i++)
      a[i]=new double[7];
    
      double **b = new double*[4]; 
    for (int i = 0; i < 4; i++)
      b[i]=new double[5];
     
    // вызов функций 
    Random (a, 5, 7);   
    Random (b, 4, 5);
    Print (a, 5, 7);
    Print (b, 4, 5);
    Change (a, 5, 7, 3, 0, 1);    
    Change (b, 4, 5, 5, 1, 0);
    Print (a, 5, 7);
    Print (b, 4, 5);    
    Free (a, 5);   
    Free (b, 4);
 
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2020, 05:32
Помогаю со студенческими работами здесь

Требуется вывести квадратную матрицу, где первый квадрат-единицы, квадрат внутри него-нули, потом снова единицы и т.д.
Требуется вывести квадратную матрицу, где первый квадрат-единицы, квадрат внутри него-нули, потом...

Нули и единицы
В этой задаче вы можете использовать одномерные массивы (или их аналоги), циклы и операторы...

Единицы и нули в форме
Доброго утра! :) Подскажите пожалуйста, необходимо сделать форму, которая будет показывать единицы...

Распознать нули и единицы
Помогите написать задачку, очень надо)) 00010001110 это условие 00010001010 00010001010...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru