
Практическая часть:
В произвольном тексте на английском языке, содержащем не более 10 строк, в каждой строке не более 80 символов. Заменить первую букву каждого слова символом «пробел». Слово – это группа символов, заключенная между разделителями (пробел, запятая, точка и т.д.). Полученный текст напечатать.
int main()
{
const int N=5;
char text[N][80];
int length[N], n=0, a=0;
do
{
int j=0;
while((text[n][j] = getchar()) != '\n') j++;
text[n][j] = '\0';
length[n] = j;
if (text[n][0] == '\0') break;
n++;
} while(n<N);
for(int i=0; i<n; i++)
for(int j=0; j<length[i]-1; j++)
if(strchr(" ,.!?", text[i][j]) != NULL)
{
text[i][j+1]=' ';
j++;
}
for(int i=0; i<n; i++)
{
for(int j=0; j<length[i]; j++)
printf("%c", text[i][j]);
printf("\n");
}
getch();
}
В произвольном тексте на русском языке, содержащем не более 10 строк, в каждой строке не более 80 символов, заменить все гласные буквы текста символом пробела. Полученный текст напечатать.
int main()
{
vector<string> a;
string t;
getline(cin, t);
while(cin.fail()==false)
{
a.push_back(t);
getline(cin, t);
}
for (int i=0; i<a.size(); i++)
for (int j=0; j<a[i].size(); j++)
if (a[i][j]=='a'||a[i][j]=='i'||a[i][j]=='e'||a[i][j]=='u'||a[i][j]=='o')
a[i][j]=' ';
for (int i=0; i<a.size(); i++)
cout<<a[i]<<endl;
getch();
}
Дано: целочисленная матрица A[N,M] и натуральное число х. Вывести номера строк матрицы, в которых встречается заданное число х. Определение, является ли строка матрицы таковой, оформить как функцию. Ввод и вывод элементов матрицы оформить как функцию. Использовать динамическую память. Глобальных переменных не использовать.
void vvod(int **a, int na, int ma)
{
int i,j;
for(i=0;i<na;i++)
for(j=0;j<ma;j++)
scanf("%d",&a[i][j]);
}
void vivod(int **a, int na, int ma)
{
int i,j;
for(i=0;i<na;i++)
{
printf("\n");
for(j=0;j<ma;j++)
printf("%5d",a[i][j]);
}
}
void poisk(int **a,int na, int ma, int &x)
{
int i,j;
for(i=0;i<na;i++)
for(j=0;j<ma;j++)
if(a[i][j]==x)
{
printf("\nNomer stroki:%d",i);
return;
}
}
int main()
{
int x,n,m;
int **a;
int i,j;
printf("\nVvedite x:");
scanf("%d",&x);
printf("\nVvedite razmer matrici:");
scanf("%d%d",&n,&m);
a=new int*[n];
for(i=0;i<n;i++)
a[i]=new int[m];
printf("\nVvedite a:");
vvod(a,n,m);
printf("a:");
vivod(a,n,m);
poisk(a,n,m,x);
getch();
}
В произвольном тексте на русском языке, содержащем не более 10 строк, в каждой строке не более 80 символов. Вывести те строки текста, в которых встречаются гласные буквы. Определение, является ли строка текста таковой, оформить как функцию. Глобальных переменных не использовать.
int search(string &str);
int main()
{
string str;
ifstream fout;
fout.open("f_out.txt");
if (!fout.is_open())
{
cout<<"There is no file F_OUT.TXT";
exit(EXIT_FAILURE);
}
getline(fout, str);
int k=0, i=0;
while (fout.fail()==false)
{
i++;
if (search(str)==1)
{
k++;
cout<<i;
}
getline(fout, str);
}
if (k==0)
cout<<"There is no such strings \n";
}
int search(string &str)
{
const char *glas="EeUuYyIiOoAa";
for (int i=0; i<str.size(); i++)
if (strchr(glas, str[i]))
return 1;
return 0;
}
Дано: три целочисленные квадратные матрицы. Определить, есть ли среди них единичная матрица. Определение, является ли матрица единичной, оформить как функцию. Единичная матрица квадратная матрица, элементы главной диагонали которой равны единице, а остальные равны нулю. Использовать динамическую память. Глобальных переменных не использовать.
void vvod(int **x,int nx)
{
for(int i=0;i<nx;i++)
for(int j=0;j<nx;j++)
scanf("%d",&x[i][j]);
}
void vivod(int **x,int nx)
{
for(int i=0;i<nx;i++)
for(int j=0;j<nx;j++)
printf("%d",x[i][j]);
}
bool opr_mat(int **x,int nx)
{
int i,j;
for(i=0;i<nx;i++)
for(j=0;j<nx;j++)
if(i==j)
{
if(x[i][j]!=1)
return false;
}
else
if(x[i][j]!=0)
return false;
return true;
}
Int main()
{
setlocale(LC_ALL,"Russian");
int n, m, t;// переменные для размерности массивов
int **a, **b, **c;// указатели на указатели массивов
int i; //счетчик цикла
printf ( "\nВведите pазмеpность массива а : " );
scanf ( "%d", &n);
printf ( "\n Введите pазмеpность массива b : " );
scanf ( "%d", &m);
printf("\n Введите размерность массива с : ");
scanf ( "%d", &t);
//выделение динамической памяти
a = new int*[n];
for ( i=0; i<n; i++ )
a[i] = new int [n];
b = new int*[m];
for ( i=0; i<m; i++ )
b[i] = new int [m];
c = new int*[t];
for (i=0; i<t; i++)
c[i] = new int [t];
printf ( "\n Введите массив а : " );
vvod ( a , n );
printf ( "\n Введите массив b : " );
vvod ( b , m );
printf ( "\n Введите массив с : " );
vvod ( c , t );
printf ( "\n Массив а :" );
vivod ( a, n );
printf ( "\n Массив b :" );
vivod ( b, m );
printf( "\n Массив с :" );
vivod ( c, t );
printf("\nМассив a является ");
if(opr_mat(a,n))
printf("единичным");
else
printf("не единичным");
printf("\nМассив a является ");
if(opr_mat(b,m))
printf("единичным");
else
printf("не единичным");
printf("\nМассив a является ");
if(opr_mat(c,t))
printf("единичным");
else
printf("не единичным");
getch();
return 0;
}
Дана прямоугольная матрица. Найти номера строки и столбца для элемента матрицы, наиболее близкого к среднему арифметическому значению всех ее элементов. Поиск среднего арифметического значения матрицы оформить как функцию. Считать, что такой элемент один. Глобальных переменных не использовать.
using namespace std;
double sred_arifm(double **a,int n,int m);
Int main()
{
srand(time(NULL));
double x, dif, sred;
int n, m, j, i, si=0, sj=0;
cin>>n>>m;
double **a=new double*[n];
for (i=0; i<n; i++)
{
a[i]=new double[m];
for (j=0; j<m; j++)
a[i][j]=(rand()%100)/3.;
}
for (i=0; i<n; i++){
for (j=0; j<m; j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
sred=sred_arifm(a, n, m);
dif=fabs(sred-a[0][0]);
for (i=0; i<n; i++)
for (j=0; j<m; j++)
if (fabs(sred-a[i][j])<dif)
{
dif=fabs(sred-a[i][j]);
si=i;
sj=j;
}
cout<<si<<" "<<sj;
getch();
}
double sred_arifm(double **a,int n,int m)
{
double sum=0;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
sum=sum+a[i][j];
sum=sum/(n*m);
return sum;
}
В произвольном тексте, содержащем не более 10 строк, в каждой строке не более 80 символов. Вывести:
самую длинную строку текста;
самую короткую строку текста;
все симметричные строки (палиндромы) текста.
Определение, является ли строка симметричной оформить как функцию. Глобальных переменных не использовать.
using namespace std;
int poly(string str);
Int main()
{
int k=0;
string max, min, str;
Ifstream fout;
fout.open("f_out.txt");
If (!fout.Is_open())
{
cout<<"There is no F_OUT.TXT file \n";
cout<<"Program terminating \n";
exit(EXIT_FAILURE);
}
getline(fout, str);
max=str;
min=str;
while (fout.fail()==false)
{
if (min.size()>str.size())
min=str;
if (max.size()<str.size())
max=str;
if (poly(str)) cout<<str<<endl;
getline(fout, str);
}
cout<<max<<endl;
cout<<min<<endl;
getch();
}
int poly(string str)
{
int n=str.size();
for (int i=0; i<n/2; i++)
{
if (str[i]!=str[n-i-1])
return 0;
}
return 1;
}
В произвольном тексте, содержащем не более 10 строк, в каждой строке не более 80 символов, определить номера строк в которых встречаются знаки препинания. Считать, что в тексте встречаются только следующие знаки препинания: точка, запятая, точка с запятой, вопросительный знак, восклицательный знак, тире.
using namespace std;
int prep(string str);