bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [157]
АВС [6]
КПиЯП [80]
ОАиП [305]
ОКТ [79]
СиСПО [8]
Форма входа
Логин:
Пароль:
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » ПОИТ » ОАиП

Шпоры
Подробности о скачивании 23.09.2010, 18:36
Помен.1 и 2 местами
#include <conio.h>
#include <stdio.h>
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;}
ввод стр. нах. Max слово
int beg=0,i=0,j=0;
void main ()
{char *st;
int t=0,num=0,max=0,n;
//razmernost' stroki
scanf("%d",&n);
st=(char*)calloc(n,sizeof(char));
//Vvedite text:");
gets(st);
while(*(st+j))
{num=0;
while (*(st+j)==' ')//propusk probelov
j++;
while(*(st+j)!=' ' && *(st+j))
{num++; //kolichestvo bukv v slove
j++;}
if(max<num)//zapominaem kolichestvo bukv
{max=num; beg=j-max; //zapomnim nachalo slova
num=0;}}
for(i=beg;i<beg+max;i++)
puts(st);
getch();}
2 стр. Встов 1 стр во 2
char *str_cat(char*,char*,int);
int get_str(char*,int);
int str_len(char*);
void main ()
{char *st,*ss,*tmp="";
int i,j,k,n;
scanf("%d",&n);//razmernost' 1-oi stroki
if(!(st=(char*)calloc(n,sizeof(char))))
{puts("Malo pamyati!");return;}
scanf("%d",&k);//razmernost' 2-oi stroki
//выделение памяти
get_str(st,n);//kuda budem vstavlyat'
get_str(ss,k);//kotoruyu nado vstavit'
scanf("%d",&j);//index, s kotorogo nado vstavit'
tmp=str_cat(st,ss,j);free(st);
st=tmp;puts(st);}
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));
for(i=0;i<k;i++) *(ss+i)=*(s1+i);
for(i=0;*(s2+i);i++) *(ss+k+i)=*(s2+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;}
ввод масс.цел.чис и сорт Шелла
#define kl 5
void main()
{int ms[kl],i,j,dp,a;
//vvod
for(i=0;i<kl;i++)
{printf("ms[%d]=",i);
scanf("%d",&ms[i]);}
/*Sortirovka Shella*/
for(dp=kl/2;dp>0;dp/=2)
for(i=dp;i<kl;i++)
for(j=i-dp;(j>=0) && (ms[j]>ms[j+dp]);j-=dp)
{a=ms[j];ms[j]=ms[j+dp];ms[j+dp]=a;}
//vyvod
for(i=0;i<kl;i++) printf("%4d",ms[i]);}
ввести неск.чисел выв.В обр пор
void func();
int k;
void main()
{//количество чисел
scanf("%d",&k);
//ввод чисел
func();}
void func()
{static i; int j;
scanf("%d",&j);
i++;
if(i<k) func();
printf("\n%d:%d",i--,j);}
нах 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;x<b;x+=h) y2+=(*f1)(x);
y2*=h; h/=2;}while(fabs(y1-y2)>e);
return y2;}
void revers(char*,int);
int beg=0;//nachalo naidennogo slova
int i=0; //indexy
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); //do etgo momenta vvod
while(*(st+j))
{ num=0;
while (*(st+j)==' ') //propusk probelov
j++;
while(*(st+j)!=' ' && *(st+j))
{ num++; //kolichestvo bukv v slove
j++;}
if(max<num)//zapominaem kolichestvo bukv
{max=num;
beg=j-max;
//zapomnim nachalo slova
num=0; }
}
i=beg;//peredaem nachalo slova
revers(st,max);
puts(st);
getch(); }
void revers(char *st, int max) //revers
{int t=beg+max-1; //konec slova
char c;
if(i<t && *(st+i) && *(st+i)!=' ')
{c=*(st+i); *(st+i)=*(st+t);*(st+t)=c;
i++;t--;revers(st,max-1);}}
Ук на ук и отс.главн.диаг.
void sort(int k,int** mt)
{int i,j;
for(i=0;i<k;i++)
for(j=k-1;j>i;j--)
if(*(*(mt+i)+i)>*(*(mt+j)+j))
{int tmp=*(*(mt+i)+i);
*(*(mt+i)+i)=*(*(mt+j)+j);
*(*(mt+j)+j)=tmp;}}
void main()
{int **p,i,j,k;
printf("\nRazmernost' stroki i stolbca:");
scanf("%d",&k);
if (!(p=(int**)malloc(k*sizeof(int*))))
{puts("Malo pamyati!");return;}
for (i=0;i<k;i++)
if (!(*(p+i)=(int*)malloc(k*sizeof(int))))
{puts("Malo pamyati!");for (j=0;j<i;j++)
free (*(p+j));free (p);return;}
//vvod matricy
for (i=0;i<k;i++)
for (j=0;j<k;j++)
{printf("mt[%d][%d]=",i,j);
scanf("%d",(*(p+i)+j));}
/*Vyvod matricy do sortirovki*/
for (i=0;i<k;i++){printf("\n");
for (j=0;j<k;j++)
printf("%5d",*(*(p+i)+j));}
sort(k,p);
/*Vyvod matricy s otsortirovannym*/}
масс.стр. содерж по алф.
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;i<size-1;i++)
for(j=i+1;j<size;j++)
if(str_cmp(str[i],str[j])>0)
{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;i<num;i++)
gets(arr[i]);//vvod}
sort(num,arr);
printf("\nOtsortirovannye stroki:\n");
for(i=0;i<num;i++) puts(arr[i]);}
транс while’ом
void trans2(int **mt,int n)
{int i=0,j,tmp;
while(i<n)
{j=i+1;
while(j<n)
{tmp=*(*(mt+i)+j);
*(*(mt+i)+j)=*(*(mt+j)+i);
*(*(mt+j)+i)=tmp;
j++;}i++;}}
void main()
{int **p,i,j,k;
scanf("%d",&k);
p=(int**)malloc(k*sizeof(int*))))
for (i=0;i<k;i++) *(p+i)=(int*)malloc(k*sizeof(int))))
//vvod matricy
for (i=0;i<k;i++)
for (j=0;j<k;j++)
scanf("%d",(*(p+i)+j));
trans2(p,k);}
Сорт. Шейкера
#define kl 5
void main()
{int ms[kl],i,a,b=kl-1,c=1,d=kl-1;
//vvod
for(i=0;i<kl;i++) scanf("%d",&ms[i]);
/*Sortirovka Shaker*/
do{for(i=d;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<kl;i++)
printf("%4d",ms[i]);}
помен.1 и посл. Слово
void main ()
{char *st,*st1;
int t=0,num1=0,num2=0,n,k=0;
int beg1=0,end2=0,i=0,i1=0;
int j=0,j1=0;
//razmernost' stroki
scanf("%d",&n);
st=(char*)calloc(n,sizeof(char));
//Vvedite text:");
k=get_str(st,n);
while (*(st+j)==' ')//propusk probelov
j++;
if(*(st+j)!=' ' && *(st+j)) beg1=j;
while(*(st+j)!=' ' && *(st+j))
{num1++;//schitaem kol-vo bukv v pervom slove
j++; if(*(st+j)==' ') break;}
i=k;//stavim index v konec stroki
while(*(st+i)==' ' && i!=0) //propusk probelov
i--;if(*(st+i)!=' ' && i!=0) //zapominaem konec slova
end2=i;
while(*(st+i)!=' ' && i!=0) //prohod po poslednemu slovu
{num2++;//schitaem kol-vo bukv v posled slove
i--; if(*(st+i)==' ') break;}
st1=(char*)calloc(k+1,1);//sozdaem novuyu stroku
i1=0; i=0; j=0;
while(*(st+t))
{while(i!=beg1 && *(st+i)) //perezapis' stroki do pervogo slova
{*(st1+i1)=*(st+i); i++;
i1++; t++; }
if(i==beg1)//esli doshli do pervogo slova
j=end2-num2+1;//stanovimsya v nachalo poslednego slova
while(j<end2+1) //poka ne do konca stroki
{*(st1+i1)=*(st+j); j++;
i1++; t++; }
if(j==end2+1)//esli konec stroki
i=beg1+num1;//
while(*(st+i) && i!=end2-num2+1)//do nachala poslednego slova
{*(st1+i1)=*(st+i); //perepisyvaem stroku
i++; i1++; t++; }
if(i==end2-num2+1) //esli nachalo vtorogo slova
j=beg1;//ot nachala pervogo slova
while(*(st+j)!=' ' && *(st+j))
{*(st1+i1)=*(st+j); j++;
i1++; t++; }
if(*(st+j)!=' ') { i=end2+1;
while(i<k+1) //dozapis' stroki
{*(st1+i1)=*(st+i);
i++; i1++; t++; } }
*(st1+i1)='\0'; }
free(st);
st=st1;
puts(st); }
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; }
перемню м. чере do while
#define n1 3
#define n2 4
#define n3 3
void main()
{int i,j,k,n,t,a[n1][n2],b[n2][n3],c[n1][n3];
//vvod matricy
for (i=0;i<n1;i++)
for (j=0;j<n2;j++)
scanf("%d",&a[i][j]);
//vvod matricy
/*Vyvod matric*/
for (i=0;i<n1;i++)
{printf("\n");
for (j=0;j<n2;j++)
printf("%5d",a[i][j]);}
/*Peremnozhenie matric*/
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<n2);
j++;} while(j<n3);
i++;}while(i<n1);
/*Vyvod matricy C*/}
реверс главн.диаг.
void revers(int k,int** mt)
{static i,j=k-1;
int tmp=*(*(mt+i)+i);
*(*(mt+i)+i)=*(*(mt+j)+j);
*(*(mt+j)+j)=tmp;
i++;j--;
if(i<j) revers(k,mt);
i--;j++;}
Удаление символа
void swap(char*);//funkcia zameny elementov
void del(char**,char);
void main()
{char **st,simv;
int i,j,k,n,t;
//количество строк
scanf("%d",&n);
st=(char**)calloc(n,sizeof(char*));
//количество символов
scanf("%d",&t);
for(i=0;i<t;i++)
*(st+i)=(char*)calloc(t,sizeof(char));
for(i=0;i<n;i++)
gets(*(st+i));
//символ для поиска
scanf("%c",&simv);
for(i=0;i<n;i++)
del(st+i,simv);
for(i=0;i<n;i++)
puts(*(st+i));
getch();}
void del(char *(*(st+i)),char simv)
{static j;
if(*(*(st+i)+j)==simv)
{if(*(*(st+i)+j+1))
swap(*(st+i)+j);}
else j++;
if(*(*(st+i)+j)) del(st+i,simv);}
void swap(char *pp)
{*pp=*(pp+1);
if(*pp) swap(pp+1);}
метод трапеции
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
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; }
прямоугольник
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double fun(double);
double rect(double(*)(double),double,double,double,double);
void main()
{double (*f)(double);
double a,b,e,n;
scanf("%lf%lf%lf%lf",&a,&b,&e,&n);
f=fun;
printf("Koren=%lf",rect(f,a,b,e,n));}
double rect(double(*f)(double),double a,double b,double e,double n)
{double y1,y2=0,h=fabs(a-b)/n,x;
do
{y1=y2;
y2=f(a)*h;
for(x=a+h;x<b-h;x+=h)
y2+=f(x)*h;
h/=2;}
while(fabs(y1-y2)>e);
return y2;}
double fun(double x)
{ return x-1; }
нах. логорифма
#include<stdio.h>
#include<conio.h>
#include<math.h>
int fact(int n);
void main()
{int n,i,ch=1;
double x,e,sum=0;
puts("Vvedite chislo, kolichestvo slagaemyx i tochnost':");
scanf("%lf%d%lf",&x,&n,&e);
for(i=1;i<=n && (pow(x-1,i)/i)>e;i++)
if(ch%2!=0)
{sum+=pow(x-1,i)/i;
ch++; }
else
{sum-=pow(x-1,i)/i;
ch++; }
printf("\nlnX = %lf",sum);}
факториал
#include<stdio.h>
int fact1(int n);
int fact2(int n);
int fact3(int n);
void main()
{int n,f1,f2=0,f3=0;
puts("Enter n:");
scanf("%d",&n);
f1 = fact1(n);
f2 = fact2(n);
f3 = fact3(n);}
int fact1(int n)
{if(n==1) return 1;
else return fact1(n-1)*n;}
int fact2(int n)
{return n?n*fact2(n-1):1;}
int fact3(int n)
{static long i; // т.к. i-статическая, то для нее не созда-
if(!n) return 1;// ется копии и при возврате через return
// для вычисления 0!
if (++i<n)
return fact3(n)*--i;
return n; // i сохраняет const максимальное значение}
2 матр умн
#include <stdio.h>
#include <conio.h>
#define N1 3
#define N2 3
#define N3 3
int m[N1][N2];
int n[N1][N2];
int mn[N1][N3];
main ()
{ int i,j,k;
clrscr ();
for (i=0; i<N1; i++)
for (j=0; j<N2; j++)
scanf ("%d",&m[i][j]);
for (i=0; i<N2; i++)
for (j=0; j<N3; j++)
scanf ("%d",&n[i][j]);
i=0;
while (i<N1)
{ j=0;
while (j<N3)
{mn[i][j]=0;
k=0;
while (k<N2)
{mn[i][j]+=m[i][k]*n[j][k];
k++; }
j++;}
i++; }
for (i=0; i<N1; i++)
{printf ("\n");
for (j=0; j<N3; j++)
printf ("%d ",mn[i][j]); }
getch ();
return 0;}
трансп.матр.(while) без нов
#include <conio.h>
#include <stdio.h>
#define n 4
void trans(int m[n][n])
{ int i=0,j,t;
while (i<n)
{ j=0;
while(j<i)
{ t=m[i][j];
m[i][j]=m[j][i];
m[j][i]=t;
j++; }
i++; }
}
main ()
{ int i,j,k,m[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&m[i][j]);
for(i=0;i<n;i++,printf("\n"))
for(j=0;j<n;printf("%5d",m[i][j++]));
trans(m);
printf("\n\n");
for(i=0;i<n;i++,printf("\n"))
for(j=0;j<n;printf("%5d",m[i][j++]));
getch ();
return 0;
2 мас.по возрост. В 3 по уб.
#include <conio.h>
#include <stdio.h>
#define N 6
void swap(int *m,int i,int j)
{int t;
t=m[i];
m[i]=m[j];
m[j]=t;
return;}
void qs(int *m,int l,int r)
{int i,las;
if(l>=r) return;
las=l;
for(i=l+1;i<=r;i++)
if(m[i]<m[l]) swap(m,++las,i);
swap(m,l,las);
qs(m,l,las-1);
qs(m,las+1,r);
return;}
main ()
{int i1,i2,i3,m[N],n[N],mn[N+N];
for(i1=0;i1<N;i1++) scanf("%d",&m[i1]);
for(i2=0;i2<N;i2++) scanf("%d",&n[i2]);
qs(m,0,N-1);
qs(n,0,N-1);
i1=i2=N-1;
i3=0;
while(i1>=0 && i2>=0)
{while(i1>=0 && m[i1]>=n[i2]) mn[i3++]=m[i1--];
while(i2>=0 && m[i1]<n[i2]) mn[i3++]=n[i2--]; }
if(i1>=0) for(;i1>=0;) mn[i3++]=m[i1--];
if(i2>=0) for(;i2>=0;) mn[i3++]=n[i2--];
for(i3=0;i3<N+N;i3++) printf("%d",mn[i3]);
getch ();
return 0;}}
наиб.общ.дел.
#include <conio.h>
#include <stdio.h>
int nod(int a,int b)
{int c;
if(b>a) nod(b,a);
else if(b<=0) c=a;
else c=nod(b,a%b);
return c;}
main ()
{int a,b,c;
scanf("%d",&a);
scanf("%d",&b);
if(b>a)
{c=a;
a=b;
b=c;}
c=nod(a,b);
printf("%d",c);
getch ();
return 0;}
Рев.перв.слова
#include<stdio.h>
#include<stdlib.h>
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);}
sinX
#include<stdio.h>
#include<conio.h>
#include<math.h>
int fact(int n);
void main()
{int n,i,ch=1,a,b,h,j;
double e,sum=0;
puts("Vvedite a,b,h, kolichestvo slagaemyx i tochnost':");
scanf("%d%d%d%d%lf",&a,&b,&h,&n,&e);
for(j=a;j<=b;j+=h)
{for(i=1;i<2*n && (pow(j,i)/fact(i))>e;i+=2)
if(ch%2!=0)
{sum+=pow(j,i)/fact(i);
ch++; }
else
{sum-=pow(j,i)/fact(i);
ch++;}
printf("\nSinX = %lf",sum);}}
int fact(int n)
{if(n==0 || n==1) return 1;
return fact(n-1)*n;}
деление пополам
#include<stdio.h>
#include<math.h>
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©;
if(fa*fc<0)
b=c;
if(fb*fc<0)
a=c;}
while(fabs(a-b)<e && fc==0);
printf("Koren=%lf",c);}
double fun(double x)
{ return (x-2)*(x-2)-1; }
сортировка Хора
#include<stdio.h>
#define n 3
void hoare(int l,int r,int *ms)
{int i=l,j=r;
int se=ms[(1+r)/2];
int buf;
do
{while(ms[i]<se) i++;
while(ms[j]>se) j--;
if (i<=j)
{buf=ms[i];
ms[i]=ms[j];
ms[j]=buf;
i++;j--;}}
while(i<=j);
if(i<r)
hoare(i,r,ms);
if(j>l)
hoare(l,j,ms);}
void main()
{int i,j,ms[n][n],s;
puts("Entar array:");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&ms[i][j]);
puts("Enter str N:");
scanf("%d",&s);
puts("a");
hoare(0,n-1,ms+s);}
int to char
#include<stdio.h>
#include<malloc.h>
void itoa(int);
void main()
{int n;
scanf("%d",&n);
itoa(n);}
void itoa(int n)
{int i=0;
char *st,znak;
n>0?znak='+':znak='-';
znak=='-'?n=-n:n;
st=(char*)calloc(100,sizeof(char));
do
*(st+i++)=n%10+'0';
while ((n/=10)>0);
*(st+i)=znak;
for(int j=i;j>=0;j--)
printf("%c",*(st+j));}
длина строки
#include<stdio.h>
#include<conio.h>
int length(char *str)
{for(int i=0;str[i]!='\0';i++);
return i;}
void main()
{int len;
char str[100];
gets(str);
len = length(str);
printf("\nLen = %d",len);}

Возр и б в 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;}

Категория: ОАиП | Добавил: gosha
Просмотров: 1367 | Загрузок: 45
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]