Сайт підготовки до олімпіади з інформатики

програмування в С++

Заняття 10 (09.11.2016) PDF Печать E-mail
Добавил(а) Administrator   
29.11.16 09:39

Готуємось до олімпіади з інформатики 20016-2017- 2

1.     Фрагменти програмних кодів (С++)

Завдання

Програмний код

1.                 

Зчитування до кінця рядка

while (cin.peek()!='\n')

 { n++;

cin>>a[n];

 }

2.                 

Зчитування до кінця файлу

while (!cin.eof())

 { m++;

cin>>b[m];

 }

3.                 

Зчитування рядка з пропусками

string str;

getline(cin,str,'\n');

 

4.                 

Зчитування рядка з пропусками (тип string)

#include "fstream"

#include "string.h"

#include "string"

using namespace std;

ifstream cin("input.txt");

ofstream cout("output.txt");

int main()

{string s;

getline(cin,s);

cout<<s;

}

 

5.                 

Зчитування рядка з пропусками (тип char)

#include "fstream"

#include "string.h"

using namespace std;

ifstream cin("input.txt");

ofstream cout("output.txt");

int main()

{char str[100];

cin.getline(str,sizeof(str));

cout<<str;

}

 

6.                 

Кількість цифр в числі

#include "string"

int main()

{string s;

cin>>s;

cout<<s.length();}

 

 

#include "iostream"

#include "math.h"

using namespace std;

int main()

{

unsigned long long number;

cin>>number;

cout.precision(0);

cout<<fixed<<log10(double (number))+1;

}

 


 

2.    Функції для роботи з рядками

Більшість функцій для роботи з рядками містяться в бібліотеці cstring .(#include <cstring>)

 

Функція

Дія

memset(str, c, n)

перші n символів рядка str заповнює значеннями c

strnset(str, c, n)

перші n символів рядка str заповнює значеннями c

strlen(str)

визначення довжини рядка

strcpy(str1, str2)

в рядок str1 копіює рядок str2

strncpy(str1, str2, n)

в рядок str1 копіює не більше, ніж n символів рядка str2

strcat(str1, str2);

до рядка str1 дописує рядок str2

strncat(str1, str2, n)

до рядка str1 дописує не більше, ніж n символів рядка str2

strchr(str, c)

визначає перше входження літери c  в рядок str; повертає вказівник на знайдену літеру (або NULL, якщо її нема)

strrchr(str, c)

визначає останнє входження літери c  в рядок str; повертає вказівник на знайдену літеру (або NULL, якщо її нема)

strstr(str1, str2)

визначає перше входження підрядка str2 в рядок str1; повертає вказівник на першу літеру знайденого підрядка (або NULL, якщо він не зустрічається)

strrev(str)

записує рядок str у зворотному порядку

strupr(str)

перетворює всі літери рядка у великі літери

strlwr(str)

перетворює всі літери рядка у малі літери

strcmp(str1, str2)

порівнює рядки str1 та str2; якщо рядки рівні, то повертає 0;

якщо відмінні – то повертає різницю між першими відмінними літерами: с1 – с2

stricmp(str1, str2)

аналогічна до strcmp(...), тільки ігнорує величину літер

strcspn(str1,str2)

повертає число – позицію першого входження в рядок str1 символу  із набору str2

strdup(str1)

розподіляє пам’ять і копіює рядок str1 за виділеною адресою; повертає адресу початку виділеної пам’яті

 

Приклади:

strcmp("abcdefgh","abcabc") = 3;

stricmp("Abcd","abcD")       = 0;

strlen("alpha")                    = 5;

cout<<strchr("University", 'v')          –>  "versity";

cout<<strstr("MicroLab Studio", "Lab")   –> "Lab Studio";

cout<<strupr("My first Program")               –> "MY FIRST PROGRAM".

 


 

Робота з масивами

Операція з масивом

Лінійний масив

Прямокутна таблиця

Опис

int a[100];

int i, n;//індекс, кількість елементів

int a[100][100];

int i,j, n,m;//індекс, кількість елементів

Введення

cin>>n;

for(i=0;i<n;i++)cin>>a[i];

cin>>n>>m;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

cin>>a[i][j];

Виведення

for(i=0;i<n;i++)cout<<a[i]<<” “;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

cout<<a[i][j]<<” “;

Сумування

s=0;

for(i=0;i<n;i++)s=s+a[i];

s=0;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

s=s+a[i][j];

Пошук

cin>>k;

for(i=0;i<n;i++) if (a[i]==k) cin<<i;

cin>>k;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

if (a[i][j]==k)

cin<<i<<” “<<j;

Пошук максимального

max=a[0];nmax=0;

for(i=1;i<n;i++)if  (a[i]>max) {max=a[i];nmax=i;}

max=a[0][0];imax=1;jmax=1;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

if  (a[i][j]>max) {max=a[i][j];

imax=i;jmax=j;}

Сортування

for(i=0;i<n-1;i++)

for(j=0;j<n-1;j++)

if  (a[j]>a[j+1])

{temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;}

 

Стирання

n=n-1;

for(i=k-1;i<n;i++)

 a[i]=a[i+1];

 

Вставка

n=n+1;

for(i=n-1;i>k;i--)

a[i]=a[i-1];

a[k]=x;

 

 

 

Готуємось до олімпіади з інформатики 20016-2017- 2

1.     Фрагменти програмних кодів (С++)

Завдання

Програмний код

1.                 

Зчитування до кінця рядка

while (cin.peek()!='\n')

 { n++;

cin>>a[n];

 }

2.                 

Зчитування до кінця файлу

while (!cin.eof())

 { m++;

cin>>b[m];

 }

3.                 

Зчитування рядка з пропусками

string str;

getline(cin,str,'\n');

 

4.                 

Зчитування рядка з пропусками (тип string)

#include "fstream"

#include "string.h"

#include "string"

using namespace std;

ifstream cin("input.txt");

ofstream cout("output.txt");

int main()

{string s;

getline(cin,s);

cout<<s;

}

 

5.                 

Зчитування рядка з пропусками (тип char)

#include "fstream"

#include "string.h"

using namespace std;

ifstream cin("input.txt");

ofstream cout("output.txt");

int main()

{char str[100];

cin.getline(str,sizeof(str));

cout<<str;

}

 

6.                 

Кількість цифр в числі

#include "string"

int main()

{string s;

cin>>s;

cout<<s.length();}

 

 

#include "iostream"

#include "math.h"

using namespace std;

int main()

{

unsigned long long number;

cin>>number;

cout.precision(0);

cout<<fixed<<log10(double (number))+1;

}

 


 

2.    Функції для роботи з рядками

Більшість функцій для роботи з рядками містяться в бібліотеці cstring .(#include <cstring>)

 

Функція

Дія

memset(str, c, n)

перші n символів рядка str заповнює значеннями c

strnset(str, c, n)

перші n символів рядка str заповнює значеннями c

strlen(str)

визначення довжини рядка

strcpy(str1, str2)

в рядок str1 копіює рядок str2

strncpy(str1, str2, n)

в рядок str1 копіює не більше, ніж n символів рядка str2

strcat(str1, str2);

до рядка str1 дописує рядок str2

strncat(str1, str2, n)

до рядка str1 дописує не більше, ніж n символів рядка str2

strchr(str, c)

визначає перше входження літери c  в рядок str; повертає вказівник на знайдену літеру (або NULL, якщо її нема)

strrchr(str, c)

визначає останнє входження літери c  в рядок str; повертає вказівник на знайдену літеру (або NULL, якщо її нема)

strstr(str1, str2)

визначає перше входження підрядка str2 в рядок str1; повертає вказівник на першу літеру знайденого підрядка (або NULL, якщо він не зустрічається)

strrev(str)

записує рядок str у зворотному порядку

strupr(str)

перетворює всі літери рядка у великі літери

strlwr(str)

перетворює всі літери рядка у малі літери

strcmp(str1, str2)

порівнює рядки str1 та str2; якщо рядки рівні, то повертає 0;

якщо відмінні – то повертає різницю між першими відмінними літерами: с1 – с2

stricmp(str1, str2)

аналогічна до strcmp(...), тільки ігнорує величину літер

strcspn(str1,str2)

повертає число – позицію першого входження в рядок str1 символу  із набору str2

strdup(str1)

розподіляє пам’ять і копіює рядок str1 за виділеною адресою; повертає адресу початку виділеної пам’яті

 

Приклади:

strcmp("abcdefgh","abcabc") = 3;

stricmp("Abcd","abcD")       = 0;

strlen("alpha")                    = 5;

cout<<strchr("University", 'v')          –>  "versity";

cout<<strstr("MicroLab Studio", "Lab")   –> "Lab Studio";

cout<<strupr("My first Program")               –> "MY FIRST PROGRAM".

 


 

Робота з масивами

Операція з масивом

Лінійний масив

Прямокутна таблиця

Опис

int a[100];

int i, n;//індекс, кількість елементів

int a[100][100];

int i,j, n,m;//індекс, кількість елементів

Введення

cin>>n;

for(i=0;i<n;i++)cin>>a[i];

cin>>n>>m;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

cin>>a[i][j];

Виведення

for(i=0;i<n;i++)cout<<a[i]<<” “;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

cout<<a[i][j]<<” “;

Сумування

s=0;

for(i=0;i<n;i++)s=s+a[i];

s=0;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

s=s+a[i][j];

Пошук

cin>>k;

for(i=0;i<n;i++) if (a[i]==k) cin<<i;

cin>>k;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

if (a[i][j]==k)

cin<<i<<” “<<j;

Пошук максимального

max=a[0];nmax=0;

for(i=1;i<n;i++)if  (a[i]>max) {max=a[i];nmax=i;}

max=a[0][0];imax=1;jmax=1;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

if  (a[i][j]>max) {max=a[i][j];

imax=i;jmax=j;}

Сортування

for(i=0;i<n-1;i++)

for(j=0;j<n-1;j++)

if  (a[j]>a[j+1])

{temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;}

 

Стирання

n=n-1;

for(i=k-1;i<n;i++)

 a[i]=a[i+1];

 

Вставка

n=n+1;

for(i=n-1;i>k;i--)

a[i]=a[i-1];

a[k]=x;

 

 

 

Статистика

Пользователей : 261
Статей : 225
Просмотрено статей : 115388

Вход/Регистрация

Нет