Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C++ / лабы / Домашки / Сборка / ОтчетDZ (3)

.doc
Скачиваний:
23
Добавлен:
30.04.2013
Размер:
10.66 Mб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Московский государственный институт электроники и математики (технический университет)

Кафедра «Вычислительная техника»

ОТЧЕТ

о домашней работе

Вариант: 22

Исполнитель:

студент группы С-31

Москва – 2009г.

Постановка задачи.

Программа 1:

Даны два целочисленных массива. Определить, можно ли в первом из них выбрать такие к идущих подряд элементов, что бы x[j] = y[1], x[j+1] = y[2] ... x[j + k - 1] = y[k]

Программа 2:

Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами

Программа 3:

Из заданного числа вычли сумму его цифр. Из результата вновь вычли сумму его цифр и т.д. Через сколько таких действий получится нуль?

Программа 4:

Дана строка, содержащая текст на русском языке. Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву.

Программа 1.

1. 1. Исходный код

cout <<"Dany dva celochislennyh massiva:Opredelit mojno li v pervom iz nih vybrat takie K iduschih podryad elementovb chto by x[j]=y[1],x[j+1]=y[2]...x[j+k-1]=y[k]"<< endl;

int x[100];

int y[100];

int nx,ny;

int i,k,j,m;

int rez;

char lett;

cout << "Razmer massiva X: ";

cin >> nx;

cout << "Razmer massiva Y: ";

cin >> ny;

cout << endl;

for (i = 0; i < nx; i++) {

cout << "x[" << i + 1 << "] = ";

cin >> x[i];

}

cout << endl;

for (i = 0; i < ny; i++) {

cout << "y[" << i + 1 << "] = ";

cin >> y[i];

}

cout << endl << "k = ";

cin >> k;

rez = 0; //rezultat

if((k <= nx)&&(k <= ny)){

j = 0;

while((rez == 0)&&(j <= (nx-k))){

rez = 1;

for(m = 0; m < k; m++){

if(x[j+m] != y[m]) rez = 0;

}

j++;

}

}

if(rez == 0){

cout << endl << "Nel'zja!" << endl;

}

else{

cout << endl << "Mozhno!" << endl;

}

  1. 2. Схема алгоритма кода программы.

  1. 3. Внешняя спецификация

Программа 2 (Ввод из файла, сохранение результата в файл).

2. 1. Исходный код.

cout << "Nayti naibolshiy i naimen'shiy elementy pryamougol'noy matricy i pomenyat' ih mestami" << endl;

int x[100][100];

int n,m;

int i,j;

int i_min,j_min,x_min;

int i_max,j_max,x_max;

int tmp;

FILE *fl;

if ((fl = fopen("data1.txt", "rt"))

== NULL)

{ fprintf(stderr, "Ne mogu otkrit.\n");

}

cout << "Chtenie proizvoditsya iz faila data1" << endl;

n=4;

m=4;

char s[5],d[100],buf[50];

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

{

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

{

fgets(s,5,fl);

x[i][j]=atoi(s);

}

}

//poisk minimuma i maksimuma

x_min = x[0][0];

i_min = 0;

j_min = 0;

for (i = 0; i < m; i++) {

for (j = 0; j < n; j++) {

if(x_min > x[i][j]){

x_min = x[i][j];

i_min = i;

j_min = j;

}

}

}

x_max = x[0][0];

i_max = 0;

j_max = 0;

for (i = 0; i < m; i++) {

for (j = 0; j < n; j++) {

if(x_max < x[i][j]){

x_max = x[i][j];

i_max = i;

j_max = j;

}

}

}

//vyvod

cout << endl << "Input:" << endl;

for (i = 0; i < m; i++) {

for (j = 0; j < n; j++) {

cout << x[i][j] << "\t";

}

cout << endl;

}

//menjaem mestami

tmp = x[i_min][j_min];

x[i_min][j_min] = x[i_max][j_max];

x[i_max][j_max] = tmp;

//vyvod

cout << endl << "Rezult:" << endl;

for (i = 0; i < m; i++) {

for (j = 0; j < n; j++) {

cout << x[i][j] << "\t";

}

cout << endl;

}

cout << "Vvedite imya faila:" << endl;

cin >> d;

FILE *file;

char* file_name = d;

char load_string[100] = "none";

file = fopen( file_name, "a" );

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

{

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

{

sprintf(buf," %d",x[i][j]);

fputs(buf, file );

}

fputs("\n", file );

}

fclose( file );

  1. 2. Схема алгоритма кода программы.

  1. 3. Внешняя спецификация

Программа 3 (методом случайной генерации).

3. 1. Исходный код.

int x;

int k;

cout << "Iz zadannogo chisla vychli summu ego cifr. Iz rezul'tata vnov' vychli summu ego cifr i t.d. Cherez skol'ko takih deystviy poluchitsya nul'?" << endl;

x=(rand() % 100);

cout << "X = "<<x<<endl;

k = 0;

while(x > 0){

x -= summ(x);

k++;

}

cout << endl << "k = " << k << endl;

}

3. 2. Схема алгоритма кода программы.

  1. 3. Внешняя спецификация

Программа 4.

4. 1. Исходный код.

cout << "Dana stroka, soderjaschaya tekst na russkom yazyke.Podschitat' kolichestvo slov,nachinayuschihsya i zakanchivayuschihsya na odnu i tu je bukvu." << endl;

int n,k,j;

int s_l,s_r,i;

char str[255];

cout << "Vvedite stroku:" << endl;

gets(str);

n = strlen(str);

cout << endl;

s_l = 0;

k = 0;

do{

i = s_l;

while((i<n)&&(str[i]!=' ')){

i++;

}

s_r = i;

if(str[s_l]==str[s_r - 1]){

k++;

}

s_l = s_r + 1;

} while(s_r < n);

cout << "k = " << k << endl;

4. 2. Схема алгоритма кода программы.

  1. 3. Внешняя спецификация

Соседние файлы в папке Сборка