Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Составление алгоритма решения задачи и его реализацияСтр 1 из 11Следующая ⇒
Оглавление
Программирование с использованием математических функций. 3
Форматный ввод-вывод 4
Составление алгоритма решения задачи и его реализация 5
Программирование алгоритмов циклической структуры 10
Обработка одномерных массивов 14
Обработка двумерных массивов 16
Программирование с использованием подпрограмм пользователя 24
Программирование с использованием собственных функций для обработки символьных данных 28
Программирование алгоритмов с использованием переменной структура 31
Организация перемещения объекта по заданной траектории 45
Динамическое распределение памяти, создание списка 59 Лабораторная работа №1 Знакомство со средой Borland C++. Программирование с использованием математических функций. Цель работы – изучение среды Borland C++, овладение навыками программирования с использованием математических функций. Задания для самостоятельной подготовки:
1. Изучить: · главное меню среды Borland C++; Задание к лабораторной работе: 1. создать новый файл программы под названием lab1.cpp; 2. в окне редактирования программного кода набрать код программы приведенной ниже; 3. исправить ошибки; 4. выполнить программу в пошаговом режиме.
#include <math.h> #define PI 3.14 viod main () { float a,b,x,y,z; clrscr(); z=3; y=2; x=3,4; a=((2*cos(x-PI/6)))/(1/2+pow(sin(y),2)) b=1+(pow(z,2)/(3+pow(z,2)/5)); return; }
Лабораторная работа №2 Форматный ввод-вывод Цель работы - овладение практическими навыками использования форматного ввода-вывода.
Задание к лабораторной работе:
#include <stdio.h> #include <conio.h> #include <math.h> #define PI 3.14 void main () { float a,b,x,y,z; clrscr(); a=((2*cos(x-PI/6)))/(1/2+pow(sin(y),2)); b=1+(pow(z,2)/(3+pow(z,2)/5));
return; } Лабораторная работа №3 Пример выполнения работы З а д а н и е А. Вычислить на ЭВМ значения y и p, используя расчетные формулы: при значениях a=0,59, z=-4,8, x=2,1.
Программа решения задачи имеет вид: #include <stdio.h> //подключение файла #include <math.h> //подключение файла void main () //заголовок функции main { float a,z,x,y,p; // объявление переменных printf (“Введите значения переменных a,z,x\n”); // вывод на экран сообщения scanf (“%f%f%f”, &a,&z,&x); // ввод значений переменных y=a*pow(tan(pow(x,2)),3)+sqrt(pow(z,2)/(pow(a,2)+ pow(x,2))); //расчет y p=log(a+ pow(x,2))+pow(sin(z/a),2); // расчет p printf (“Значения переменных:\n y=%10.3f\n p=%10.3f\n ”,y,p); //вывод значений переменных return; //завершение функции main } В качестве тестового набора исходных данных используем следующие значения переменных: a=1, z=1, x=0.5. Тогда вычисляемые значения y и p будут равны: y=0.911, p=0.233. Вычисленные значения следует сравнить со значениями, вычисленными на ЭВМ. З а д а н и е B. Вычислить на ЭВМ значение функции: при значениях a=1,3, b=1,29, t=0,38.
Программа решения задачи имеет вид:
#include <stdio.h> //подключение файла #include <math.h> //подключение файла void main () //заголовок функции main { float a,b,t,s; // объявление переменных printf (“Введите значения переменных a,b,t\n”); // вывод на экран сообщения scanf (“%f%f%f”, &a,&b,&t); // ввод значений переменных if (a*t<1) //если a*t<1 s=a*t+b; //то s рассчитывается по первой формуле else //иначе if (a*t= =1) // если a*t= =1 s=cos(a*t); // то s рассчитывается по второй формуле else // иначе s=exp(-a*t)*cos(a*t); // s рассчитывается по третьей формуле printf (“s=%10.3f\n”,s); //вывод значения переменной return; //завершение функции main } В качестве тестовых наборов исходных данных используем следующие значения переменных: 1. a=1, b=1, t=0.5, s=1.5; 2. a=1, b=1, t=1, s=0.5403; 3. a=2, b=1, t=1, s=-0.0563;
Вычисленные значения следует сравнить со значениями, вычисленными на ЭВМ.
Контрольные вопросы
Лабораторная работа №4 Пример выполнения работы З а д а н и е А. Вычислить на ЭВМ значение функции: при изменении аргумента t в диапазоне с шагом 0,1. Вывод значений t и s выполнить в виде таблицы. Программа решения задачи имеет вид:
#include <stdio.h> //подключение файла #include <math.h> //подключение файла void main () //заголовок функции main { float a,b,t,s,tn=0.1,tk=2.1,h=0.1; // объявление переменных с инициализацией printf (“Введите значения переменных a,b,t\n”); // вывод на экран сообщения scanf (“%f%f”, &a,&b); // ввод значений переменных printf (“Таблица функции S(T)\n” s t\n); //вывод шапки таблицы t=tn; //присвоение начального значения t while(t<=tk) // пока t меньше либо равно конечного значения {if (a*t<1) //если a*t<1 s=a*t+b; //то s рассчитывается по первой формуле else //иначе if (a*t= =1) // если a*t= =1 s=cos(a*t); // то s рассчитывается по второй формуле else // иначе s=exp(-a*t)*cos(a*t); // s рассчитывается по третьей формуле printf (“%10.3f%10.3f \n”,t,s); //вывод значений переменных t+=h; //увеличение t на величину шага } return; //завершение функции main } З а д а н и е Б. Вычислить значение суммы элементов бесконечного ряда с точностью до элемента ряда, меньшего е=10-4 для x=0,1. Определить число элементов ряда, вошедших в сумму. Для вычисления общего элемента ряда используем рекуррентное соотношение, выразив n-й элемент через (n-1)-й: ; Значение первого элемента ряда вычислим до цикла с помощью оператора присваивания а=x, а всех последующих элементов ряда по рекуррентному соотношению в цикле. Программа решения задачи имеет вид:
#include <stdio.h> //подключение файла #include <math.h> //подключение файла void main () //заголовок функции main { int n; float x,e,a,s; // объявление переменных printf (“Введите значения переменных x,e\n”); // вывод на экран сообщения scanf (“%f%f”, &x,&e); // ввод значений переменных a=x; s=0; n=1; //присвоение начальных значений do { s+=a; // накопление суммы n++; // увеличение n на 1 a*=-a*x*x/(2*n-2)*(2*n-1); //расчет следующего элемента } while(fabs(a)>=e) //пока текущий элемент a больше либо равен заданной точности e printf (“сумма элементов ряда=%10.3f\nчисло элементов=%10d \n”,s,n); //вывод значений переменных return; } //завершение функции main
Контрольные вопросы
Лабораторная работа №5
Пример выполнения работы Вычислить на ЭВМ наибольший элемент массива X(N), N<=7 и его порядковый номер. Проверить правильность работы программы при N=3 и значениях элементов массива (1.5, 4.3, 5.6, 2.4). При выполнении задания необходимо использовать прием нахождения наибольшего. Для этого перед циклом следует задать начальное значение наибольшего, равное первому элементу массива, а в цикле сравнивать наибольший с текущим элементом массива; в том случае, если текущий элемент больше наибольшего из предыдущих, то считать его наибольшим. Для нахождения порядкового номера наибольшего элемента массива необходимо перед циклом задать его начальное значение как номер первого элемента массива, а в цикле всякий раз, когда текущий элемент массива больше наибольшего, считать номером наибольшего номер текущего элемента массива.
Программа решения задачи имеет вид:
#include <stdio.h> //подключение файла void main () //заголовок функции main { float X[7], xmax; int i,N,nmax; // объявление переменных do {printf (“Введите размерность массива X в диапазоне от 1 до7\n”); // вывод на экран сообщения scanf (“%d”, &N); // ввод значения переменной }while(N<1||N>7); printf (“Введите %d элементов массива X\n”,N); // вывод на экран сообщения for(i=0;i<N;i++) // цикл по перебору элементов массива scanf (“%f”, &X[i]); // ввод значений элементов массива xmax=X[0]; nmax=0; // присвоение начального значения for(i=0;i<N;i++) // цикл по перебору элементов массива if (X[i]>xmax) //если текущий элемент больше значения наибольшего { xmax=X[i]; //то наибольшему присваивается значение текущего nmax=i; // индексу наибольшего присваивается индекс текущего } printf (“наибольший элемент=%10.3f\n его индекс=%2dn”,s); //вывод значений переменных
return; //завершение функции main }
Контрольные вопросы
Лабораторная работа №6 Пример выполнения работы В массиве L(N,M) N<=3, M<=4 найти столбец с наименьшей суммой элементов. На экран вывести номер столбца имеющего наименьшую сумму элементов, элементы этого столбца и сумму его элементов. Необходимо организовать вложенный цикл для перебора элементов массива по столбцам. Перед внешним циклом задать начальное значение номера столбца имеющего наименьшую сумму элементов (0) и начальное значение наименьшей суммы как сумму элементов первого столбца. Перед внутренним циклом задавать начальное значение суммы элементов текущего столбца (0). Во внутреннем цикле накапливать сумму элементов текущего столбца. После ее вычисления организовать сравнение суммы элементов текущего столбца с наименьшей суммой. В случае если сумма элементов текущего столбца меньше наименьшей суммы считать наименьшей суммой сумму элементов текущего столбца.
Программа решения задачи имеет вид:
#include <stdlib.h> //подключение файла #include <stdio.h> //подключение файла
void main () //заголовок функции main { float L[3][4], smin,s; int i,j,N,M,nmin; // объявление переменных do {printf (“Введите размерность массива N в диапазоне от 1 до3, M - от 1 до4 \n”); // вывод на экран сообщения scanf (“%d%d”, &N,&M); // ввод значения переменной }while(N<1||N>3||M<1||M>4); //пока введенные значения не лежат в заданном диапазоне randomize(); // инициализация датчика случайных чисел printf (“Массива L\n”); // вывод на экран сообщения for(i=0;i<N;i++) // цикл по перебору элементов массива по строкам { for(j=0;j<M;j++) {L[i][j]=(random(100)-50)/10.; //генерация случайного числа и присвоение его элементу массива printf (“%f”, L[i][j]); // вывод значения элемента массива } printf (“\n”); //переход на новую строку } nmin=0; smin=0; // присвоение начального значения for(i=0;i<N;i++) smin+=L[i][0]; //накопление суммы элементов первого столбца for(j=0;j<M;j++) // цикл по перебору элементов массива по столбцам { s=0; // присвоение начального значения for(i=1;i<N;i++) s+=L[i][j]; //накопление суммы элементов текущего столбца if (s<smin) //если меньше значения наименьшей суммы { smin=s; //то наименьшей сумме присваивается значение суммы элементов текущего столбца nmin=j; // индексу столбца, имеющего наименьшую сумму присваивается //индекс текущего столбца } } printf (“Номер столбца, имеющего наименьшую сумму элементов=%2d\n”,nmin);
printf (“Элементы столбца, имеющего наименьшую сумму элементов\n”); for(i=0;i<N;i++) printf (“%f”, L[i][0]); printf (“\nсумма элементов=%f\n”,smin); //вывод значений переменных return; //завершение функции main }
Контрольные вопросы
Лабораторная работа №7
Пример выполнения работы Задание. Написать программу, осуществляющую вывод и управление меню с подсветкой. Главное меню должно содержать пункты: 1. Ввод информации 2. Вывод информации 3. Выход При выборе первого пункта осуществить ввод в массив структур информации - ФИО рабочего; - год рождения; - табельный номер. При выборе второго пункта осуществить вывод меню второго уровня
Разместить функции программы создания светового меню в отдельных файлах. Объединить созданные файлы в проекте.
Программа решения задачи имеет вид:
Файл 1: void menu(int j, int c1, int c2, int ys, unsigned char *textmenu[]) { int i; textcolor(c1); textbackground(c2); for(i=0;i<j;i++) { gotoxy(1,ys); clreol(); cprintf("%s",textmenu[ys/2-1]); ys+=2; } // ys+=2; return; } Файл 2: int winmenu(char* u[]) { int y,predy; union { int p; unsigned char b[2]; } key; textbackground(0); clrscr(); window(7,3,73,22); textbackground(15); clrscr(); window(10,4,70,21); textbackground(2); clrscr(); y=2; predy=2; menu(3,0,2,2,u); menu(1,15,0,2,u); for(;;) { key.p=bioskey(0); switch (key.b[1]) { case 72: y-=2; if(y<2) y=6; break; case 80: y+=2; if(y>6) y=2; break; case 28: return y/2; } menu(1,0,2,predy,u); menu(1,15,0,y,u); predy=y; } } Файл 3:
int vvod(struct pass mas[]) { int i,kol; clrscr(); cprintf("Введите кол-во жителей:"); scanf("%d",&kol); for(i=0;i<kol;i++) { cprintf("\r\n"); cprintf("Введите ФИО: "); scanf("%s", &mas[i].fio); cprintf("\r\nВведите год рождение: "); scanf("%d", &mas[i].god); cprintf("\r\nВведите его табельный номер: "); scanf("%d", &mas[i].tabn); } return kol; }
Файл 4: void vivod(int k,struct pass mas[],int de) { int i; clrscr(); for(i=0;i<k;i++) switch(de) { case 1:cprintf("ФИО:%20s\r\nГод рождения:%5d\r\n",mas[i].fio,mas[i].god); break; case 2:cprintf("ФИО:%20s\r\nТабельный номер:%d\r\n",mas[i].fio,mas[i].tabn); break; case 3:cprintf("ФИО:%20s\r\nГод рождения:%5d\r\nТабельный номер:%d\r\n",mas[i].fio,mas[i].god,mas[i].tabn); } getch(); return; }
Файл 5:
#include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> #include<graphics.h> #include<math.h> #include<dos.h> #include<bios.h>
struct pass { char fio[30]; int god; int tabn; };
void main() { struct pass s[30]; int koll,R=1,P=1; unsigned char *textmenu1[]={"1.Ввод инфо","2.Вывод инфо","3.Выход"}; unsigned char *textmenu2[]={"1.Вывод ФИО и год рождения","2.Вывод ФИО и табельный номер","3.Вывод всей инфо"}; clrscr(); // koll=vvod(s); _setcursortype(_NOCURSOR); while(R!=3) { R=winmenu(textmenu1); switch(R) { case 1: koll=vvod(s); break; case 2: P=winmenu(textmenu2); vivod(koll,s,P); break; case 3: clrscr(); textcolor(4); cprintf("Программа выполнила недопустимую операцию и будет закрыта!!!"); getch(); } } return; } Контрольные вопросы
Лабораторная работа №8 Обработка символьных данных Цель работы – овладение навыкамиалгоритмизации и программирования задач, обрабатывающих символьные данные, ввода и вывода символьных данных, их обработки, использование стандартных функций обработки символьных данных.
Задания для самостоятельной подготовки: 1. Изучить: - правила записи символьных данных (констант, переменных, массивов) и их объявление; - способы ввода и вывода символьных данных; - способы обработки символьных данных; - использование стандартных функций обработки символьных данных. 2. Разработать алгоритм решения в соответствии с заданием. 3. Составить программу решения задачи. 4. Подготовить тестовый вариант исходных данных для проверки работы программы.
Задание к работе:
Таблица 6
Пример выполнения работы В строке удалить все лишние пробелы, оставляя между словами по одному пробелу. Обработку строки нужно производить с конца, чтобы не пропускать сочетание двух пробелов. Если встречаются два пробела подряд (текущий символ и предыдущий), удалить предыдущий символ путем копирования части строки с новой позиции, отличающейся от предыдущей на 1. Программа решения задачи имеет вид:
#include <stdio.h> //подключение файла #include <string.h> //подключение файла
void main () //заголовок функции main { char str[80],*n; int i; // объявление переменных printf (“Введите строку\n”); gets(str); //ввод строки i=strlen(str); //начальное значение (длина строки) while(i) //пока не конец строки (i не равно нулю) {if(*(str+i)= =’ ‘ &&(*(str+i-1)= =’ ‘) //если текущий и предыдущий символы пробелы {n=str+i-1; //n устанавливается на предыдущий символ while((*n=*(n+1))!=’\0’) //пока не конец строки, текущий символ переписывается на предыдущий n++; //переход к следующему символу } i--; //переход к предыдущему символу } if(*(str+strlen(str)-1)= =’ ‘) //если конечный символ пробел *(str+strlen(str)-1)=’\0’; //то он удаляется if(*(str)= =’ ‘) //если первый символ пробел {n=str; //запоминается номер текущей позиции while((*n=*(n+1))!=’\0’) //то он удаляется n++; } printf (“Строка без лишних пробелов:\n%s\n”,str); //вывод значения переменной return; //завершение функции main }
Контрольные вопросы
Лабораторная работа №9 Подпрограмм пользователя Цель работы – овладение навыками алгоритмизации и программирования задач с использованием подпрограмм пользователя, овладение навыками написания подпрограмм, выбора параметров подпрограмм, возврата из функции одного значения.
Задания для самостоятельной подготовки: 1. Изучить: · правила записи подпрограммы (функции) и обращения к ней; · способы передачи параметров в подпрограмму; · порядок выполнения программ, использующих подпрограммы. 2. Разработать алгоритм решения в соответствии с заданием. 3. Составить программу решения задачи. 4. Подготовить тестовый вариант исходных данных для проверки работы программы.
Задание к работе:
Таблица 7
Продолжение таблицы 7
Пример выполнения работы Подсчитать количество элементов целочисленных массивов А(4,5), кратные 3, и В(3,4), кратные 5, используя для подсчета функцию. Ввод и вывод элементов осуществлять в функциях. В подпрограммы ввода и вывода элементов массивов необходимо передавать массивы, их размер. Так как массивы передаются по ссылке, эти функции ничего не будут возвращать (тип функции void). В подпрограмму подсчета количества элементов необходимо передавать массивы, их размер и числовое значение (3 или 5), кратность элементов которому нужно определить. В подпрограмме подсчета количества элементов требуется организовать цикл по перебору всех элементов массивов (например, построчно), проверку текущего элемента на кратность соответствующему параметру, и увеличение счетчика чисел на 1, в случае истинности проверки. Функция возвращает один результат – значение счетчика чисел, поэтому тип функции int.
Программа решения задачи имеет вид:
#include <stdlib.h> //подключение файла #include <stdio.h> //подключение файла
void inparr2 (float X[][5], int N, int M) //заголовок функции inparr2 { int i,j; // объявление переменных randomize(); // инициализация датчика случайных чисел for(i=0;i<N;i++) // цикл по перебору элементов массива по строкам for(j=0;j<M;j++) X[i][j]=(random(100)-50)/10.; //генерация случайного числа и присвоение его элементу массива return; //завершение функции inparr2 }
void outarr2 (float Y[][5], int K, int L) //заголовок функции inparr2 { int i,j; // объявление переменных for(i=0;i<K;i++) // цикл по перебору элементов массива по строкам { for(j=0;j<L;j++) printf (“%f”, Y[i][j]); // вывод значения элемента массива printf (“\n”); //переход на новую строку } return; //завершение функции outarr2 }
int countsh (float C[][5], int N, int M, int k) //заголовок функции countsh { int i,j,coun; // объявление переменных coun=0; //присвоение начального значения for(i=0;i<N;i++) // цикл по перебору элементов массива по строкам for(j=0;j<M;j++) if(C[i][j]%k= =0) // проверка кратности текущего элемента coun++; //увеличение счетчика чисел на 1 return coun; //завершение функции countsh }
void main () //заголовок функции main { float A[4][5], B[3][5]; int counA,counB; // объявление переменных inparr2(A,4,5); inparr2(B,3,4); // вызов функции inparr2 printf (“Массив A\n”); outarr2(A,4,5); // вызов функции outarr2 printf (“Массив B\n”); outarr2(B,3,4); // вызов функции outarr2 counA = countsh(A,4,5,3); counB= countsh(B,3,4,5); // вызов функции countsh printf (“Количество элементов, кратных 3 в массиве A=%3d\n”, counA); printf (“Количество элементов, кратных 5 в массиве B=%3d\n”, counB); //вывод значений переменных return; //завершение функции main }
Контрольные вопросы
Лабораторная работа №10 Пример выполнения работы Задана строка. Спроектировать и написать функцию, осуществляющую вставку последовательности символов в строку с заданной позиции (вставляемая последовательность задается пользователем). В функцию вставки необходимо передавать три параметра: исходную строку, вставляемую строку, номер символа после которого осуществлять вставку. Функция возвращает один результат – адрес полученной строки (совпадает с адресом исходной строки). Исходная строка состоит из двух частей: первой подстроки – после которой нужно осуществить вставку символов, и второй – перед которой нужно осуществить вставку символов. В функции объявляется локальная переменная – указатель на char. В нее запоминается адрес символа, перед которым будет осуществлена вставка (адрес начала второй подстроки). На позицию вставки (после первой подстроки) записывается символ ‘\0’ – признак окончания строки. Добавляется вставляемая строка и вторая подстрока, адрес которой был запомнен в локальной переменной.
Программа решения задачи имеет вид: #include <stdio.h> //подключение файла #include <string.h> //подключение файла
char *insertstr (char *s,int n1,char *t) //заголовок функции insertstr { //объявление локальной переменной-указателя char *l; strcpy(l,s+n1); //копирование второй части строки s[n1]='\0'; //запись '\0' на позицию вставки strcat(s,t); //добавление вставляемой строки strcat(s,l); //добавление второй части строки return s; //завершение функции insertstr }
void main() //заголовок функции main {char str[255], a[80]; int n; // объявление переменных printf("Введите строку\n"); gets(str); printf("Введите вставляемую последовательность\n"); gets(a); printf("Введите номер символа после которого осуществлять вставку\n"); scanf(“%d”,&n) //ввод значений переменных strcpy(str,insert(str,n,a)); //вызов функции strcpy, копирующей в str, значение, Возвращаемое функцией insert printf("Полученная строка\n%s\n",str); //вывод значения переменной return; //завершение функции main } Контрольные вопросы
Лабораторная работа №11 Пример выполнения работы Задание. Написать программу, осуществляющую ввод информации о результатах сдачи студентами экзаменационных сессий, количество семестров не более 9, количество оценок в семестре не более 6: - фамилия студента; - группа; - оценки. Вывести на экран введенную информацию в виде таблицы и информацию о студентах, имеющих средний балл выше 3.
Программа решения задачи имеет вид:
#include<stdio.h> #include<conio.h>
void main() { struct student { char fio[25],gr[7]; // Ф.И.О. студента int mark[9][6],kurs,kol[9]; // оценки по семестрам, курс, сессии }st[250]; int m,kolst,i,j,l,k,n,p,o,q,s; float sr;
printf("\n Введите количество студентов:"); scanf("%d",&kolst);
for (i=0; i<kolst;i++) // ввод информации о студентах { printf("Введите фамилию:"); scanf("%s",&st[i].fio); printf("Введите группу:"); scanf("%s",&st[i].gr); printf("Введите курс:"); scanf("%d",&st[i].kurs); if (st[i].kurs==5) // это чтобы не было 10 сессии l=1; else l=0;
for (j=0;j<st[i].kurs*2-l;j++) { printf("Введите количество оценок в %d семестре:",j+1); scanf("%d",&st[i].kol[j]); printf("Введите оценки за %d семестр:",j+1);
for (k=0;k<st[i].kol[j];k++) scanf("%d",&st[i].mark[j][k]); } } printf("Информация о студентах \n"); printf("┌─────────┬────────┬───────┬────────┬───────────┐\n"); printf("│ФИО студента│ Группа │ Курс │ Семестр │ Оценки │\n"); printf("│ │ │ │ ├─┬─┬─┬─┬─┬─│\n"); printf("├─────────┼────────┼───────┼────────┼─┼─┼─┼─┼─┼─┤\n"); m=0; // кол-во студентов с баллом выше 3
for (i=0; i<kolst;i++) // цикл по студентам { sr=0; // средний балл n=0; // количество оценок if(st[i].kurs==5) l=1; else l=0;
for (j=0;j<st[i].kurs*2-l;j++) // цикл по семестру (сколько проучился) {
for (k=0;k<st[i].kol[j];k++) // цикл по оценкам в j-той сессии sr+=st[i].mark[j][k]; // k-тая оценка в j-той сессии n+=st[i].kol[j]; } sr/=n; \\средний балл
if (sr>=4) { printf("│ %-16s│ %-7s", st[i].fio,st[i].gr);
for (p=1;p<st[i].kurs+1;p++) // вывод курса { printf("│%-7d",p);
for (o=2*p-l-1;o<2*p-l+1;o++) // вывод o-того семестра { printf("│%-8d",o);
for (q=0;q<st[i].kol[o-1];q++) // вывод оценок в o-том семестре printf("│%-d",st[i].mark[o-1][q]);
if (q<6) // чтобы были пустые ячейки, если оценок меньше 6 for (s=0;s<6-q;s++) printf("│ "); printf("│\n"); // переход на следующую строку в таблице printf("│ │ │ "); } printf("│ │ │ │ │ │ │ │\n"); printf("│ │ "); } printf("│ │ │ │ │ │ │ │ │\n"); m++; } } printf("└─────────┴────────┴───────┴────────┴─┴─┴─┴─┴─┴─┘\n");
if (m= =0) printf("Студенты, имеющие средний балл, больший 3,отсутствуют\n"); getch(); return; }
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-19; просмотров: 385; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.128.78.41 (0.496 с.) |