Помогите написать на Си такое:
1. Матрица 3х3
2. Вывод матрицы на экран.
3. Перемножение двух матриц.
4. Умножение матрицы на число.
Помогите, очень надо
Другие языки программирования и технологии
Помогите с программированием на Си
Напиши формулы по которым перемножаются матрицы и умножения на число - будет тебе программа.
(считай это небольшой проверкой - если ты даже формулы предоставить не в состоянии, значит на тебя нечего и время тратить)
(считай это небольшой проверкой - если ты даже формулы предоставить не в состоянии, значит на тебя нечего и время тратить)
// _71257818
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
#include <windows.h>
#define N 3
void main()
{
srand((unsigned) time(NULL));
setlocale(LC_CTYPE, "Russian_Russia.1251");
// Первое задание
int arr[N][N];
for (int n = 0; n < N; n++)
for (int m = 0; m < N; m++)
arr[n][m] = rand();
for (int n = 0; n < N; n++, printf("\n"))
for (int m = 0; m < N; m++)
printf("%d\t", arr[n][m]);
printf("");
// Второе задание
int row, col;
int ** a;
printf("\n Введите количество строк матрицы: ");
scanf("%d", &row);
printf(" Введите количество столбцов матрицы: ");
scanf("%d", &col);
printf("\n");
a = (int **) malloc(row * sizeof(int *));
for (int n = 0; n < row; n++, printf("\n"))
{
a[n] = (int *) malloc(col * sizeof(int));
for (int m = 0; m < col; m++)
{
a[n][m] = rand() % 90 + 10;
printf(" %d", a[n][m]);
}
}
for (int n = 0; n < row; n++)
free(a[n]);
free(a);
// Второе задание
int ** b, ** c, ** d;
int row1, col1, row2, col2, size;
printf("\n Введите количество строк первой матрицы: ");
scanf("%d", &row1);
printf(" Введите количество столбцов первой матрицы: ");
scanf("%d", &col1);
printf("\n");
b = (int **) malloc(row1 * sizeof(int *));
for (int n = 0; n < row1; n++, printf("\n"))
{
b[n] = (int *) malloc(col1 * sizeof(int));
for (int m = 0; m < col1; m++)
{
b[n][m] = rand() % 19 - 9;
printf("%d\t", b[n][m]);
}
}
printf("\n Введите количество строк второй матрицы: ");
scanf("%d", &row2);
printf(" Введите количество столбцов второй матрицы: ");
scanf("%d", &col2);
printf("\n");
c = (int **) malloc(row2 * sizeof(int *));
for (int n = 0; n < row2; n++, printf("\n"))
{
c[n] = (int *) malloc(col2 * sizeof(int));
for (int m = 0; m < col2; m++)
{
c[n][m] = rand() % 19 - 9;
printf("%d\t", c[n][m]);
}
}
if (col1 != row2)
{
printf("\n Первая матрица не согласована со второй! \a");
printf("\n Приложение будет закрыто. ");
Sleep(3000);
for (int n = 0; n < row1; n++)
free(b[n]);
free(b);
for (int n = 0; n < row2; n++)
free(c[n]);
free(c);
exit(0);
}
else
{
printf("\n Произведение матриц равно: \n\n");
int sum;
d = (int **) malloc(col2 * sizeof(int *));
for (int n = 0; n < col2; n++, printf("\n"))
{
d[n] = (int *) malloc(col2 * sizeof(int));
for (int m = 0; m < col2; m++)
{
sum = 0;
for (int k = 0; k < row2; k++)
sum += b[n][k] * c[k][m];
d[n][m] = sum;
printf("%d\t", d[n][m]);
}
}
for (int n = 0; n < row1; n++)
free(b[n]);
free(b);
for (int n = 0; n < row2; n++)
free(c[n]);
free(c);
for (int n = 0; n < col2; n++)
free(d[n]);
free(d);
}
// Третье задание
int rw, cl, num;
int ** f;
rw = rand() % 5 + 5;
Sleep(1001);
cl = rand() % 5 + 5;
printf("\n\n Дана исходная матрица: \n\n");
f = (int **) malloc(rw * sizeof(int *));
for (int n = 0; n < rw; n++, printf("\n"))
{
f[n] = (int *) malloc(cl * sizeof(int));
for (int m = 0; m < cl; m++)
{
f[n][m] = rand() % 10;
printf("%d\t", f[n][m]);
}
}
printf("\n Введите целочисленный множитель: ");
scanf("%d", &num);
printf("\n");
for (int n = 0; n < rw; n++, printf("\n"))
{
for (int m = 0; m < cl; m++)
{
f[n][m] *= num;
printf("%d\t", f[n][m]);
}
}
for (int n = 0; n < rw; n++)
free(f[n]);
free(f);
_getch();
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
#include <windows.h>
#define N 3
void main()
{
srand((unsigned) time(NULL));
setlocale(LC_CTYPE, "Russian_Russia.1251");
// Первое задание
int arr[N][N];
for (int n = 0; n < N; n++)
for (int m = 0; m < N; m++)
arr[n][m] = rand();
for (int n = 0; n < N; n++, printf("\n"))
for (int m = 0; m < N; m++)
printf("%d\t", arr[n][m]);
printf("");
// Второе задание
int row, col;
int ** a;
printf("\n Введите количество строк матрицы: ");
scanf("%d", &row);
printf(" Введите количество столбцов матрицы: ");
scanf("%d", &col);
printf("\n");
a = (int **) malloc(row * sizeof(int *));
for (int n = 0; n < row; n++, printf("\n"))
{
a[n] = (int *) malloc(col * sizeof(int));
for (int m = 0; m < col; m++)
{
a[n][m] = rand() % 90 + 10;
printf(" %d", a[n][m]);
}
}
for (int n = 0; n < row; n++)
free(a[n]);
free(a);
// Второе задание
int ** b, ** c, ** d;
int row1, col1, row2, col2, size;
printf("\n Введите количество строк первой матрицы: ");
scanf("%d", &row1);
printf(" Введите количество столбцов первой матрицы: ");
scanf("%d", &col1);
printf("\n");
b = (int **) malloc(row1 * sizeof(int *));
for (int n = 0; n < row1; n++, printf("\n"))
{
b[n] = (int *) malloc(col1 * sizeof(int));
for (int m = 0; m < col1; m++)
{
b[n][m] = rand() % 19 - 9;
printf("%d\t", b[n][m]);
}
}
printf("\n Введите количество строк второй матрицы: ");
scanf("%d", &row2);
printf(" Введите количество столбцов второй матрицы: ");
scanf("%d", &col2);
printf("\n");
c = (int **) malloc(row2 * sizeof(int *));
for (int n = 0; n < row2; n++, printf("\n"))
{
c[n] = (int *) malloc(col2 * sizeof(int));
for (int m = 0; m < col2; m++)
{
c[n][m] = rand() % 19 - 9;
printf("%d\t", c[n][m]);
}
}
if (col1 != row2)
{
printf("\n Первая матрица не согласована со второй! \a");
printf("\n Приложение будет закрыто. ");
Sleep(3000);
for (int n = 0; n < row1; n++)
free(b[n]);
free(b);
for (int n = 0; n < row2; n++)
free(c[n]);
free(c);
exit(0);
}
else
{
printf("\n Произведение матриц равно: \n\n");
int sum;
d = (int **) malloc(col2 * sizeof(int *));
for (int n = 0; n < col2; n++, printf("\n"))
{
d[n] = (int *) malloc(col2 * sizeof(int));
for (int m = 0; m < col2; m++)
{
sum = 0;
for (int k = 0; k < row2; k++)
sum += b[n][k] * c[k][m];
d[n][m] = sum;
printf("%d\t", d[n][m]);
}
}
for (int n = 0; n < row1; n++)
free(b[n]);
free(b);
for (int n = 0; n < row2; n++)
free(c[n]);
free(c);
for (int n = 0; n < col2; n++)
free(d[n]);
free(d);
}
// Третье задание
int rw, cl, num;
int ** f;
rw = rand() % 5 + 5;
Sleep(1001);
cl = rand() % 5 + 5;
printf("\n\n Дана исходная матрица: \n\n");
f = (int **) malloc(rw * sizeof(int *));
for (int n = 0; n < rw; n++, printf("\n"))
{
f[n] = (int *) malloc(cl * sizeof(int));
for (int m = 0; m < cl; m++)
{
f[n][m] = rand() % 10;
printf("%d\t", f[n][m]);
}
}
printf("\n Введите целочисленный множитель: ");
scanf("%d", &num);
printf("\n");
for (int n = 0; n < rw; n++, printf("\n"))
{
for (int m = 0; m < cl; m++)
{
f[n][m] *= num;
printf("%d\t", f[n][m]);
}
}
for (int n = 0; n < rw; n++)
free(f[n]);
free(f);
_getch();
}
1) указатель на массив указателей (выделение памяти malloc() потом почистить free() )
2)printf(...) -- тут смотри формат своих переменных
3)вложенные циклы
и т. д.
2)printf(...) -- тут смотри формат своих переменных
3)вложенные циклы
и т. д.
Александр Кислицин
Ты напиши мне эту программу, так я ничего не понимаю
иди отт сюда лох
Александр Кислицин
мальчик, иди в школу и учи уроки
Сам делай ты умный
Похожие вопросы
- Помогите с программированием на Си. Задача про треугольники
- Помогите с программированием на си
- Привет, помогите с программированием на СИ, передача массива в функцию..
- Посоветуйте книги по программированию на Си.
- Помогите с программированием СИ
- Помогите с программированием СИ
- Помогите с программированием С++. Заранее спасибо.
- программирование на си++
- программирование в си
- Программирование на Си++
Умножение матрицы на число — элементарная операция, заключающаяся в умножении каждого элемента матрицы на это самое число:
Помоги пожалуйста.