Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int check(int *arr, int columns){//Функція яка перевіряє чи той рядок який ми їй передали має одинакові числа
- int i,j;
- for(i=0;i<columns-1;i++){//Проходимся від початку до кінця
- for(j=i+1;j<columns;j++){//Проходимся від того елементу на якому попередній цикл до кінця
- if(*(arr+j)==*(arr+i)){//Порівнюємо чи елемент в першому циклі дорівнює елементу в цьому
- return 1;
- }
- }
- }
- return 0;
- }
- int main()
- {
- int rows, columns,i,j;
- printf("Input amount of rows:");
- scanf("%d", &rows);
- printf("Input amount of columns:");
- scanf("%d", &columns);
- int *array=malloc(rows*columns*sizeof(int));
- //Зірочка це вказівник на точку в пам'яті компютера а malloc
- // виділяє певне число байтів в памяті і в цій стрічці ми виділяємо кількість памяті рівну кількоті рядків помножити
- // на кількість стовпців помножити на кількість байт що займає інтеджер і робимо вказівник на початок цього блоку памяті
- for(i=0;i<rows;i++){
- for(j=0;j<columns;j++){
- printf("Input a[%d][%d]: ",i,j);
- scanf("%d",(array+i*columns+j));//Вводимо елементи в масив
- }
- }
- printf("-----Old matrix-----\n");
- for(i=0;i<rows;i++){
- for(j=0;j<columns;j++){
- printf("%d ",*(array+i*columns+j));//Виводимо елементи з масиву
- }
- printf("\n");
- }
- int *newmatrix=malloc(sizeof(int));//Створюємо нову матрицю і робимо їй мінімалний розмір
- int newmcounter=0;//Змінна щоб рахувати кількість рядків нової матриці
- for(i=0;i<rows;i++){//Проходимося по всіх рядках старої матриці
- if(check(array+i*columns,columns)!=1){//Передаємо рядок в функцію щоб перевірити на повторення
- newmatrix=realloc(newmatrix,((newmcounter+1)*columns)*sizeof(int));
- //Якщо повторень немає то з допомогою realloc збільшуємо розмір памяті нової матриці (Збільшуємо на один рядок)
- int *old=array+i*columns;//Робимо вказівник на початок цього рядка в старій матриці
- int *new=newmatrix+newmcounter*columns;//Робимо вказівник на початок останнього рядка в новій матриці
- for(j=0;j<columns;j++){//Проходимось по елементах нового рядка
- *(new+j)=*(old+j);//Присвоюємо їм відповідний елемент старого рядка
- }
- newmcounter++;//Збільшуємо кількість рядків в новій матриці
- }
- }
- printf("-----New matrix-----\n");
- for(i=0;i<newmcounter;i++){
- for(j=0;j<columns;j++){
- printf("%d ",*(newmatrix+i*columns+j));//Виводимо нову матрицю
- }
- printf("\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement