Skip to content
Snippets Groups Projects
Commit 735fef3b authored by 20041679's avatar 20041679
Browse files

added todays assigment

parent bd905a97
No related branches found
No related tags found
No related merge requests found
File added
#include <stdio.h>
#define ROWS(a) (sizeof(a) / sizeof(a[0]))
#define COLS(a) (sizeof(a[0]) / sizeof(a[0][0]))
void input(int rows, int cols, int matrix[][cols]) {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
printf("[%d][%d]: ", i, j);
scanf("%d", &matrix[i][j]);
}
}
}
int count_eq(int rows, int cols, int matrix[][cols], int key) {
int ret = 0;
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
if (matrix[i][j] == key) {
++ret;
}
}
}
return ret;
}
int sum(
int rows1, int cols1, int a1[][cols1],
int rows2, int cols2, int a2[][cols2],
int rows3, int cols3, int a3[][cols3])
{
int ret;
if (rows1 == rows2 && rows2 == rows3 && cols1 == cols2 && cols2 == cols3) {
int rows = rows1;
int cols = cols1;
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
a3[i][j] = a1[i][j] + a2[i][j];
}
}
ret = 0;
} else {
ret = -1;
}
return ret;
}
void print(int rows, int cols, int matrix[][cols]) {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
printf("%3d ", matrix[i][j]);
}
puts("");
}
}
int multiply(
int rows1, int cols1, int a1[][cols1],
int rows2, int cols2, int a2[][cols2],
int rows3, int cols3, int a3[][cols3])
{
int ret;
if (cols1 == rows2 && rows1 == rows3 && cols2 == cols3) {
for (int i = 0; i < rows1; ++i) {
for (int j = 0; j < cols2; ++j) {
int sum = 0;
for (int k = 0; k < rows2; ++k) {
sum += a1[i][k] * a2[k][j];
}
a3[i][j] = sum;
}
}
ret = 1;
} else {
ret = -1;
}
return ret;
}
int main(void) {
int a1[2][3];
int a2[3][2];
puts("inserimento A");
input(ROWS(a1), COLS(a1), a1);
puts("inserimento B");
input(ROWS(a2), COLS(a2), a2);
int x;
printf("inserire x: ");
scanf("%d", &x);
printf("instanze di %d in A: %d\n", x, count_eq(ROWS(a1), COLS(a1), a1, x));
int y;
printf("inserire y: ");
scanf("%d", &y);
printf("instanze di %d in B: %d\n", y, count_eq(ROWS(a2), COLS(a2), a2, y));
int s[ROWS(a1)][COLS(a1)];
if (sum(ROWS(a1), COLS(a1), a1, ROWS(a2), COLS(a2), a2, ROWS(s), COLS(s), s) < 0) {
fputs("somma impossibile\n", stderr);
} else {
print(ROWS(s), COLS(s), s);
}
int m[2][2];
if (multiply(ROWS(a1), COLS(a1), a1, ROWS(a2), COLS(a2), a2, ROWS(m), COLS(m), m) < 0) {
fputs("prodotto impossibile\n", stderr);
} else {
print(ROWS(m), COLS(m), m);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment