Возр и б в 3 по возр #include<stdio.h> #include<conio.h> #define n1 3 #define n2 5 void main() {int a1[n1], a2[n2], a3[n1+n2], i1, i2, i3, k; clrscr(); fflush(stdin); printf("\nVvedite uporyadochennyi po vozrastaniyu massiv #1:\n"); for (i1=0;i1<n1;i1++) { printf("a1[%d]=",i1); scanf("%d",&a1[i1]); if (a1[i1]<=a1[i1-1] && i1>0) /*i1>0 chtoby ne sveryal s pustotoi*/ {puts("Nevernyi vvod! Povtorite pravil'no!"); fflush(stdin); i1--; continue;} } fflush(stdin); printf("\nVvedite uporyadochennyi po ubyvaniyu massiv #2:\n"); for (i2=0;i2<n2;i2++) { printf("a2[%d]=",i2); scanf("%d",&a2[i2]); if (a2[i2]>=a2[i2-1] && i2>0) {puts("Nevernyi vvod! Povtorite pravil'no!"); fflush(stdin); i2--; continue;} } k=0; //schetchik i1=i3=0; //1 i 3 massivy stoyat na nachale i2=n2-1; //2 massiv stoit na konce while (k!=n1+n2) //poka schtchik ne dostignet razmernosti n1+n2 {if (a1[i1]<=a2[i2] && i1<n1) //esli element pervogo men'sche { // vtorogo,to perepisivaem v 3 a3[i3]=a1[i1]; i1++;} else {if (i2>=0) //v protivnom sluchae postupaem naoborot { a3[i3]=a2[i2]; i2--; } } i3++; //uvelichivaem index 3 massiva k++; //uvelichivaem schetchik if (i1==n1)//esli pervyi massiv konchilsya for (i2;i2>=0;i2--)//prosto perepisyvaem 2 massiv v 3 { a3[i3]=a2[i2]; i3++; k++; } if (i2<0) //naoborot for (i1;i1<n1;i1++) { a3[i3]=a1[i1]; i3++; k++;} } puts("\n"); for (i3=0;i3<(n1+n2);i3++) //vyvodim 3 massiv printf ("%5d",a3[i3]); puts("\n\nNazhmite any key i vyidite iz programmy...\n"); getch();} НОД рекурсией #include <stdio.h> int NOD(int n, int m); main() { int n, m; int nod; scanf("%d%d", &n, &m); nod = NOD(n, m); printf("%d \n", nod); return 0;} int NOD(int n, int m) { int t; if (n<m) { t=n; n=m; m=t;} /* n >= m */ if (n%m==0) {return m;} else return NOD(n%m, m);} сорт вставкоми в пор.убыв #define kl 5 void main() {int ms[kl],i,j,m,kk; //vvod for(i=0;i<kl;i++) scanf("%d",&ms[i]); /*Sortirovka vstavkami*/ for(i=1;i<kl;i++) {j=i-1;kk=ms[i]; while(j>=0 && kk>ms[j]) ms[j-- +1]=ms[j];ms[j+1]=kk;} for(i=0;i<kl;i++) printf("%4d",ms[i]);} Макс слово с пом. Ф-и /*Slovo s max kolichestvom bukv*/ int get_str(char*,int); #include<stdio.h> #include<conio.h> #include<stdlib.h> void main() { char *st; int i,j,k; int sum,max; int a,b;//granicy slova clrscr(); puts("Vvedite razmernost' stroki:"); scanf("%d",&k); st=(char*)calloc(k,sizeof(char)); if(!st) { puts("Malo pamyati!"); return;} fflush(stdin); puts("\nVvedite text:"); get_str(st,k); max=0; for(i=0;i<k;i++) { sum=0; if(*(st+i)==' ') i++; if(*(st+i)!=' ') { j=i; while(*(st+j)!=' ' && *(st+j++)) sum++; if(max<sum) { max=sum; a=i; b=j-1; i=j-1;} else i=j-1;} } printf ("\nKolichestvo bukv v max slove =%d",max); puts("\nSlovo s max kol-vom bukv:"); for (i=a;i<b+1;i++) printf("%c",*(st+i)); getch(); } int get_str(char *st,int k) { int c,i=0; while(--k>0 && (c=getchar())!='\n' && c!=13) *(st+i++)=c; *(st+i)='\0'; return i-1;} реверсия слов в масс строк #include<stdio.h> #include<conio.h> #include<stdlib.h> #define n 3 void revs(char* m) {int l; static int i,k; char *s; l=0; while(m[i]!=' '&&m[i]!='\0') { l++; i++;} s=(char*)malloc(l*sizeof(char)); for(k=0;k<l;k++) s[k]=m[i-l+k]; if(m[i]) { i++; revs(m); m[i++]=' '; for(k=0;k<l;k++,i++) m[i]=s[k]; m[i]='\0';} else { i=0; for(k=0;k<l;k++,i++) m[i]=s[k]; m[i]='\0';}} void revb(char* m) {static int i,j; char c; c=m[i++]; if© { revb(m);} else {i=0; j=0; return;} m[j++]=c; return;} main() {int i,f; char m[100]; clrscr(); for (f=0;f<=n;f++) {gets(m); i=0; while(m[i]) i++; revb(m); puts(m);} getch(); return 0;} седловая точка void main() {int **p,i,j,k,n,i1,i2,j1,t,m; //Razmernost' stroki scanf("%d",&k); p=(int**)malloc(k*sizeof(int*)))) //Razmernost' stolbca scanf("%d",&n); for (i=0;i<n;i++) *(p+i)=(int*)malloc(n*sizeof(int)) //vvod matricy for (i=0;i<k;i++) for (j=0;j<n;j++) scanf("%d",(*(p+i)+j)); /*Poisk sedlovoi tochki*/ for(i=0;i<k;i++) {t=*(*(p+i)+0);i1=i; j1=0;for(j=1;j<n;j++) if(*(*(p+i)+j)>t) {t=*(*(p+i)+j);i1=i; j1=j;} m=0; for(i2=0;i2<k;i2++) if(*(*(p+i1)+j1)>=*(*(p+i2)+j1) && i1!=i2) m=1; if(!m){printf("\nNaidena sedlovays tochka %d c koordinatami: %d-stroka,%d-stolbec",*(*(p+i1)+j1),i1+1,j1+1); break;}}} Фиббоначи #include<conio.h> #include<stdio.h> void fib(int n); void main() {int a[100],i,k; clrscr(); printf("Vvedite kolichestvo chisel:\n"); scanf("%d",&k); for(i=0;i<k;i++) {printf("a[%d]=",i); scanf("%d",&a[i]);} for(i=0;i<k;i++) fib(a[i]); getch();} void fib(int n) {int i; long c1=1,c2=1,c; switch(n) {case 0: break; case 1: printf("\n1"); break; default: printf("\n1 1 "); for(i=2;i<n;i++) {c=c1+c2; printf("%3d",c); c1=c2; c2=c;}}} сорт слов через ком.стр #include<stdio.h> #include<conio.h> #include<stdlib.h> void main(int argc,char** argv) {int i,j,k,z; char *c; clrscr(); for(i=1;i<argc-1;i++) for(j=1;j<argc-i;j++) { k=0; while(!(z=*(*(argv+j)+k)-*(*(argv+j+1)+k))) k++; if(z>0) { c=*(argv+j); *(argv+j)=*(argv+j+1); *(argv+j+1)=c;} } for(i=1;i<argc;i++) puts(*(argv+i)); return;} рек. Перевод из одн.сс в друг #include <stdio.h> #include <stdlib.h> #include <conio.h> char* f(int n, int k, int p, char*s); main() {int n, p, k, n1; char *s; printf("Enter n, p: "); scanf("%d%d", &n, &p); k=0; n1=n; while (n>0) { n/=p; ++k; } s=(char*) calloc(k+1, sizeof(char)); s=f(n1, k-1, p, s); printf("Result: \n"); puts(s); free(s); getch(); return 0;} char* f(int n, int k, int p, char*s) { int ost; if (n>0) { ost=n%p; if (ost<10) { s[k]=ost+'0';} else {s[k]=ost-10+'A';} f(n/p, k-1, p, s); } return s;} ком.стр. посл слово реверс. main(int argc, char **argv) { int i, j; char tmp[256]; char **s; int n; n = argc-1; s = (char **) calloc(n, sizeof(char*)); for (i=0; i<n; ++i) {s[i] = (char *) calloc(256, sizeof(char)); strcpy(s[i], argv[i+1]); } printf("Args were: \n"); for (i=0; i<n; ++i) printf("#%d : %s \n", i, s[i]); for (i=n-1; i>=0; --i) for (j=0; j<i; ++j) if (strcmp(s[j], s[j+1]) > 0) { strcpy(tmp, s[j]); strcpy(s[j], s[j+1]); strcpy(s[j+1], tmp);} printf("Args became: \n"); for (i=0; i<n; ++i) printf("#%d : %s \n", i, s[i]);} Обнуление #include<stdio.h> #include<conio.h> #define n 10 void main () { int ms[n], i,k,a,b,j; puts ("\nVvod massiva"); for (i=0;i<n;i++) { printf("\nms[%d]=",i); scanf("%d",&ms[i]); } puts ("\nishodnyi massiv"); { for (i=0;i<n;i++) printf("%3d",ms[i]);} puts ("\nvvedite granicy intervala [a,b]"); scanf ("%d%d",&a,&b); for (i=0;i<n;i++) if (ms[i]>=a && ms[i]<=b) ms[i]=0; j=n-1; while (ms[j]==0) j--; for (i=0;i<j;i++) if (!ms[i]) { ms[i]=ms[j]; ms[j]=0; while (j>i && !(ms[j])) j--; if (i==j) break;} for (i=0;i<n;i++) printf("\n%5d",ms[i]); fflush(stdin); getch();} перев строк в числа #include<stdio.h> #include<conio.h> #include<stdlib.h> void smax(char**,int); void sorts(char**,int); void revs(char*); main() {char *u,**s=0; int i,j,k,z,n; double *m,p; clrscr(); { printf("\n BBEDITE STROKI \n"); u=(char*)malloc(100*sizeof(char)); if(s) {for(i=0;i<10;i++) if(*(s+i)) free(*(s+i)); free(s);} s=(char**)calloc(10,sizeof(char*)); for(i=0;i<10;i++) {gets(u); if(*u=='\0') { n=i; break;} j=0; while(*(u+j)!='\0') j++; *(s+i)=(char*)malloc((j+1)*sizeof(char)); for(k=0;k<j+1;k++) *(*(s+i)+k)=*(u+k); *(*(s+i)+k)='\0'; } free(u); } m=(double*)calloc(n,sizeof(double)); for(i=0;i<n;i++) { j=0; if(*(*(s+i)+j)=='-') {j++; z=-1; } else z=1; while(*(*(s+i)+j)!='.'&&*(*(s+i)+j)!='\0') {m[i]=(m[i]*10)+(*(*(s+i)+j)-'0'); j++; } if(*(*(s+i)+j)=='.') {j++; p=1; while(*(*(s+i)+j)) { p/=10; m[i]+=(*(*(s+i)+j)-'0')*p; j++;}} m[i]*=z; printf("%lf\n",m[i]);} getch();} сумма int и float #include <stdio.h> #include <stdlib.h> #include <stdarg.h> enum Type { End, Float, Int}; float f(...); main() { float sum; sum = f(Int, 5, Float, 7.3, Int, 2, End); printf("%5.3f\n", sum); return 0;} float f(...) { float sum=0; Type type; int int_var; float float_var; va_list a; va_start(a, 0); while ( (type = va_arg(a, Type) ) != End) {if (type==Int) { int_var = va_arg(a, int); sum+=(float) int_var;} else if (type==Float) { float_var = va_arg(a, double); sum+=(float)float_var;}} va_end(a); return sum;} Ввод строк.сумма.длина. char *str_cat(char*,char*,int); int get_str(char*,int); int str_len(char*); #include<stdio.h> #include<stdlib.h> #include<conio.h> void main () { char *st,*ss,*tmp=""; int i,j,k,n; clrscr(); puts("Vvedite razmernost' 1-oi stroki:"); scanf("%d",&n); if(!(st=(char*)calloc(n,sizeof(char)))) {puts("Malo pamyati!"); getch(); return;} puts("Vvedite razmernost' 2-oi stroki:"); scanf("%d",&k); if(!(st=(char*)calloc(k,sizeof(char)))) {puts("Malo pamyati!"); getch(); return;} fflush(stdin); puts("\nVvedite text stroki,kuda budem vstavlyat':"); get_str(st,n); puts("\nVvedite stroku, kotoruyu nado vstavit':"); get_str(ss,k); puts("\nVvedite index, s kotorogo nado vstavit' stroku:\n"); scanf("%d",&j); tmp=str_cat(st,ss,j); free(st); st=tmp; puts(st); getch(); } int get_str(char *st,int n) { int c,i=0; while(--n>0 && (c=getchar())!='\n' && c!=13) *(st+i++)=c; *(st+i)='\0'; return i-1;} char *str_cat(char *s1,char *s2,int k) {char *ss; int i; if(k>str_len(s1)) k=str_len(s1); ss=(char*)malloc(str_len(s1)+str_len(s2)); if(!ss) {puts("Malo pamyati!"); return 0;} for(i=0;i<k;i++) *(ss+i)=*(s1+i); for(i=0;*(s2+i);i++) *(ss+k+i)=*(s2+i); *(ss+k+i)=' '; for(i=0;*(ss+k+str_len(s2)+i-1)=*(s1+k+i);i++); *(ss+k+str_len(s2)+i)='\0'; free(s1); s1=ss; return s1;} int str_len(char *s) {for(int t=0;*(s+t);t++); return t;} обнул.чисул на глав диаг #include <stdio.h> main() {int a[128][128]; int i, j, n; scanf("%d", &n); for (i=0; i<n; ++i) for (j=0; j<n; ++j) scanf("%d", &a[i][j]); for (i=0; i<n; ++i) for (j=0; j<i; ++j) if (a[i][i] == a[j][j]) a[i][i] = 0; for (i=0; i<n; ++i) {for (j=0; j<n; ++j) { printf("%4d", a[i][j]);} printf("\n"); } return 0;} сорт.мас.строк.(пузырь) #include<stdio.h> void main() {int mas[3][4], i = 0, j = 0, m = 3, n = 4; for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&mas[i][j]); // sortirovka scanf("%d",&i); for(j=0;j<n;j++) for(int k=n-1;k>j;k--) if(mas[i-1][k]<mas[i-1][k-1]) {int buf = mas[i-1][k]; mas[i-1][k] = mas[i-1][k-1]; mas[i-1][k-1] = buf;}} Перевод из одн.сс в другую #include<stdio.h> #include<conio.h> #include<stdlib.h> main() {int t,i,j,c2,r,s; double c1; char c,m[40]; printf("BBEDITE 4ICLO: "); scanf("%lf",&c1); printf("BBEDITE TO4HOCTb: "); scanf("%d",&t); printf("BBEDITE OCHOBAHIE CC:"); scanf("%d",&s); if(c1<0) {//otr li 4iclo? c1*=-1; //perev v pologit. c='-';} else c='0'; c2=c1; //celaia 4astb c1-=c2; //drobnaia 4astb i=20; //na4 zna4enia j=21; do { r=c2%s;//ostatok ot delenia c2/=s; //celaia 4astb ot delenia if(r>9) m[i--]=r-10+'A';//zapisb v massiv else m[i--]=r+'0'; }while(c2>0);//poka cel 4astb ne obnulitsia if(c=='-') m[i--]=c;//dopisivaem znak if(c1>0)//estb li dr 4astb? { m[j++]='.'; for(;t>0;t--,j++) //cikl s usloviem to4nosti { c1*=s; //umnog c2=c1; //videl celoi 4asti c1-=c2; //videl drobnoi 4acti if(r>9) m[j]=c2-10+'A';//zapisb v massiv else m[j]=c2+'0';}//no dr. 4astb obnulilasb} for(++i;i<j;i++) printf("%c",m[i]);//vivod na ekran c=getch(); return 0;} перв 5 букв #include <stdio.h> #include <stdlib.h> #include <string.h> main() {int n, m; char **s; int i, j, k; int begin, end; int st; int len; printf("Enter number of strings and max len: "); scanf("%d%d", &n, &m); s=(char**) calloc(n, sizeof(char*)); if (s == NULL) {printf("Not enough memory!\n"); return 1;} for (i=0; i<n; ++i) {s[i]=(char*) calloc(m, sizeof(char)); if (s[i] == NULL) {printf("Not enough memory!\n"); return 1; } } for (i=0; i<n; ++i) { printf("Enter %d-s string: ", i+1); fflush(stdin); gets(s[i]); } for (i=0; i<n; ++i) {st=0; len=strlen(s[i]); for (j=0; j<=len; ++j) {if (st==0) {if (((s[i][j]>='a') && (s[i][j]<='e')) || ((s[i][j]>='A') && (s[i][j]<='E'))) { begin = j; st = 1; } else if (((s[i][j]>='f') && (s[i][j]<='z')) || ((s[i][j]>='F') && (s[i][j]<='Z'))) { st = 2; } } else if (st==1) { if (((s[i][j]>='a') && (s[i][j]<='e')) || ((s[i][j]>='A') && (s[i][j]<='E'))) { } else if (((s[i][j]>='f') && (s[i][j]<='z')) || ((s[i][j]>='F') && (s[i][j]<='Z'))) { st = 2; } else { end = j; for (k=begin; k<end; ++k) { printf("%c", s[i][k]); } printf("\n"); st=0; } } else if (st==2) {if (((s[i][j]>='a') && (s[i][j]<='e')) || ((s[i][j]>='A') && (s[i][j]<='E'))) { } else if (((s[i][j]>='f') && (s[i][j]<='z')) || ((s[i][j]>='F') && (s[i][j]<='Z'))) { } else { st = 0; } } }} return 0;}