1. Решение задачи с функцией - Слова массива, состоящие из различных букв
#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. Решение задачи с процедурой
Предложение => массив слов
#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
#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
#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. Спартакиада)
#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. Бактериалное родство)
#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;
}
|
|