КАТЕГОРИИ: Архитектура-(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; Просмотров: 336; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |