Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Рекурсивное транспонирование по главной диагоналиРекурсивное транспонирование по главной диагонали #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++; } }
int main() { int *A,*B,*C; int size_a,size_b,size_c; int i; printf("Enter the demision of array A: "); scanf("%d",&size_a); printf("Enter the demision of array B: "); scanf("%d",&size_b); A=(int*)malloc(size_a*sizeof(int)); for(i=0;i<size_a;i++) { printf("Element[%d]= ",i); if(i==0) scanf("%d",&A[i]); else { scanf("%d",&A[i]); if(A[i]<A[i-1]) i--; } } for(i=0;i<size_a;i++) printf("%d ",A[i]); B=(int*)malloc(size_b*sizeof(int)); for(i=0;i<size_b;i++) { printf("Element[%d]= ",i); if(i==0) scanf("%d",&B[i]); else { scanf("%d",&B[i]); if(B[i]>B[i-1]) i--; } } for(i=0;i<size_b;i++) printf("%d ",B[i]); size_c=size_a+size_b; C=(int*)malloc(size_c*sizeof(int)); Array(A,B,C,size_a,size_b); printf("\n\n\n\n\n"); for(i=0;i<size_c;i++) printf("%d ",C[i]); free(A); free(B); free(C); getch(); return 0; }
Сумма int и float макросами #include<stdio.h> #include<conio.h> #include<stdarg.h> enum data {Int,Float}tp; float Sum(int k, int l, data tp, ...) { float sum=0; va_list p; va_start(p,tp); while(k--) { switch(tp) { case Float: while(l--) sum+=va_arg(p,double); break; case Int: while(l--) sum+=va_arg(p,int); break; } l=va_arg(p,int); tp=va_arg(p,enum data); } va_end(p); return sum; }
int main() { float sum=Sum(3,2,Int,1,1,3,Float,1.4,2.7,4.6,4,Int,4,5,7,8); printf("%f",sum); getch(); return 0; }
Максимальная сумма элементов из нескольких массивов(функция с переменным числом параметров) #include<stdio.h> #include<conio.h> #include<malloc.h> #define K 3 int MaxSum(int k,int size,float*arr, ...) { int i,j=0,sum, maxsum=0 ,maxindex=0; float**p=&arr; for(j=0;j<k;j++) { for(i=0,sum=0;i<size;i++) sum+=p[j][i]; if(sum>maxsum) { maxsum=sum; maxindex=j; }
} return maxindex; } int main() { int size,i,j,index; float **array; printf("Enter, the demision of arrays: "); scanf("%d",&size); array=(float**)malloc(K*sizeof(float*)); for(i=0;i<K;i++) array[i]=(float*)malloc(size*sizeof(float)); for(i=0;i<K;i++) for(j=0;j<size;j++) scanf("%f",&array[i][j]); index=MaxSum(K,size,array[0],array[1],array[2]); for(i=0;i<size;i++) printf("%f ",array[index][i]); for(i=0;i<K;i++) free(array[i]); free(array); getch(); return 0; }
Вставить строку с n-ой позиции #include<stdio.h> #include<conio.h> #include<malloc.h> #include<Windows.h> int GetStr(char*str,int size) { int i; char c; for(i=0;i<size&&(c=getche())!=13;i++) { str[i]=c; } str[i]='\0'; return i; } void Cancentaticon(char*str1,char*str2,int position) { int i,j; for(i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++); j+=i; while(i>position-2) { str1[j]=str1[i]; i--; j--; } for(i=position-1,j=0;str2[j]!='\0';i++,j++) str1[i]=str2[j]; } int main() { char *string1,*string2; int size1,size2,size,lenght1,lenght2,position; printf("Enter,how many symbols do you want in the first string: "); scanf("%d",&size1); printf("Enter,how many symbols do you want in the second string: "); scanf("%d",&size2); system("cls"); string1=(char*)malloc(size1+1*sizeof(char)); string2=(char*)malloc(size2+1*sizeof(char)); printf("Enter string number 1: "); lenght1=GetStr(string1,size1); system("cls"); printf("Enter string number 2: "); lenght2=GetStr(string2,size2); system("cls"); printf("Enter,where do you want to concentanate the second string: "); scanf("%d",&position); system("cls"); size=lenght1+lenght2+1; if(lenght1>=lenght2) { Cancentaticon(string1,string2,position); printf("\n%s",string1); } else { Cancentaticon(string2,string1,position); printf("\n%s",string2); } free(string1); free(string2); getch(); return 0; }
Вывод чисел в обратном порядке #include<stdio.h> #include<conio.h> static int i; void Printf(int num) {
int j; scanf("%d",&j); i++; if(i<num) Printf(num); i--; printf("%d ",j); } int main() { int number; printf("Enter,how many numbers do you want: "); scanf("%d",&number); Printf(number); getch(); return 0; }
Из 10-ой СС в любую #include<stdio.h> #include<conio.h> int ss; char ms[200]; char znak='+'; int main() { int t,i,num1,k1=10,k2=11; double num; printf("Enter number: "); scanf("%lf",&num); printf("Enter accarsity: "); scanf("%d",&t); printf("Enter cc: "); scanf("%d",&ss); num<0?znak='-',num*=-1:num; num1=num; num-=num1; while(num1>=ss) { i=num1%ss; num1/=ss; ms[k1--]=i>9?i-10+'A':i+'0'; } ms[k1--]=num1>9?num1-10+'A':num1+'0'; ms[k1]=znak; ms[k2++]='.'; while(num!=0&&k2-11<=t) { num*=ss; i=num*ss; num-=i; ms[k2++]=i>9?i-10+'A':i+'0'; } for(i=k1;i<k2;i++) printf("%c",ms[i]); getch(); return 0; }
Минимальное в массиве строк #include<stdio.h> #include<conio.h> #include<malloc.h> #include<windows.h> void GetStr(char*str,int size) { int i; char c; for(i=0;size>0&&(c=getche())!=13;size--,i++) { str[i]=c; } str[i]='\0';
} int GetWord(char*str,int *i) { int len=0; while(str[*i]==32) (*i)++; if(str[*i]=='\0') return 0;
while(str[*i]!=32 && str[*i]!='\0') { len++; (*i)++; }
return len; } int main() { char** arr; int number, size,i,lenght=0,location=0,minlenght,l_minword,index; printf("Enter,how many strings do you want: "); scanf("%d",&number); arr=(char**)malloc(number*sizeof(char*)); printf("Enter,how many symbols in strings do you want: "); scanf("%d",&size); for(i=0;i<number;i++) arr[i]=(char*)malloc(size+1*sizeof(char)); system("cls"); for(i=0;i<number;i++) { printf("Enter string number %d: ",(i+1)); GetStr(arr[i],size); system("cls"); } lenght=GetWord(arr[0],&location); minlenght=lenght; l_minword=location;
for(i=0,index=0;i<number;i++) { while(arr[i][location]!='\0') { lenght=GetWord(arr[i],&location); if(lenght<minlenght) { minlenght=lenght; l_minword=location; index=i; } } location=0; }
for(i=l_minword-minlenght;i<=l_minword;i++) printf("%c",arr[index][i]); for(i=0;i<number;i++) free(arr[i]); free(arr); getch(); return 0; }
НОД рекурсией #include<stdio.h> #include<conio.h> int Nod(int n,int m) { if(n<m) { int temp=n; n=m; m=temp; } if(n%m==0) return m; else return Nod(n%m,m); } int main() { int number1, number2; int nod; scanf("%d%d",&number1,&number2); nod=Nod(number1,number2); printf("\n%d",nod); getch(); return 0; }
Реверс каждого слова в строке #include<stdio.h> #include<conio.h> #include<malloc.h> void GetStr(char*str,int size) { int i; char c; for(i=0;size>0&&(c=getche())!=13;size--,i++) { str[i]=c; } str[i]='\0'; } int GetWord(char*str,int *i) { int len=0; while(str[*i]==32) (*i)++; if(str[*i]=='\0') return 0;
while(str[*i]!=32 && str[*i]!='\0') { len++; (*i)++; }
return len; } void Revers(char *str,int l, int r) { r--; while(l<r) { int temp=str[l]; str[l]=str[r]; str[r]=temp; l++; r--; } }
int main() { char *string; int size,location=0,left,lenght; printf("Enter how many symbols do you want: "); scanf("%d",&size); string=(char*)malloc(size*sizeof(char)); printf("Enter string: "); GetStr(string,size); while(string[location]!='\0') { lenght=GetWord(string,&location); left=location-lenght;
Revers(string,left,location);
} printf("\n%s",string); free(string); getch(); return 0; }
Реверс строки #include<stdio.h> #include<conio.h> #include<malloc.h> void GetStr(char*str,int size) { int i; char c; for(i=0;i<size&&(c=getche())!=13;i++) { str[i]=c; } str[i]='\0';
} void Revers(char *str) { int i=0, j; for(j=0;str[j+1]!='\0';j++); while(i<j) { int temp=str[i]; str[i]=str[j]; str[j]=temp; i++; j--;
} } int main() { char *string; int size,lenght; printf("Enter,how many symbols do you want: "); scanf("%d",&size); string=(char*)malloc(size+1*sizeof(char)); printf("Enter string: "); GetStr(string,size); Revers(string); printf("\n%s",string); free(string); getch(); return 0; }
Рекурсивный реверс строки #include<stdio.h> #include<conio.h> #include<malloc.h> int GetStr(char*str,int size) { int i; char c; for(i=0;i<size&&(c=getche())!=13;i++) str[i]=c; str[i]='\0'; return i-1; } void Revers(char *str,int l, int r) {
if(l<r) { int temp=str[l]; str[l]=str[r]; str[r]=temp; l++; r--; Revers(str, l, r); } } int main() { char *string; int size,lenght; printf("Enter,how many symbols do you want: "); scanf("%d",&size); string=(char*)malloc(size+1*sizeof(char)); printf("Enter string: "); lenght=GetStr(string,size); Revers(string,0,lenght); printf("\n%s",string); free(string); getch(); return 0; }
Седловая точка #include<stdio.h> #include<conio.h> #include<malloc.h> int main() { int **A; int m,n,i,j,point,t,i1,i2,j1,alarm=0; printf("Enter,how many strings do you want: "); scanf("%d",&m); printf("Enter,how many colomns do you want: "); scanf("%d",&n); A=(int**)malloc(m*sizeof(int*)); for(i=0;i<m;i++) A[i]=(int*)malloc(n*sizeof(int*)); for(i=0;i<m;i++) for(j=0;j<n;j++) { printf("Element[%d][%d]= ",i,j); scanf("%d", &A[i][j]); }
for(i=0;i<m;i++) { t=*(*(A+i)+0); i1=i; j1=0; for(j=0;j<n;j++) if(*(*(A+i)+j)<t) { t=*(*(A+i)+j); i1=i; j1=j; } point=0; for(i2=0;i2<m;i2++) if(t<=*(*(A+i2)+j1)&&i1!=i2) point=1; if(!point) { alarm=1; printf("\n Naidena sedlovaia tochka %d s koordinatami: %d,%d",t,i1+1,j1+1);
} } if(!alarm) printf("Net sedlovix tochek"); for(i=0;i<m;i++) free(A[i]); free(A); getch(); return 0; }
Синус #include <stdio.h> #include <conio.h> #include <math.h> #define pi 3.1415926535897932384626433832 long double factorial( long int number) { if(number==0|| number==1) return 1; return number* factorial(number-1); } double p(double base, double stage) { if (stage==0) return 1; if (stage==1) return base; return base * p(base, stage - 1); } double mod ( double numb) { if (numb>=0) return numb; return numb*(-1); } int main() { long double angl, calculatedsin=0, Maclaurinseries=1, sinlib; int k=0, n, acc,iteration; printf(" Please, enter angle "); scanf("%lf", &angl); printf(" Please, enter accuracy: "); scanf("%d", &acc); printf("Enter,how many iterations do you want: "); scanf("%d",&iteration); sinlib=sin(angl); for(;angl<- pi|| angl>pi ;) { k=angl/pi; angl=angl-(2*k*pi); }
for(n=0;n<iteration && mod(Maclaurinseries)>(1/(p(10,acc)));n++) { Maclaurinseries=p((-1),n)*(p(angl,(2*n+1))/factorial(2*n+1)); calculatedsin=calculatedsin+Maclaurinseries; // Ряд Маклорена для синуса } acc++; printf("Sin from your entered angle = "); printf("%.*lf \n", acc,calculatedsin); printf("For comparison, library sin = "); printf("%.16lf \n", sinlib); getch(); return 0; }
Рекурсивное транспонирование по главной диагонали #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; }
|
|
Последнее изменение этой страницы: 2017-09-12 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |