Рабочий стол > DL Руководство пользователя > ... > Быстрое погружение в язык C++ > Функции и процедуры > Просмотр
Функции и процедуры Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Добавлено Egor, последний раз изменено Egor Oct 09, 2016  (просмотр изменений)
Метки: 
(нет)

1. Решение задачи с функцией - Слова массива, состоящие из различных букв

razl_bukvi.cpp
#include <bits/stdc++.h>using namespace std;

string Razl(string s)
  {
    string w;
    int d,j;

    d=s.length();
    w=s[0];
    for (j=1; j<d; j++)
      if (w.find(s[j])>d) w+=s[j];
    return w;
  }

int main()
{
 string s[100];
 int n,i;
 cin >> n;
 for (i=0; i<n; i++) cin >> s[i];
 for (i=0; i<n; i++)
   if (Razl(s[i])==s[i]) cout << s[i] << endl;
}

2. Решение задачи с процедурой
Предложение => массив слов

predloch-massiv.cpp
#include <bits/stdc++.h>using namespace std;

string s,m[100];
int    n;

void Razbit()
  {
    string p;
    int    i,d;
    s+=' '; d=s.length(); n=0; p="";
    for (i=0; i<d; i++)
      if (s[i]!=' ') p+=s[i];
        else {
               m[n]=p;
               n++;
               p="";
             }
  }

int main()
{
 getline(cin,s);
 Razbit();
 for (int i=0; i<n; i++) cout << m[i] << endl;
}

3. Булевая функция, получает в качестве параметра целое x

Количество простых, кубы которых меньше n

kubi<n.cpp
#include <bits/stdc++.h>using namespace std;

bool Prime(int x)
  {
    for (int i=2; i<x; i++)
      if ((x%i)==0) return false;
    return true;
  }

int main()
{
 string is,s;
 int n,x,ans;
 cin >> n;
 ans=0;
 for (x=2; x*x*x<n; x++)
   if (Prime(x)) ans++;
 cout << ans;
}

/*
1001 - 4
126  - 3
125  - 2
10   - 1
7    - 0
*/

4. Возвращение значений параметров из процедуры Split

&x1 - передаём в процедуру адрес переменной x1

split.cpp
#include <bits/stdc++.h>using namespace std;

void Split(int x, int &x1, int &x2, int &x3)
  {
    x1=x%10;
    x3=x/100;
    x2=(x/10) % 10;
  }

int main()
{
 int i,i1,i2,i3,
     j,j1,j2,j3,
     n,a2,a3;
 cin >> n;
 a2=0;
 for (i=10; i<100; i++)
 for (j=10; j<100; j++)
   {
     i1=i/10; i2=i%10;
     j1=j/10; j2=j%10;
     if ((i1+i2==j1+j2) && (abs(i-j)>a2))
       a2=abs(i-j);

   };
 if (n==2) cout << a2;
 a3=0;
 for (i=100; i<1000; i++)
 for (j=100; j<1000; j++)
   {
     Split(i,i1,i2,i3);
     Split(j,j1,j2,j3);
     if (((i1+i2+i3)==(j1+j2+j3)) && (abs(i-j)>a3))
       a3=abs(i-j);
   };
 if (n==3) cout << a3;
}

5. Три лучших рейтинга (10_BY. Спартакиада)

spartakiada.cpp
#include <bits/stdc++.h>using namespace std;

int r[100000],n;

int nMaxR()
  {
    int max,i,num;
    max=0;
    for (i=0; i<n; i++)
      if (r[i]>max) { max=r[i]; num=i; };
     return num;
  }

int main()
{
 int x,y,z,a,b,c,i,n1,n2,n3;
 freopen("input.txt","r",stdin);
 freopen("output.txt","w",stdout);
 cin >> x >> y >> z;
 cin >> n;
 for (i=0; i<n; i++)
   {
     cin >> a >> b >> c;
     r[i]=a*x+b*y+c*z;
   }
 n1=nMaxR(); r[n1]=0;
 n2=nMaxR(); r[n2]=0;
 n3=nMaxR();
 cout << n1+1 << ' ' << n2+1 << ' ' << n3+1;
}

6. Функция и процедура (2010_BY. Бактериалное родство)

bakterrodstvo.cpp
#include <bits/stdc++.h>using namespace std;

string a,b;
int    n;

int Degree()
  {
    int i,k;
    k=0;
    for (i=0; i<n; i++)
      if (a[i]==b[i]) k++;
    return k;
  }
void Shift()
  {
    a=a[n-1]+a.substr(0,n-1);
  }

int main()
{
 int i,max,k;
 freopen("input.txt","r",stdin);
 freopen("output.txt","w",stdout);
 cin >> n;
 cin >> a;
 cin >> b;
 max=0;
 for (i=0; i<n; i++)
   {
     k=Degree();
     if (k>max) max=k;
     Shift();
   }
 cout << max;
}
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами