Я написал программу на c, которая создает случайно матрицу. Создает строку вроде этой (3, -6,2; 5,2, -9; -8,20,7). ";"вырезает каждую строку и "," каждый столбец. Теперь я написал программу ржавчины, которая делает матричное дополнение или мульт. Я называю это так:
./matrix ./test 3 3
"*" ./test 3 3
. / Matrix вызывает мою программу ржавчины, и я даю ей 3 аргумента. (Матрица 1, Оператор, Матрица2) Это работает, и вычисления в порядке, но Матрица 1 и 2 всегда равны. Я думаю, это потому, что я использую srand в зависимости от времени, и потому что я вызываю его одновременно, он создает два раза одно и то же. Я также протестировал Matrixrandomizer, не включая его в мой вызов ржавчины, и он всегда создает другую матрицу.
Здесь вы можете увидеть мой код c.
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <string.h>
int main (int argc, char* argv[]) {
// Zufallszahlengenerator initialisieren
srand(time(NULL));
if(argc < 3) {
printf("Es fehlen Argumente");
}
char matrix[100] = "";
int r, c;
r = atoi(argv[1]);
c = atoi(argv[2]);
if(r > 0 && c > 0) {
for(int i = 0; i < r; i++) {
for(int j = 0; j < c; j++){
if(j == c - 1) {
int test = (1+rand()%9);
char buffer[50];
sprintf(buffer, "%d", test);
strcat(matrix, buffer);
}
if(j < c - 1){
int test = (1+rand()%9);
char buffer[50];
sprintf(buffer, "%d", test);
strcat(matrix, buffer);
strcat(matrix, ",");
}
}
if(i != r - 1) {
strcat(matrix, ";");
}
}
}
printf("%s", matrix);
}