Билет 1. 1. Вывести 2 матрицы чисел, перемножить их, вывести результат. /* 1.1. С=А*В. #include #include void main() { int *m1,*m2,*m3,m,n,k,i,j,i1,i2,i3,j1,j2,j3; scanf("%d%d%d",&m,&n,&k); m1=(int*)malloc(m*n*sizeof(int)); m2=(int*)malloc(n*k*sizeof(int)); m3=(int*)calloc(m*k,sizeof(int)); for(i=0;i #include #include float atoi(char **s); void main(int argc, char ** argv) {int s; for(int i=1;i #include #define n 5 void main() { int *mas, i = 0, j = 0, buf = 0; mas = (int *) calloc(n*n, sizeof(int)); for(i=0;i #include void main() {char *s,c; int n; s=(char*)malloc(100*sizeof(char)); gets(s); n=0; while (*(s+n)!=' ' && *(s+n)) n++; n--; for(int i=0;i<(n+1)/2;i++) {c=*(s+i); *(s+i)=*(s+n-i); *(s+n-i)=c; } puts(s); } Билет 3. 1. Ввести символьную строку, и для каждого числа найти числа Фиббоначи. (Функцию с помощью рекурсии передать в main.) /*3.1 .fibon*/ #include #include int fin(int); void main() {int *m,n,i; scanf("%d",&n);//razm. massiva m=(int*)malloc(n*sizeof(int)); for(i=0;i #include int length(char *s) { for(int i=0;*(s+i);i++); return i;} void main() {char *str,*word; int leng,len=0,ch=0; str=(char*)malloc(256*sizeof(char)); gets(str); leng=length(str); *(str+leng)=' '; int j=0; for(int i=0;ilen) {len=ch; word=str+j; ch=0; j=i+1;} else {ch=0; j=i+1; } } printf("\nlen=%d\n",len); for(i=0;i0; --i) for (j=0; j a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } 2. Ввести 2 строки. Вставить одну строку в N-ую позицию второй строки. 4.2 main() { char *a, *b; int n, m, k, i; printf("Enter n, m: "); scanf("%d%d", &n, &m); a = (char*) calloc(n+m+1, sizeof(char)); if (a==NULL) { printf("Not allocated!"); return 1; } b = (char*) calloc(m+1, sizeof(char)); if (b==NULL) { printf("Not allocated!"); return 1; } fflush(stdin); gets(a); gets(b); printf("Enter position: "); scanf("%d", &k); for (i=n-1; i>=k; --i) a[m+i]=a[i]; for (i=0; i #include #include double fun(double); double trap(double(*)(double), double,double,double,double); void main() {double(*f)(double),a,b,e,n; scanf("%lf%lf%lf%lf",&a,&b,&e,&n); f=fun; printf("Integral=%lf",trap(f,a,b,e,n)); } double trap(double(*f)(double),double a,double b,double e,double n) {double y1,y2=0,x,h; h=(b-a)/n; do {y1=y2; y2=0.5*((*f)(b)+(*f)(a)); for(x=a+h;x<=b-h;x+=h) y2+=(*f)(x); y2*=h; h/=2; } while(fabs(y1-y2)>e); return y2; } double fun(double x) { return x-1; } Билет 6. 1. C помощью функций ввести и отсортировать массив строк. 6.1 int str_cmp(char*,char*); void copy(char*,char*); void sort(int size,char str[][80]) {int i,j;char tmp[80]; for(i=0;i0) {copy(tmp,str[i]); copy(str[i],str[j]); copy(str[j],tmp);}} void copy(char *s1,char*s2) {while(*s1++=*s2++);} int str_cmp(char *s1,char *s2) {while(*s1 || *s2) if(*s1-*s2) return *s1-*s2; else {s1++;s2++;}} void main() {char arr[10][80]; int num,i; do{printf("Vvedite kol-vo strok:\n"); scanf("%d",&num);}while(num>10); for(i=0;i0; --i) for (j=0; j a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } 2. Ввести массив строк и сделать рекурсивную функцию которая будет делать реверс каждой строки. void f(char*, int, int); main() { char **s; int n, m; int i; printf("Enter N: "); scanf("%d", &n); printf("Enter max len: "); scanf("%d", &m); fflush(stdin); s = (char**) calloc(n, sizeof(char*)); if (s == NULL) { printf("Couldn't alloc!\n"); return 1; } for (i=0; i #include #include int* vstav(int len, int *mas) {register int i, j, kk; for(i=1;i=0 && kk<=mas[j]) mas[j-- +1]=mas[j]; mas[j+1]=kk;} return mas; } void main() { int *mas,len=5; mas=(int*)malloc(len*sizeof(int)); for(int i=0;i=0; --i) for (j=0; j 0) { strcpy(tmp, s[j]); strcpy(s[j], s[j+1]); strcpy(s[j+1], tmp);} printf("Args became: \n"); for (i=0; i #include main () {int i,i1,i2,j1,j2; char s[20],c; gets(s); for(i=0;i<20;i++) if(!i || ((s[i-1]==' ')&&(s[i]!=' '))) {i1=i; while(s[i]!=' ') i++; i2=i; break; } for(i;i<20;i++) if(!i || ((s[i-1]==' ')&&(s[i]!=' '))) {j1=i; while(s[i]!=' ') i++; j2=i; break; } for(i=i1;i<(i1+j2)/2;i++) {c=s[i]; s[i]=s[i+j1]; s[i+j1]=c; } printf("%s\n",s); getch (); return 0;} 2. Перевести число из одной системы счисления с другую не рекурсивно.. 9.2 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); } 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; } Билет 10. 1. Ввести текст и почитать за один проход количество обычных цифр и букв латинского алфавита, вывести их. 10.1 main() { char s[1024]; int cnt[256]; int i, n; printf("Enter string: \n"); gets(s); for (i=0; i<256; ++i) cnt[i]=0; for (i=0; s[i]!='\0'; ++i) { cnt[s[i]]++; } for (i=0; i<256; ++i) { if (cnt[i] > 0) { printf(" %c : %d time(s) \n", i, cnt[i]); } } } 2. Написать ф – цию сложения двух чисел (int и float) используя макросы (va_list и va_start) 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); } 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; } Билет 11. 1. Отсортировать слова введенные через командную строку в алфавитном порядке. 11.1 #include #include #include void main(int argc,char** argv) {int i,j,k,z; char *c; clrscr(); for(i=1;i0) { c=*(argv+j); *(argv+j)=*(argv+j+1); *(argv+j+1)=c;} } for(i=1;i #include double fun(double); void main() {double a,b,c,e,fa,fb,fc; scanf("%lf%lf%lf",&a,&b,&e); fa=fun(a); fb=fun(b); if(fa*fb>0) {printf("Net kornei"); return; } else do {c=(a+b)/2; fc=fun(c); if(fa*fc<0) b=c; if(fb*fc<0) a=c; } while(fabs(a-b)= eps); return s; } double f1(double x) { return x*x; } 2. в main ввести строки, написать: А) функции, которая находит слово max длины. Б) Переставить символы в этом слове. double tr(double(*f1)(double),double a,double b,double e,int n) {double y2=0.,y1,x,h=(b-a)/n; do{y1=y2; y2=0.5*((*f1)(a)+(*f1)(b)); for(x=a+h;xe); return y2;} void revers(char*,int); int beg=0; int i=0; int j=0; void main () { char *st; int t=0; int num=0,max=0; int n; clrscr(); puts("Vvedite razmernost' stroki:"); scanf("%d",&n); if(!(st=(char*)calloc(n,sizeof(char)))) {puts("Malo pamyati!"); getch(); return;} fflush(stdin); puts("\nVvedite text:"); get_str(st,n); while(*(st+j)) { num=0; while (*(st+j)==' ') j++; while(*(st+j)!=' ' && *(st+j)) { num++; j++;} if(max int nod(int,int); void main() {int a,b; scanf("%d%d",&a,&b); printf("NOD=%d",(a>b)?nod(a,b):nod(b,a)); } int nod(int a,int b) { return (!b)?a:nod(b,a%b);} 2. Дана матрица строк. Вывести слова, состоящие из пяти первых букв алфавита, новый массив не создавать и исходный не изменять. main() { int n, m; char **s; int i, j, k, begin, end, st, len; printf("Enter number of strings and max len: "); scanf("%d%d", &n, &m); s=(char**) calloc(n, sizeof(char*)); for (i=0; i='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 { } } 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='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; } } } } } Билет 14 1. Сортировка массива Шейкером. #define kl 5 void main() {int ms[kl],i,a,b=kl-1,c=1,d=kl-1; //vvod for(i=0;i=c;i--) if(ms[i-1]>ms[i]) {a=ms[i];ms[i]=ms[i-1]; ms[i-1]=a;b=i;} c=b+1; for(i=c;i<=d;i++) if(ms[i-1]>ms[i]) {a=ms[i];ms[i]=ms[i-1]; ms[i-1]=a;b=i;} d=b-1;} while(c<=d); //vyvod for(i=0;i #include #include 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 void rec () { char i; scanf ("%c", &i); if (i != '0') rec (); else printf ("Result: "); printf ("%3c", i); } void main () { printf ("Enter numbers: \n"); rec (); } 2. В функцию с переменным числом параметров передаются «К» массивов и вывести массив с большей суммой элементов. Билет 16 1. Ввести массив К строк, найти макс. Слово с помощью функции 16.1 /*12.cppmax_len_str.*/ #include #include int length(char *s) { for(int i=0;*(s+i);i++); return i;} void main() {char *str,*word; int leng,len=0,ch=0; str=(char*)malloc(256*sizeof(char)); gets(str); leng=length(str); *(str+leng)=' '; int j=0; for(int i=0;ilen) {len=ch; word=str+j; ch=0; j=i+1;} else {ch=0; j=i+1; } } printf("\nlen=%d\n",len); for(i=0;i0) { n/=p; ++k; } s=(char*) calloc(k+1, sizeof(char)); s=f(n1, k-1, p, s); printf("Result: \n"); puts(s); free(s); } 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; } Билет 17 1. дан мас цч за 1 прох опр какие числа в какой дес вх кейс не исп 2. ??? Билет 18 1. В указат. на указат. сделать массив и отсортировать главную диагональ. 2. Ввести массив строк, содержимое (фамилии) отсортировать по алфавиту Билет 19 1. Транспонировать матрицу while`Ом 19.1 int** f1(int** ,int); main() { int **a,i,j,n,m; printf("Enter n:"); scanf("%d",&n); m=n; a=(int**) calloc(n, sizeof(int*)); for(i=0;i=0 && kk>ms[j]) ms[j-- +1]=ms[j];ms[j+1]=kk;} for(i=0;i= eps); return s; } double f1(double x) { return x*x+2; } 2. Ввести матр. При помощи функц. С циклом while и обнулить. Повтор числа обнулить. 21.2 #include #include #define N 5 void main() { int a[N],i,j,t; i=0; clrscr(); while(i=c;i--) if(ms[i-1]>ms[i]) {a=ms[i];ms[i]=ms[i-1]; ms[i-1]=a;b=i;} c=b+1; for(i=c;i<=d;i++) if(ms[i-1]>ms[i]) {a=ms[i];ms[i]=ms[i-1]; ms[i-1]=a;b=i;} d=b-1;} while(c<=d); //vyvod for(i=0;i0 && (c=getchar())!='\n' && c!=13) *(st+i++)=c; *(st+i)='\0'; return i-1; } Билет 23 1. Создать функцию с переменным числом параметров в которую передается К массивов и вывести массив с минимальной суммой элементов. #include #include int* fm(int*,...); main() { int a[6]={6,2,3,4,6,75}; int b[7]={7,34,42,5,456,35,65}; int c[4]={4,2,234,6},*k,*t,i; *k=3; t=fm(k,a,b,c); for(i=0;i<*t;i++) printf("%-4d",*(t+i)); printf("Press any key to exit"); getchar(); } int* fm(int *k, ...) { int **p=&k,s=0,s_m=0,i,g; p++; for(i=1;i<**p;i++) s_m+=*(*p+i); g=*k; *k--; p++; while(*k>0) { for(i=1;i<**p;i++) s+=*(*p+i); if(s_m>s) { g=*k; s_m=s; } p++; s=0; --*k; } while(g!=*k) { p--; *k++; } printf("Minimal sum is: %d\n",s_m); return *p; } 2. Перевернуть последнее слово в строке и вывести (рекурсия) #include #include int slen(char*); void revers(char*,int); char* last(char*); main() { char str[]="Some string"; char* l; printf("Lenght: %i",slen(str)); revers(l=last(str),0); printf("\nNow: %s\nPress any key to exit",l); getchar(); } int slen(char* str) { int i; for(i=0;*(str+i);i++); return i; } void swap(char *px, char *py) { char tmp; tmp=*px; *px=*py; *py=tmp; } void revers(char* str, int i) { swap(str+i,str+slen(str)-i-1); if(++i #include #define N 5 void main() { int a[N],b[N],i,j,t; i=0; clrscr(); do { scanf("%d",&a[i]); i++; }while(i #include void rev_main_diag(int**,int,int); void swap(int*,int*); main() { int **ms,i,j; ms=(int**)malloc(3*sizeof(int*)); fflush(stdin); for(i=0;i<3;i++) { *(ms+i)=(int*)malloc(3*sizeof(int)); for(j=0;j<3;j++) { printf("Enter [%i][%i] element: ",i,j); scanf("%i",*(ms+i)+j); } } fflush(stdin); rev_main_diag(ms,3,0); for(i=0;i<3;i++) { printf("\n"); for(j=0;j<3;j++) printf("%-4i",*(*(ms+i)+j)); } printf("\nPress any key to exit\n"); getchar(); } void rev_main_diag(int **ms, int n, int i) { if(i>n/2) return; swap(*(ms+i)+i,*(ms+n-i-1)+n-i-1); rev_main_diag(ms,n,++i); } void swap(int *px, int* py) { int tmp; tmp=*px; *px=*py; *py=tmp; } 2. В main вводится массив строк. Строки передаются в функцию и задается символ , который нужно удалить. #include #include char* del(char*, char); main () { char** txt; int i; txt=(char**)malloc(2*sizeof(char*)); printf("Enter text: "); for(i=0;i<2;i++) { *(txt+i)=(char*)malloc(30*sizeof(char)); gets(*(txt+i)); } for(i=0;i<2;i++) txt[i]=del(txt[i],'a'); for(i=0;i<2;i++) puts(*(txt+i)); return 0; } char* del(char *str,char c) { int i,j; for(i=0;*(str+i);i++) if(*(str+i)==c) for(j=i;*(str+j);j++) *(str+j)=*(str+j+1); return str; }