Готуємось до олімпіади – 3 Печать
Добавил(а) Administrator   
15.01.16 21:09

Готуємось до олімпіади – 3
Опорний конспект по с++

№ Завдання Програмний код
Структура програми

#include "iostream"
#include <math.h>
using namespace std;
int main()
{
int a,b;
double c;
cin>>a>>b;
c=a/b;
cout.precision(2);
cout<<fixed<<c<<endl;
}
Заокруглення
double r;
cout.precision(2);
cout<<fixed<<r<<endl;


Робота з файлами

#include "fstream"
using namespace std;

ifstream cin("input.txt");
ofstream cout("output.txt");
Заокруглення кількості знаків після коми double a;
a=3.14
cout.precisio(2);
cout<<fixed<<a<<endl;

Обчислити площу трикутника за координатами #Include “iostream”;
#Include “math.h”;
using namespace std;
int mail()
{double x1,y,x2,y2,x3,y3,a,b,c,p,s;
cin>>x1>>y1>>x2>>y2>>x3>>y3;
a=sqrt(pow(x2-x1,2)+pow(y2-y1,2));
b=sqrt(pow(x3-x2,2)+pow(y3-y2,2));
c=sqrt(pow(x3-x1,2)+pow(y3-y1,2));
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
cout.precisio(2);
cout<<fixed<<s<<endl;
}
Зчитати n чисел int n,a[1000];
cin>>n;
for(i=0;i<n;i++) cin>>a[i];
Зчитати рядок з n чисел int n,a[1000];
n=0;
while (! cin.eof())
{cin>>a[n];
n++;
}
Зчитати рядок цифр і вивести його в зворотному порядку char a[1000];
cin>>a;
for(int i=strlen(a)-1; i>=0;i--)cout<<a[i];
Вивести масив з n чисел через пропуск for(int i=0;i<n-1;i++)cout<<a[i]<<” “;

cout<<a[n-1[<<endl;
1 Підрахувати суму цифр в числі long long n,s;
cin>>n;
s=0;
while (n>0) {
s=s+n%10;
n=n/10;
} char a[1000];
cin>>a;
int s=0;
for(int i=0;i<strlen(a);i++)
s=s+a[i]-48;
cout<<s<<endl;

Підрахувати кількість кожної цифри в числі long long n;
cin>>n;
int a[10]
while (n>0)
{a[n%10]++;
n=n/10;
}
for(int i=0;i<=9;i++)
cout<<i<<” “<<a[i]<<endl;
char a[1000];
cin>>a;
int b[10];
for(int i=0;i<=9;i++) b[i]=0;

for(int i=0;i<strlen(a);i++)
b[a[i]-48]++;’
for(int i=0;i<=9;i++)
cout<<i<<” “<<b[i]<<endl;
Відсортувати масив в порядку зростання int a[100000], j, i;
cin>>n;
for (i=0; i<n; i++)cin>>a[i];
for (i=0;i<n-1;i++)
for (j=0;j<n-1;j++)
if (a[j]>a[j+1])
swap(a[j],a[j+1];
for (i=0; i<n-1; i++) cout<<a[i]<<" ";
cout<<a[n-1]"\n"; #include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int i,j,n;
int main()
{cin>>n;
vector<int> a(n);
for (i=0; i<n; i++)cin>>a[i];
// сортування масиву.
sort(a.begin(),a.end());
for (i=0; i<n-1; i++) cout<<a[i]<<" ";
cout<<a[n-1]<<"\n";
return 0;
}
Обчислити суму додатних елементів в парних рядках прямокутної таблиці int main()
{int n,m,i,j,a[100][100];
cin>>n>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>a[i][j];

int s=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(a[i][j]>0 && i%2==0)s=s+a[i][j];
cout<<s<<endl;
}
Перевірити чи квадрат є латинським.
Латинським квадратом в математиці називається таблиця розміру n × n заповнена n різними елементами так, що в кожному стовпці і кожному рядку всі елементи зустрічаються по одному разу. Прикладом латинського квадрата може бути: int n,i,j,a[100][100], int b[100];
cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
int f=0;
// перевірка рядків
for(i=0;i<n;i++)
{
for (int k=0;k<n;k++)b[k]=0;
for(j=0;j<n;j++)
if (b[a[i][j]]==0 &&a[i][j]<=n) b[a[i][j]]=1; else f=1;
}
// перевірка стовпців
for(j=0;j<n;j++)
{
for (int k=0;k<n;k++)b[k]=0;
for(i=0;i<n;i++)
if (b[a[i][j]]==0 &&a[i][j]<=n) b[a[i][j]]=1; else f=1;
}
if(f==0) cout<<”yes”<<endl; else cout<<”no”<<endl;
В діапазоні єдиного аркуша файлу дано прямокутне поле nхm, клітинки якого або порожні, або містять значення 1. Вертикальною лінією на цьому прямокутному полі вважатимемо набір з двох і більше клітинок зі значенням 1, суміжних по вертикалі, обмежений вгорі та знизу порожніми клітинками або межами поля. Горизонтальною лінією вважатимемо відповідно набір з двох і більше клітинок зі значенням 1, суміжних по горизонталі, обмежений справа та зліва порожніми клітинками або межами поля. Тобто одна клітинка може належати не більш, ніж одній вертикальній та не більш, ніж одній горизонтальній лініям.
На рисунку нижче вертикальні лінії позначені червоним, горизонтальні – синім кольором.

Виведіть загальну кількість лінії в діапазоні. int a[100][100];
int main()
{int n,m,i; cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];

int s=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==1 && a[i-1][j]==1 && a[i][j-1]==1 && a[i+1][j]==0 && a[i][j+1]==0) s=s+1;
else if(a[i][j]==1 && a[i-1][j]==1 && a[i+1][j]==0
|| a[i][j]==1 && a[i][j-1]==1 && a[i][j+1]==0
) s=s+1;
cout<<s<<endl;
}
Рух автомобіля задається координами точок. Підрахувати кількість лівих поворотів.
int x[100],y[100],a[100],b[100],v[100];
int i,n;
//зчитування координат
cin>>n;
for(int i=0;i<n;i++) cin>>x[i]>>y[i];
//обчислення координат векторів
for(int i=0;i<n-1;i++) {a[i]=x[i+1]-x[i];b[i]=y[i+1]-y[i];}
//обчислення векторних добутків
for(int i=0;i<n-2;i++)
v[i]=a[i]*b[i+1]-a[i+1]*b[i];
//підрахунок кількості лівих поворотів векторів
int s=0;
for(int i=0;i<n-2;i++)
if(v[i]>0) s++;
cout<<s++<<endl;