Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
коды.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
57.72 Кб
Скачать

Рекурсивное транспонирование по главной диагонали

#include<stdio.h>

#include<conio.h>

#include<malloc.h>

void Transpone(int **arr,int size)

{

int i=size-1, j=0;

if(i>0)

{

while(j<i)

{

int temp=arr[i][j];

arr[i][j]=arr[j][i];

arr[j][i]=temp;

j++;

}

size--;

Transpone(arr,size);

}

return;

}

int main()

{

int **A;

int i,j,size;

printf("Enter,how many strings and colomns do you want: ");

scanf("%d",&size);

A=(int**)malloc(size*sizeof(int*));

for(i=0;i<size;i++)

A[i]=(int*)malloc(size*sizeof(int));

for(i=0;i<size;i++)

{

for(j=0;j<size;j++)

{

printf("Element[%d][%d]= ",i,j);

scanf("%d",&A[i][j]);

}

}

for(i=0;i<size;i++)

{

for(j=0;j<size;j++)

printf("%-4.d ",A[i][j]);

printf("\n\n\n\n");

}

Transpone(A,size);

printf("\n\n\n\n");

for(i=0;i<size;i++)

{

for(j=0;j<size;j++)

printf("%-4.d ",A[i][j]);

printf("\n\n\n\n");

}

for(i=0;i<size;i++)

free(A[i]);

free(A);

getch();

return 0;

}

Перемножение матриц

#include <stdio.h>

#include <conio.h>

#include <malloc.h>

void Birth(float**&arr,int str, int col)

{

int i;

arr=(float**)malloc(str*sizeof(float*));

for(i=0;i<str;i++)

arr[i]=(float*)malloc(col*sizeof(float));

}

void Multiply(float** a,float** b,float** c,int str,int inner,int col)

{

int i,j,k;

i=0;

do

{

j=0;

do

{

c[i][j]=0;

k=0;

do

{

c[i][j]+=a[i][k]*b[k][j];

k++;

}

while(k<inner);

j++;

}

while(j<col);

i++;

}

while(i<str);

}

void Free( float** arr,int str)

{

int i;

for(i=0;i<str;i++)

free (arr[i]);

free(arr);

}

Int main()

{

float **A,**B,**C;

int strings_a,colomns_a,strings_b,colomns_b;

int i,j;

printf("Enter,how manн strings do you want in matrix A: ");

scanf("%d",&strings_a);

printf("Enter,how many colomns do you want in matrix A and how many strings do you want im matrix B: ");

scanf("%d",&colomns_a);

strings_b=colomns_a;

printf("Enter,how many colomns do you want in matrix B: ");

scanf("%d",&colomns_b);

A=(float**)malloc(strings_a*sizeof(float*));

for(i=0;i<strings_a;i++)

A[i]=(float*)malloc(colomns_a*sizeof(float));

for(i=0;i<strings_a;i++)

for(j=0;j<strings_b;j++)

{

printf("Element [%d][%d]= ",i,j);

scanf("%f",&A[i][j]);

}

for(i=0;i<strings_a;i++)

{

for(j=0;j<colomns_a;j++)

printf("%4.1f ", A[i][j]);

printf("\n\n\n");

}

B=(float**)malloc(strings_b*sizeof(float*));

for(i=0;i<strings_b;i++)

B[i]=(float*)malloc(colomns_b*sizeof(float));

for(i=0;i<strings_b;i++)

for(j=0;j<colomns_b;j++)

{

printf("Element [%d][%d]= ",i,j);

scanf("%f",&B[i][j]);

}

for(i=0;i<strings_b;i++)

{

for(j=0;j<colomns_b;j++)

printf("%4.1f ", B[i][j]);

printf("\n\n\n");

}

Birth(C,strings_a,colomns_b);

Multiply(A,B,C,strings_a,colomns_a,colomns_b);

printf("\n*/////////////RESULT\\\\\\\\\\\\\\*\n\n");

for(i=0;i<strings_a;i++)

{

for(j=0;j<colomns_b;j++)

printf("%4.2f ", C[i][j]);

printf("\n\n\n");

}

Free(C,strings_a);

for(i=0;i<strings_a;i++)

free(A[i]);

free(A);

for(i=0;i<strings_b;i++)

free(B[i]);

free(B);

getch();

return 0;

}

Реверс побочной диагонали

#include<stdio.h>

#include<conio.h>

#include<malloc.h>

void Revers(int **arr,int str,int col)

{

int i,j;

i=str-1;

j=col-str;

if(i>j)

{

int temp=arr[i][j];

arr[i][j]=arr[j][i];

arr[j][i]=temp;

str--;

Revers(arr,str,col);

}

}

Int main()

{

int **A;

int strings,colomns,i,j,size=0;

printf("Enter,how many strings do you want: ");

scanf("%d",&strings);

printf("Enter,how many colomns do you want: ");

scanf("%d",&colomns);

A=(int**)malloc(strings*sizeof(int*));

for(i=0;i<strings;i++)

A[i]=(int*)malloc(colomns*sizeof(int));

for(i=0;i<strings;i++)

for(j=0;j<colomns;j++)

{

printf("Element[%d][%d]= ",i,j);

scanf("%d",&A[i][j]);

}

for(i=0;i<strings;i++)

{

for(j=0;j<colomns;j++)

printf("%-4.d ",A[i][j]);

printf("\n\n\n\n");

}

Revers(A,strings,colomns);

printf("\n\n\n\n");

for(i=0;i<strings;i++)

{

for(j=0;j<colomns;j++)

printf("%-4.d ",A[i][j]);

printf("\n\n\n\n");

}

for(i=0;i<strings;i++)

free(A[i]);

free(A);

getch();

return 0;

}

Сравнение через командную строку, что-то такое

#include <stdio.h>

#include <malloc.h>

int StringLength(char* string)

{

int i=0;

while(string[i])

i++;

return i;

}

int StringCompare(char* string1, char* string2)

{

int i,j;

for(i=0,j=0;string1[i] && string2[j];i++,j++)

{

if (string1[i]<string2[j])

return -1;

else

if(string1[i]>string2[j])

return 1;

}

if(string1[i]=='\0' && string1[i]=='\0')

return 0;

if(string1[i]=='\0' && string2[j]!='\0')

return -1;

else

if(string2[j]=='\0'&& string1[i]!='\0')

return 1;

}

void main(int argc, char* argv[])

{

int i,j;

int compare_result;

int lenall=0,lenone=0;

char *result;

for(i=1;i<argc;i++)

for( j=i+1;j<argc;j++)

{

compare_result=StringCompare(argv[i],argv[j]);

if(compare_result==1)

{

char *temp;

temp=argv[j];

argv[j]=argv[i];

argv[i]=temp;

}

}

for(i=1;i<argc;i++)

printf("%s ",argv[i]);

}

Этот код можно использовать для нескольких задач, просто надо его надо подстроить по ситуации, сейчас это код: один массив по убыванию, второй – по возрастанию (всё без сортировок), в третий по возрастанию

#include<stdio.h>

#include<conio.h>

#include<malloc.h>

void Array(int*arr1,int*arr2,int*arr3,int size1,int size2)

{

int i,j,k;

for(i=0,j=size2-1,k=0;(i<size1 && j>=0);k++)

{

if(arr1[i]<arr2[j])

{

arr3[k]=arr1[i];

i++;

}

else

{

arr3[k]=arr2[j];

j--;

}

}

while(i<size1)

{

arr3[k]=arr1[i];

i++;

k++;

}

while(j>=0)

{

arr3[k]=arr2[j];

j++;

k++;

}

}