Смекни!
smekni.com

Разработка сервисных программ для обслуживания администрации деканата учебной части вуза коменданта (стр. 3 из 5)

1. Функция int strlen (const char* s); - определяет длину строки s. Возвращает количество символов, предшествующих завершающему нулевому символу. Обратите внимание, завершающий ноль-символ в длину не включается. Например,

2. cout << strlen(«Hello!»); // на экране будет 63. 4. char *str = «one»;5. cout << strlen(str); // на экране будет 3

6. Функция char *strcpy(char *s1, const char *s2); - копирует строку s2 в массив символов s1. Возвращает значение s1. Массив символов s1 должен быть достаточно большим, чтобы хранить строку и ее завершающий нулевой символ, который также копируется. Например,

7. char str[25]; // объявляем символьный массив из 25 элементов8. char *ps = new char [25]; /* объявляем указатель на символ и9. динамически выделяем память под 25 символов */10. 11. strcpy(str, «ABCDE»); // копируем в str строковыю константу «ABCDE»12. cout << str; // выводим str на экран. На экране будет ABCDE13. 14. strcpy(ps, «QWERTY»); // копируем в ps строковыю константу «QWERTY»15. cout << ps; // выводим ps на экран. На экране будет QWERTY16. 17. delete[] ps; // освобождаем память

Обратите внимание, если Вы хотите, чтобы одна строка содержала другую, Вы должны скопировать ее содержимое, а не присвоить! Так, например, в данном случае инструкция ps = «QWERTY» была бы ошибочна. Компилятор, встречая такую инструкцию, создают строку «QWERTY», за которой следует нулевой символ и присваивает значение начального адреса этой строки (адреса символа Q) переменной ps. Таким образом, теряется исходное значение ps, а значит невозможно корректно освободить память под ps.

18. Функция int *strcmp(const char *s1, const char *s2); - сравнивает строки s1 и s2 (по ASCII-кодам). Функция возвращает значение 0, если строки s1 и s2 равны, значение меньше ноля, если строка s1 меньше s2, и значение больше ноля, если s1 больше s2. Обратите внимание, строки сравниваются не по длине, а посимвольно, по ASCII-кодам ( т.е. «g» больше «ff»). Например,

19. cout << strcmp(«compare», «string»); /* на экране будет -1, поскольку20. «compare» меньше «string» */21. 22. cout << strcmp(«abcde», «abc»); /* на экране будет 1, поскольку23. «abcde» больше «abc» */24. cout << strcmp(«one», «one»); /* на экране будет 0, поскольку25. строки равны */

26. Функция char *strcat(char *s1, const char *s2); - добавляет строку s2 к строке s1. Первый символ строки s2 записывается поверх ноль-символа строки s1. Возвращает s1. Под s1 должно быть выделено памяти не меньше чем (strlen(s1)+strlen(s2)+1). Например,

27. char st1[25] = «День»;cout << strcat(st1, « добрый!»); // на экране будет День добрый!

28. Функция char *strncpy(char *s1, const char *s2, int n); - копирует не _олее n символов строки s2 в массив символов s1. Возвращает s1.

29. Функция char *strncmp(char *s1, const char *s2, int n); - сравнивает до n символов строки s1 со строкой s2. Возвращает 0, меньше, чем 0 или больше, чем 0, если s1 соответственно равн, меньше или больше s2.

30. Функция char *strncat(char *s1, const char *s2, int n); - присоединяет первые n символов строки s2 в строку s1. Возвращает s1.

31. Функция char *strchr(const char *s, int c); - проверяет строку s на содержание символа хранящегося в c. Результатом функции является адрес первого вхождения символа c в строку s. Если символ не найден, возващается NULL. Например,

32. char str[20] = «ABCDEXYZ»;cout << strchr(str, 'X'); // на экране будет XYZ

или

char str[20] = «ABCDEXYZ»;if (strchr(str, 'q') == NULL) cout << «Нет такого символа!»;

33. Функция char *strstr(const char *s1, const char *s2); - проверяет строку s1 на содержание подстроки s2. Результатом функции является адрес первого вхождения подстроки s2 в строку s1. Если подстрока не найдена, возващается NULL. Например,

34. char str[20] = «ABCDEXYZ»;35. char *ps = strstr(str, “DEX”);36. if (ps != NULL)37. cout << ps;38. else39. cout << «Нет такой подстроки!»;40. // На экране будет DEXYZ

41. Функция char *strlwr(char *s); - конвертирует строку к нижнему регистру (т.е. переводит строку в строчные символы). Например,

42. char str[30] = “ABCDE_123_ijk_XYZ”;43. cout << strlwr(str);44. // на экране будет abcde_123_ijk_xyz

45. Функция char *strupr(char *s); - конвертирует строку к верхнему регистру (т.е. переводит строку в прописные символы).

46. Функция char *strset(char *s, int ch); - заменяет ВСЕ символы в строке s на символ ch. Например,

47. char str[30] = «ABCDE»;cout << strset(str, 'x'); // на экране будет xxxxx

48. Функция char *strnset(char *s, int ch, int n); - заменяет первые n символов в строке s на символ ch.

49. Функция char *strrev(char *s); - меняет порядок следования символов в строке на противоположный (меняет первый символ с последним, второй символ с предпоследним и т.д.). Например,

50. char str[30] = «12345»;cout << strrev(str); // на экране будет 54321

4.1.3 Описание разработанных функций

Сортировка студентов по успеваемости.

Алгоритм

Из элемента массива типа student котрый содержит в себе массив с оценками ball с помощью функции sortirovka находится средний балл (сумма балов по предметам делится на количество предметов). Затем этот балл в зависимости от балла пишется список студентов имеющих разные средние баллы.

void one (student student1[100])//функция первого пункта меню

{

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

{

if ((base[i].srednyi_ball>=0)&&(base[i].srednyi_ball<=60))

{

cout<<"&bsol;n ---------------------------------------------------------------";

cout<<"&bsol;n studenty imeyshie sredniy ball nizhe 60:";

cout<<"&bsol;n ---------------------------------------------------------------";

cout<<endl;

cout<<student1[i].familia<<" ";

cout<<student1[i].imya<<" ";

cout<<student1[i].otchestvo<<" ";

cout<<"srednyi ball:"<<base[i].srednyi_ball<<endl;

cout<<"&bsol;n ---------------------------------------------------------------";

}

if ((base[i].srednyi_ball>=60)&&(base[i].srednyi_ball<=75))

{

cout<<"&bsol;n ---------------------------------------------------------------";

cout<<"&bsol;n studenty imeyshie sredniy ball bolshe 60 i nizhe 75:";

cout<<"&bsol;n ---------------------------------------------------------------";

cout<<endl;

cout<<student1[i].familia<<endl;

cout<<student1[i].imya<<endl;

cout<<student1[i].otchestvo<<endl;

cout<<"srednyi ball:"<<base[i].srednyi_ball<<endl;

cout<<"&bsol;n ---------------------------------------------------------------";

}

if ((base[i].srednyi_ball>=75)&&(base[i].srednyi_ball<=90))

{

cout<<"&bsol;n ---------------------------------------------------------------";

cout<<"&bsol;n studenty imeyshie sredniy ball bolshe 75 i nizhe 90:";

cout<<"&bsol;n ---------------------------------------------------------------";

cout<<endl;

cout<<student1[i].familia<<endl;

cout<<student1[i].imya<<endl;

cout<<student1[i].otchestvo<<endl;

cout<<"srednyi ball:"<<base[i].srednyi_ball<<endl;

cout<<"&bsol;n ---------------------------------------------------------------";

}

if ((base[i].srednyi_ball>=90)&&(base[i].srednyi_ball<=100))

{

cout<<"&bsol;n ---------------------------------------------------------------";

cout<<"&bsol;n studenty imeyshie sredniy ball bolshe 90 nizhe 100:";

cout<<"&bsol;n ---------------------------------------------------------------";

cout<<endl;

cout<<student1[i].familia<<endl;

cout<<student1[i].imya<<endl;

cout<<student1[i].otchestvo<<endl;

cout<<"srednyi ball:"<<base[i].srednyi_ball<<endl;

cout<<"&bsol;n ---------------------------------------------------------------";

} } k++;

}

Вот функция для нахождения среднего балла

float sortirovka(int ball[100], int kolvo_predmetov)

{ float sum=0;

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

{

sum+=ball[i];//Сумма баллов по предметам

}

return sum/kolvo_predmetov;//Возврат среднего балла

}


Рисунок 1 – работа 1 пункта меню

4.1.2

Вывод таблицы успеваемости студента по предметам

Алгоритм

Для выполнения данного пункта меня было создано три строки. В эти строки пользователь вносит данные о студенте таблицу успеваемости которого он хочет получить

char familia[30];

char imya[30];

char otchestvo[30];

Далее эти строки с помощью функции strcmp сравнивает введенные данные с уже существующими. Если во всех 3 случаях функция возвращает 0, то выводится таблица успеваемости студента.

void two(student student1[100],predmety predmety1[100])

{

char familia[30];

char imya[30];

char otchestvo[30];

cout<<"&bsol;n vvedite familiy stydenta :";

cin>>familia;

cout<<"&bsol;n vvedite imya studenta:";

cin>>imya;

cout<<"&bsol;n vvedite otchestvo studenta:";

cin>>otchestvo;

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

{

if ((strcmp(familia,student1[i].familia)==NULL)&&(strcmp(imya,student1[i].imya)==NULL)&&(strcmp(otchestvo,student1[i].otchestvo)==NULL))

{

cout<<"&bsol;n Ocenki studenta:"<<student1[i].familia<<" "<<student1[i].imya<<" "<<student1[i].otchestvo;

cout<<endl;

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

for (k=0;k<kolvo_predmetov;k++)

{

cout<<predmety1[j].nazvanie_predmeta;

cout<<" ocenka:"<<student1[i].ball[k];

cout<<endl;

j++;

}

}

}

}

Рисунок 2- работа 2 пункта меню


4.1.3

Вывод списка иногородних студентов .

Алгоритм

Вводится название города, где находится институт. Затем с помощью функции strcmp программа сравнивает поле char gorod[30]; каждого элемента массива типа student с введенным названием города если функция возвращает не 0, то выводится имя, фамилия, отчество иногородних студентов и результат счетчика их количества.

void three(student student1[100])

{

int inogorodnie=0;

char gorod[20];

cout<<"&bsol;n vvedite nazvani goroda gde naxoditsya instityt:";

cin>>gorod;

cout<<"&bsol;n inogorodnie studenty:";

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

{

if (strcmp(gorod,student1[i].gorod)!=0)

{

cout<<student1[i].familia<<" "<<student1[i].imya<<" "<<student1[i].otchestvo<<endl;

inogorodnie++;

}

}

cout<<"&bsol;n colichestvo inogorodnyx stydentov:"<<inogorodnie;

}


Рисунок 3-работа 3 пункта меню

4.1.4 Вывод списка городских студентов

Алгоритм

Вводится название города, где находится институт. Затем с помощью функции strcmp программа сравнивает поле char gorod[30]; каждого элемента массива типа student с введенным названием города если функция возвращает 0, то выводится имя, фамилия, отчество городских студентов и результат счетчика их количества.

void four(student student1[100])

{

int gorodskie=0;

char gorod[20];

cout<<"&bsol;n vvedite nazvani goroda gde naxoditsya instityt:";

cin>>gorod;

cout<<"&bsol;n inogorodnie studenty:";

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

{

if (strcmp(gorod,student1[i].gorod)==0)

{

cout<<student1[i].familia<<" "<<student1[i].imya<<" "<<student1[i].otchestvo<<endl;

gorodskie++;

}

}

cout<<"&bsol;n colichestvo gorodskix stydentov:"<<gorodskie;

}

Рисунок 4-работа 4 пункта меню

4.1.5 Вывод количества бюджетников.