// последовательно обрабатываем слова - выделяем/находим
// найти начало
// если не нашли - выход
// запомнить начало слова
// найти конец слова
// запомнить конец слова
// печатать слово в обратном порядке букв
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char s[1000];
cin. getline (s, 1000);
int n = strlen (s);
for (int i=0; i<n;)
{
for (; s[i] == ' '; i++)
;
if (i >= n)
break;
int begin=i;
for (; i < n && s[i]!= ' '; i++)
;
for (int j=i-1; j >= begin; j--)
cout << s[j];
cout << " ";
}
system ("pause");
return 0;
}
Транспонировать матрицу
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
const int N=100;
int a[N][N];
int n;
cin >> n;
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
a[i][j] = rand () % 100;
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
cout << setw(3) << a[i][j] << " ";
cout << endl;
}
for (int i=1; i<n; i++)
for (int j=0; j<n; j++)
swap (a[i][j], a[j][i]);
cout << endl;
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
cout << setw(3) << a[i][j] << " ";
cout << endl;
}
system("pause");
return 0;
}
Дан символьный массив. Про каждый символ, который встречается хотя бы один раз, нужно напечатать сколько раз он встречается
|
|
// для каждого символа заведем счетчик - массив счетчиков
// пройдем по тексту один раз и каждый счетчик ++
// напечатаем те символы, у которых счетчик больше 0
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <cstring>
int kol[256];
char s [1000];
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cin.getline (s, 1000);
int n = strlen (s);
cout << s << "len=" << n << endl;
for (int i=0; i<n; i++)
kol [s[i]]++;
for (int i=0; i<256; i++)
if (kol [i]>0)
cout << (char)i << " " << kol[i] << endl;
system("pause");
return 0;
}
Дано натуральное число n. Посчитать количество цифр 5 в числах от 1 до n
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int n;
cin >> n;
int kol = 0;
for (int i=5; i<=n; i++)
{
int ii = i;
while (ii > 0)
{
if (ii % 10 ==5)
kol++;
ii/=10;
}
}
cout << kol << endl;
system("pause");
return 0;
}
Даны два длинных целых числа. Сложить их поразрядно (начиная с цифр с конца)
#include "stdafx.h"
#include<iostream>
#include <cmath>
#include <cstring>
using namespace std;
const int N = 1000;
int a[N], b[N], c[N];
void input (int *);
void sum (int [], int [], int []);
void Print (int *);
int _tmain(int argc, _TCHAR* argv[])
{
input (a); // Print (a);
input (b); // Print (b);
sum (a, b, c); // c=a+b
Print (c);
return 0;
}
void input (int *a)
{
char s [N];
cin.getline (s, N);
int len = strlen (s);
for (int i = len-1, j = N-1; i >= 0; i--, j--)
a[j] = s[i] - '0';
}
void sum (int a[], int b[], int c[])
{
for (int i=N-1, perenos = 0; i >= 0; i--)
{
c[i] = (a[i] +b[i] + perenos) % 10;
perenos = (a[i] +b[i] + perenos) / 10;
}
}
void Print (int * a)
{
int i=0;
for (; i < N-1; i++)
if (a[i] > 0)
break;
for (; i < N; i++)
cout << a[i];
cout << endl;
system ("pause");
}
Повернуть матрицу на 180 градусов
#include "stdafx.h"
#include <iomanip>
#include <iostream>
|
|
#include <ctime>
#include <cstdlib>
#include <cstring>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
//заполнение матрицы
const int N=10;
int a[N][N];
srand (time (0));
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
a[i][j] = rand() % 100;
//печать матрицы
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout << setw(4) << a[i][j];
cout << endl;
}
int N2 = N/2;
for (int i=0; i < N2; i++)
for (int j=0; j<N; j++)
swap (a[i][j], a[N-i-1][N-j-1]);
if (N % 2)
for (int i=0; i < N2; i++)
swap (a [N/2 + 1][i], a[N/2 + 1][N-i-1]);
cout << endl << endl;
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout << setw(4) << a[i][j];
cout << endl;
}
system ("pause");
return 0;
}