Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Typedef struct

Пример выполнения задания

Пример выполнения задания

Пример выполнения задания

Составить программу поиска минимального и максимального элементов одномерного массива и их индексов.

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

 

void MinMax (int a[],int,int*,int*,int*,int*); // Прототип функции

 

int main ()

{

int a[10], i, n, min, imin, max, imax;

 

cout <<"Vvedite razmer massiva: "; // Ввод размерности массива

cin >>n;

cout <<"\nVvedite massiv:\n";

for (i=0; i<n; i++) // Ввод одномерного массива

{

cout <<"Vvedite a["<<i<<"]=";

cin >>a[i];

}

 

cout <<"\nMassiv a:\n"; // Вывод одномерного массива

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

cout <<setw(7)<<a[i];

cout <<endl;

 

MinMax (a, n, &min, &max, &imin, &imax); // Вызов функции

 

cout <<"\nMax="<<max<<setw(10)<<"i="<<imax;

cout <<"\nMin="<<min<<setw(10)<<"i="<<imin<<endl;

return 0;

}

// Функция поиска минимального и максимального элементов

// одномерного массива и их индексов

void MinMax (int a[],int n,int *min,int *max,int *imin,int *imax)

{

int i;

*min=*max=a[0]; // Инициализация значений

*imin=*imax=0;

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

{

if (a[i]<*min) { // Поиск минимального элемента и его индекса

*min=a[i];

*imin = i;

}

if (a[i]>*max) { // Поиск максимального элемента и его индекса

*max=a[i];

*imax = i;

}

}

}

 

Рисунок 5 – Результат выполнения программы

 

Написать программу перестановки минимального и максимального элементов двумерного массива размером NxM. Память для массива выделить динамически. результат. Предусмотреть использование функции пользователя.

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

 

// Прототип функции поиска минимального и максимального элементов

// двумерного массива

void Poisk (double**, int, int, int*, int*, int*, int*);

 

int main()

{

double **a, tmp;

int i, j, n, m, imin, jmin, imax, jmax;

 

cout << "Vvedite razmer massiva A:\n";

cout << "row n=";

cin >> n;

cout << "column m=";

cin >> m;

 

a = new double*[n]; // Выделение памяти под массив указателей

for(i=0; i<n; i++) // Выделение памяти под соответствующие

a[i] = new double[m]; // этим указателям строки матрицы

 

cout << "\nVvedite massiv A:\n"; // Ввод элементов двумерного массива

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

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

{

cout << "Vvedite a[" << i << "][" << j << "]: ";

cin >> a[i][j];

}

 

cout << "\nMassiv A:\n"; // Вывод элементов двумерного массива

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

{

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

cout << setw (9) << a[i][j];

cout << endl;

}

 

Poisk (a, n, m, &imin, &imax, &jmin, &jmax); // Вызов функции

 

tmp = a[imin][jmin]; // Перестановка элементов

a[imin][jmin] = a[imax][jmax];

a[imax][jmax] = tmp;

 

cout << "\nResult massiv:\n"; // Вывод результата

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

{

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

cout << setw (9) << a[i][j];

cout << endl;

}

 

for(i=0; i<n; i++) // Освобождение выделенной памяти

delete [] a[i];

delete []a;

a = NULL;

 

return 0;

}

// Функция поиска индексов минимального и максимального элементов массива

void Poisk (double **a,int n,int m,int *imin,int *imax,int *jmin,int *jmax)

{

int i, j;

 

*imin=*jmin=*imax=*jmax=0; // Инициализация значений индексов

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

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

{

if (a[i][j]<a[*imin][*jmin])

{ // Поиск индексов минимального элемента

*imin=i;

*jmin=j;

}

if (a[i][j]>a[*imax][*jmax])

{// Поиск индексов максимального элемента

*imax=i;

*jmax=j;

}

}

}

 

 

 

Рисунок 6 – Результат выполнения программы

 

 

Выделение памяти под двумерный динамический массив:

 

a = new double*[n]; // 1 Выделение памяти под массив указателей

for(i=0; i<n; i++) // 2 Выделение памяти под соответствующие

a[i] = new double[m]; // этим указателям строки матрицы

 

 

Написать программу формирования файла, содержащего экзаменационную ведомость студентов: фамилию и оценки по математике и программированию. Предусмотреть возможность чтения из файла. Вывести список студентов, сдавших экзамен по программированию с оценкой 9, и записать эту информацию в текстовой файл.

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

FILE *fl;

{

char fio[30];

unsigned char matem;

unsigned char oaip;

} TStudent;

TStudent stud[30]; // Массив структур

char name[20]; // Имя файла

int nst = 0; // Число введенных структур

int Menu (); // Создание меню

void Nnf (); // Ввод имени файла

void Newf (); // Создание нового файла

void Spisok (); // Формирование файла

void Opf (); // Открытие файла

void Resc (); // Вывод результата на экран

void Resf (); // Вывод результата в файл

int main ()

{

while (true)

{

switch (Menu ())

{

case 1: Nnf (); break;

case 2: Newf (); break;

case 3: Spisok (); break;

case 4: Opf (); break;

case 5: Resc (); break;

case 6: Resf (); break;

case 7: return 0;

default: puts("Viberite pravilno!");

}

puts ("Press any key to continue");

getch (); // Ожидание нажатия любой клавиши

system ("cls"); // Очистка экрана

}

}

int Menu () // Меню

{

cout << "VIBERITE:" << endl;

cout << " 1. Vvod file name" << endl;

cout << " 2. New file" << endl;

cout << " 3. Vvesti spisok" << endl;

cout << " 4. Open file" << endl;

cout << " 5. Vivesti result" << endl;

cout << " 6. Vivesti v fail" << endl;

cout << " 7. Exit" << endl;

int i;

cin >> i; // Ввод выбранного пункта меню

return i;

}

void Nnf () // Ввод имени файла

{

cout << "Vvedite file name" << endl;

cin >> name;

}

void Newf () // Создание нового файла

{

if ((fl = fopen (name," wb ")) == NULL)

{

cout << "Oshibka pri sozdanii" << endl;

exit (1);

}

cout << "OK" << endl;

fclose (fl);

}

void Spisok () // Ввод данных в файла

{

if ((fl = fopen (name," rb+ ")) == NULL)

{

cout << "Oshibka pri sozdanii" << endl;

exit (1);

}

cout << "Vvedite chislo studentov" << endl;

cin >> nst;

for (int i=0; i<nst; i++)

{

cout << "Vvedite imya: ";

cin >> stud[i]. fio;

cout << "Vvedite otcenku po matematike: ";

cin >> stud[i]. matem;

cout << "Vvedite otcenku po OAiP: ";

cin >> stud[i]. oaip;

fwrite (&stud[i], sizeof(TStudent), 1, fl);

}

fclose (fl);

}

void Opf () // Открытие бинарного файла

{

if ((fl = fopen (name," rb ")) == NULL)

{

cout << "Oshibka pri otkritii" << endl;

exit (1);

}

nst = 0;

TStudent std;

while (true)

{

int nwrt = fread (&std, sizeof(TStudent), 1, fl);

if (nwrt!= 1) break;

stud[nst] = std;

cout << stud[nst]. fio << " " << stud[nst]. matem << " "

<< stud[nst]. oaip << endl;

nst++;

}

fclose (fl);

}

void Resc () // Вывод результата на экран

{

for (int i=0; i<nst; i++)

if (stud[i]. oaip == ' 9 ') cout << stud[i]. fio << endl;

}

void Resf () // Вывод результата в текстовый файл

{

char namet[30];

FILE *ft;

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

cin >> namet;

if ((ft = fopen (namet," w ")) == NULL)

{

cout << "Oshibka pri sozdanii" << endl;

exit (1);

}

char s[80];

for (int i=0; i<nst; i++)

if (stud[i]. oaip == ' 9 ')

{

strcpy (s, stud[i]. fio);

strcat (s, " \n "); // Добавление разделителя строк

fputs (s, ft);

}

fclose (ft);

}

 

 

<== предыдущая лекция | следующая лекция ==>
Код программы. Написать программу вычисления выражения | Кратный интеграл : определение, т. существования, свойства
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 312; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.