Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 1398
Благодарности: 131

Профиль | Отправить PM | Цитировать


Во второй задаче множество решений бесконечно.

1 задача

Код: Выделить весь код
#include <stdio.h>

int f(int k, int l, int m, int n)
{
int tk,tl;

for(tk = k,tl = l;tk > 0 && tl > 0;tk--,tl--)
if (tk == m && tl == n) { return 1;}

for(tk = k,tl = l;tk < 9 && tl < 9;tk++,tl++)
if (tk == m && tl == n) { return 1;}

for(tk = k,tl = l;tk < 9 && tl > 0;tk++,tl--)
if (tk == m && tl == n) { return 1;}


for(tk = k,tl = l;tk > 0 && tl < 9;tk--,tl++)
if (tk == m && tl == n) { return 1;}

return 0;
}

void main()
{
printf("%d\n", f(4,4,2,6));
}
3 задача

Код: Выделить весь код
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

typedef unsigned char unc;

struct buf 
{ 
unc* buf1;
int n;
buf(){n=0;buf1=0;}
~buf(){if(buf1)delete buf1;}
buf(int i){buf1=new unc[i+1];buf1[i]='\0';n=i;}
void add0(unc a){buf1=new unc[2];buf1[0]=a;buf1[1]='\0';n=1;}
void add(unc a){if(n==0){add0(a);return;} int i;unc* buf2=new unc[n+2];for(i=0;i<n;i++) buf2[i]=buf1[i];buf2[n]=a;buf2[n+1]='\0';n=n+1;delete [] buf1;buf1=buf2;}
void add10(unc* a, int n1){int i;buf1=new unc[n1+1];for(i=0;i<n1;i++) buf1[i]=a[i]; buf1[n1]='\0';n=n1;}
void add1(unc* a, int n1){if(n==0){add10(a, n1);return;} int i, j;unc* buf2=new unc[n + n1+2];for(i=0;i<n;i++) buf2[i]=buf1[i];for(i=n,j=0;j<n1;j++, i++) buf2[i]=a[j];buf2[n+n1]='\0';n=n + n1;delete [] buf1;buf1=buf2; }
int len(unc* a){int n;int i;n=0;for(i=0;a[i]!='\0';i++) n++;return n;}
void add1(unc* a){int n1=len(a);if(n==0){add10(a, n1);return;} int i, j;unc* buf2=new unc[n + n1+2];for(i=0;i<n;i++) buf2[i]=buf1[i];for(i=n,j=0;j<n1;j++, i++) buf2[i]=a[j];buf2[n+n1]='\0';n=n + n1;delete [] buf1;buf1=buf2;}
void print(){if(buf1){int i;for(i=0;i<n;i++) printf("%c", buf1[i]);printf("\n");} }
};

void main()
{
unc s[120];
int i;
int ln;
int fl1;
buf* t;
int s1;

t  = 0;
ln = 120;
fl1 = 0;
s1 = 0;

s[0]='t';s[1]='e';s[2]='x';s[3]='t';
s[4]=' ';s[5]='e';s[6]='x';s[7]='e';
s[8]=' ';s[9]='e';s[10]='x';s[11]='x';
s[12]=' ';s[13]='x';s[14]='x';
s[15]='\0';

for(i = 0; s[i] != '\0' ;i++)
{
if (fl1 == 0 && s[i] != '\x20') { fl1 = 1; t = new buf; t->add(s[i]); }
else if (fl1 == 0 && s[i] == '\x20') {}
else if (fl1 == 1 && s[i] != '\x20') { if (t) t->add(s[i]); }
else if (fl1 == 1 && s[i] == '\x20') { 
if (t) { printf("%d ", t->n); if (t->buf1[0] == t->buf1[(t->n)-1]) s1++; t->print();  delete t; } fl1 = 0; }
}

if(t) { printf("%d ", t->n); if (t->buf1[0] == t->buf1[(t->n)-1]) s1++; t->print(); delete t;}

printf("%d ", s1);

}
6 задача


Код: Выделить весь код
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

#define N 4

struct point
{
double x;
double y;
};

int f(double x1, double y1, double x2, double y2,double x3, double y3, double x4, double y4)
{
double a1,b1,c1; double a2,b2,c2; double x, y;
a1 = y1 - y2; b1 = -(x1 - x2); c1 = x1*y2 - x2*y1; printf("%f %f %f\n", a1, b1, c1);
a2 = y3 - y4; b2 = -(x3 - x4); c2 = x3*y4 - x4*y3; printf("%f %f %f\n", a2, b2, c2);

if (a1*b2 - a2*b1 == 0)
return 0;
else
{
x = (b1*c2 - b2*c1) / (a1*b2 - a2*b1);
y = (c1*a2 - c2*a1) / (a1*b2 - a2*b1);

printf("x %f y %f\n", x, y);

if ( x > x1 && x < x2 && y > y1 && y < y2 && x > x3 && x < x4 && y > y3 && y < y4) return 1;
else if ( x > x2 && x < x1 && y > y1 && y < y2 && x > x3 && x < x4 && y > y3 && y < y4) return 1;
else if ( x > x1 && x < x2 && y > y2 && y < y1 && x > x3 && x < x4 && y > y3 && y < y4) return 1;
else if ( x > x1 && x < x2 && y > y1 && y < y2 && x > x4 && x < x3 && y > y3 && y < y4) return 1;
else if ( x > x1 && x < x2 && y > y1 && y < y2 && x > x3 && x < x4 && y > y4 && y < y3) return 1;

else if ( x > x2 && x < x1 && y > y2 && y < y1 && x > x3 && x < x4 && y > y3 && y < y4) return 1;
else if ( x > x2 && x < x1 && y > y2 && y < y1 && x > x4 && x < x3 && y > y3 && y < y4) return 1;
else if ( x > x2 && x < x1 && y > y2 && y < y1 && x > x4 && x < x3 && y > y4 && y < y3) return 1;
else if ( x > x2 && x < x1 && y > y2 && y < y1 && x > x3 && x < x4 && y > y4 && y < y3) return 1;

else if ( x > x1 && x < x2 && y > y1 && y < y2 && x > x4 && x < x3 && y > y4 && y < y3) return 1;
else if ( x > x2 && x < x1 && y > y1 && y < y2 && x > x4 && x < x3 && y > y4 && y < y3) return 1;
else if ( x > x1 && x < x2 && y > y2 && y < y1 && x > x4 && x < x3 && y > y4 && y < y3) return 1;
else if ( x > x2 && x < x1 && y > y2 && y < y1 && x > x4 && x < x3 && y > y4 && y < y3) return 1;

else if ( x > x2 && x < x1 && y > y1 && y < y2 && x > x4 && x < x3 && y > y3 && y < y4) return 1;
else if ( x > x2 && x < x1 && y > y2 && y < y1 && x > x4 && x < x3 && y > y3 && y < y4) return 1;
else if ( x > x2 && x < x1 && y > y1 && y < y2 && x > x4 && x < x3 && y > y4 && y < y4) return 1;
else if ( x > x2 && x < x1 && y > y2 && y < y1 && x > x4 && x < x3 && y > y4 && y < y3) return 1;

else if ( x > x2 && x < x1 && y > y1 && y < y2 && x > x3 && x < x4 && y > y4 && y < y3) return 1;
else if ( x > x2 && x < x1 && y > y2 && y < y1 && x > x3 && x < x4 && y > y4 && y < y3) return 1;
else if ( x > x2 && x < x1 && y > y1 && y < y2 && x > x4 && x < x3 && y > y4 && y < y3) return 1;
else if ( x > x2 && x < x1 && y > y2 && y < y1 && x > x4 && x < x3 && y > y4 && y < y3) return 1;

else if ( x > x1 && x < x2 && y > y2 && y < y1 && x > x3 && x < x4 && y > y3 && y < y4) return 1;
else if ( x > x1 && x < x2 && y > y2 && y < y1 && x > x4 && x < x3 && y > y3 && y < y4) return 1;
else if ( x > x1 && x < x2 && y > y2 && y < y1 && x > x4 && x < x3 && y > y4 && y < y3) return 1;
else return 0;

}


}

void main()
{
int i;
int j;
struct point a[N];
a[0].x = 1.0; a[0].y = 1.0;
a[1].x = 2.0; a[1].y = 3.0;
a[2].x = 3.0; a[2].y = 1.0;
a[3].x = 1.0; a[3].y = 2.0;
for (i = 0;i < N;i++)
for (j = i+1; j < N-1; j++)
printf("%d %d %d\n",  i, j, f(a[i].x, a[i].y, a[i+1].x, a[i+1].y, a[j].x, a[j].y, a[j+1].x, a[j+1].y)); 
}

-------
Ehhh.. what's up, doc?..


Отправлено: 18:15, 04-02-2016 | #117