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

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

27.03.2018, 17:39. Показов 8795. Ответов 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2018, 17:39
Ответы с готовыми решениями:

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

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

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

20
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 18:25  [ТС]
Я написал код, но он не работает. Показывает ошибки в обоих циклах.
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
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
05.04.2018, 18:36
Можно название ошибки.

Добавлено через 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  [ТС]
В стоках
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
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
05.04.2018, 18:53
Зачем ты везде пишешь float? Это означает что ты заного объявляешь пеpеменную.
А на ошибки я указал выше
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 18:57  [ТС]
Если убрать везде float, то будет ошибка индификатор не определен или выражение должно иметь тип указателя на объект.

C++
1
    if (float a[i][3] == 0);
Здесь теперь ошибка: требуется =
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.04.2018, 18:59
Sibya, матрицы 5х7 и 4х7 даны по условию ? сформулируйте оригинал условия задачи.
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 19:00  [ТС]
Заменить в третьем столбце матрицы A (5×7) все нули на единицы, а в
пятом столбце матрицы B (4×5) — все единицы на нули
0
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
05.04.2018, 19:03
Цитата Сообщение от axela002 Посмотреть сообщение
Зачем ты везде пишешь float?
Ты так и не ответил, кто тебя этом учил?
Как объявляется пеpеменная (массив) , и в дальнейшем используется, ты знаешь?
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.04.2018, 19:04
Цитата Сообщение от Sibya Посмотреть сообщение
Заменить в третьем столбце матрицы A (5×7) все нули на единицы, а в
пятом столбце матрицы B (4×5) — все единицы на нули
Это полное условие ? про функции что-нибудь говорится или это Вы сами решили что они нужны ?
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 19:05  [ТС]
Yetty, Разработайте программу, выделив в ней одну или несколько под-
программ (функций). Требования к составляемым подпрограммам:
каждая подпрограмма является функционально завершенной и должна
вызываться более одного раза с разными фактическими параметрами;
подпрограмма обработки не должна содержать ввод (вывод) данных;
в подпрограммах не рекомендуется использовать глобальные переменные.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.04.2018, 19:19
не совсем понятно, зачем
Цитата Сообщение от Sibya Посмотреть сообщение
Требования к составляемым подпрограммам:...
подпрограмма ... должна вызываться более одного раза
если подпрограмма должна один раз обработать матрицу a, а вторая подпрограмма соответственно один раз матрицу b
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
05.04.2018, 19:21  [ТС]
Yetty, Я тоже не совсем понял зачем, но условие такое...
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.04.2018, 14:44
Лучший ответ Сообщение было отмечено 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  [ТС]
Yetty, Спасибо огромное! Но нужно сделать не рандомное заполнение, а ручное...
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.04.2018, 15:25
Цитата Сообщение от Sibya Посмотреть сообщение
Но нужно сделать не рандомное заполнение, а ручное...
у Вас есть желание 55 чисел вводить с клавиатуры ?

замените строку 19 на cin >> x[i][j]; и слово Random замените везде например на слово Set
1
0 / 0 / 0
Регистрация: 18.03.2017
Сообщений: 85
06.04.2018, 15:44  [ТС]
Yetty, Если бы я выбирал условие... Спасибо огромное! Вы мне очень сильно помогли!)
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.04.2018, 16:01
Цитата Сообщение от Sibya Посмотреть сообщение
Если бы я выбирал условие
Так Вы ведь сбрасывали условие. Там нет ни слова про заполнение с клавиатуры. Или условие снова дополнилось ?
0
0 / 0 / 0
Регистрация: 18.12.2020
Сообщений: 2
19.12.2020, 02:30
Yetty, а можно разбор кода)))
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
19.12.2020, 05:32
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.12.2020, 05:32
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оптимизация CMake для ускорения сборки
bytestream 02.06.2025
Вы когда-нибудь ловили себя на мысле, что пока ваш проект компилируется, можно успеть сварить кофе, прочитать главу книги или даже сбегать в соседний офис? Если да, то добро пожаловать в клуб. . .
JS String.prototype.localeCo­mpare()
mr_dramm 02.06.2025
скопировано из этой темы чтобы не потерялось. localeCompare без указания локали для сравнения строк под капотом использует Intl. Collator , который работает согласно Unicode Collation Algorithm. . .
Облако проектов
russiannick 01.06.2025
Слава Джа, написал прогу для компиляции. Значит написал компилятор? Обьем кода 300+ строк. Язык-яву. Вводим данные, заполняем поля, тычем радиобаттоны. И по итогу в поле результат получам листинг. . .
Rust и квантовые вычисления: интеграция с Q# и Qiskit
golander 01.06.2025
Мир квантовых вычислений традиционно оставался закрытым клубом для высокоуровневых языков типа Python и специализированных DSL вроде Q#. Однако в последние годы Rust начал тихую революцию в этой. . .
Кэш REDIS и C#
UnmanagedCoder 01.06.2025
Redis (Remote Dictionary Server) - это ультраскоростное хранилище данных в оперативной памяти, работающее по принципу "ключ-значение". Суть проста: данные хранятся не на диске, а прямо в RAM, что. . .
Lenovo IH110CX Rev: 1.0 motherboard manual
Maks 01.06.2025
Размещения без повторений
VistaSV30 31.05.2025
Код возвращает список вариантов размещений A^{k}_{n}=\frac{n!}{(n-k)!} from itertools import permutations def pwr(k, n): # Размещение без повторений (Placement without repetition) if k. . .
Redis и Node.js с TypeScript - решения для высоконагруженных систем
Reangularity 31.05.2025
Redis (Remote Dictionary Server) — сверхбыстрое хранилище данных в памяти, способное обрабатывать операции за микросекунды. И что особенно важно для нас — с удивительно простым API. А теперь. . .
Unit-тестирование с моками в Go
golander 31.05.2025
Большинство разработчиков предпочитают тестировать код без использования моков. Например, при интеграции с Elasticsearch логичнее запустить контейнер локально и тестировать Go-код непосредственно с. . .
Как работать с PDF в C#
stackOverflow 31.05.2025
Нам приходится сталкиваться с PDF по разным причинам. Генерация счетов, создание отчетов, извлечение данных из загруженных пользователем документов, автоматизация рабочих процесов - это лишь верхушка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »