Курсовая работа: Работа с языками С и С++
}
cout<<"Введите название БП
№"<<n+1<<endl;
for (i=0;; i++) {
k->name [i] =cin. get ();
if (k->name [i] =='\n') {
k->name [i] ='\0';
break;
}
if (k->name [i] <31 || k->name [i]
>126 || i>38) {
k->name [i] ='\0';
while (cin. get ()! ='\n')
continue;
break;
}
}
cout<<"Введите количество
разьёмов БП №"<<n+1<<endl;
cin>>k->a;
while (cin. fail ()) {
cout<<"Недопустимое число. Попробуйте ещё раз"<<endl;
cin. clear ();
while (cin. get ()! ='\n')
continue;
cin>>k->a;
}
while (cin. get ()! ='\n')
continue;
cout<<"Введите мощность БП
№"<<n+1<<endl;
cin>>k->p;
while (cin. fail ()) {
cout<<"Недопустимое число. Попробуйте ещё раз"<<endl;
cin. clear ();
while (cin. get ()! ='\n')
continue;
cin>>k->p;
}
cout<<"Закончить (y/any key)"<<endl;
while (cin. get ()! ='\n')
continue;
y=cin. get ();
y=toupper (y);
k->I=k;
k->number=n+1;
if (y=='Y') {
k->next=NULL;
}
else{
k->next= (struct e*) malloc (sizeof (struct
e));
k->next->pre=k;
k=k->next;
}
}
system ("clear");
printf ("Ввод закончен");
return n;
}
“vyvodAll. cpp”
Функция vyvodAll () выводит все записи
на экран в виде отформатированной таблицы.
Принимаемые значения: указатель на первый элемент
Возвращаемые значения: нет
#include "my. h"
void vyvodAll (struct e *k) Мощность
“vyvodOne. cpp”
Функция vyvodOne () выводит одну запись
на экран по её номеру.
Принимаемые значения: количество считанных элементов, указатель
на первый элемент. Возвращаемые значения: нет
#include "my. h"
void vyvodOne (struct e *k, int n) {
int j, i;
system ("clear");
printf ("Какую запись вывести? \n");
while (! scanf ("%d",&i)) {
printf ("Неверное число\n");
while (getchar ()! ='\n')
continue;
}
if (i>n || i<1)
printf ("Нет такой записи\n");
else{
while (k->number! =i) {
k=k->next;
}
printf (". | Год | Название | Разъёмы | Шум | Мощность |\n");
for (j=0; j<77; j++)
printf ("=");
printf ("\n% -2d|% -5s|% -40s|% -9d|%
-5hd|% -9hd|\n",k->number,k->year,k->name,k->a,k->db,k->p);
for (j=0; j<77; j++)
printf ("-");
}
return;
}
“max3. cpp”
Функция max3 () - поиск БП с максимальным
количеством разъёмов
Принимаемые значения: указатель на первый элемент
Возвращаемые значения: нет
#include"my.
h"
void max3 (struct e *k) {
struct e *q;
q=k;
while (1) {
if (k->a>q->a)
q=k;
if (k->next==NULL)
break;
k=k->next;
}
printf ("Максимальным количеством разъёмов
обладает БП #%d: %d",q->number,q->a);
return;
}
“min4. cpp”
функция min4 () - поиск БП минимальной
мощности
Принимаемые значения: указатель на первый элемент
Возвращаемые значения: нет
#include"my. h"
void min4 (struct e *k) {
struct e *q;
q=k;
while (1) {
if (k->p<q->p)
q=k;
if (k->next==NULL)
break;
k=k->next;
}
printf ("Минимальным количеством разъёмов
обладает БП #%d: %hhd",q->number,q->p);
return;
}
“ buble. cpp”
Функция buble () - сортировка методом
пузырька для количества разъёмов (по возростанию)
Принимаемые значения: количество считанных элементов, указатель
на указатель на первый элемент
Возвращаемые значения: нет
#include "my. h"
void buble (struct e **head, int n) {
struct e *k;
k=*head;
int f,j;
for (j=0; j< (n-1); j++) {
for (f=0; f< (n-1); f++) {
if ( (k->a) > (k->next->a)) {
f2s (k,k->next,head);
k=k->pre;
k->number=k->number+k->next->number;
k->next->number=k->number-k->next->number;
k->number=k->number-k->next->number;
}
k=k->next;
}
k=*head;
}
printf ("Отсортировано");
return;
}
“ insertion. cpp”
Функция insertion () - сортировка вставками
для мощности (по убыванию)
Принимаемые значения: указатель на указатель на первый элемент
Возвращаемые значения: нет
#include "my.
h"
void insertion (struct e **head) {
struct e *q;
q= (*head) - >next;
while (q->next! =NULL) {
for (q= (*head) - >next; q->next! =NULL
&& q->p<=q->pre->p;)
q=q->next;
if (q->p>q->pre->p) {
while (q->p>q->pre->p) {
f2s (q->pre, q, head);
q->number=q->number+q->next->number;
q->next->number=q->number-q->next->number;
q->number=q->number-q->next->number;
if (q->pre==NULL)
break;
}
}
}
printf ("Отсортировано");
return;
}
“ writeFileB ”
Функция writeFileB () - функция записи
данных из памяти в бинарный файл. Если программа была запущена с параметрами, то
в качестве имени файла выступит аргумент из командной строки.
Функция написана с использованием потоковых классов С++
Принимаемые значения: количество аргументов, принятых функцией
main () из командной строки, указатель на массив указателей
на строки, считанные как аргумент из командной строки
Возвращаемые значения: нет
#include "my. h"
using namespace std;
void writeFileB (struct e *k, int argc, char
**argv) {
int i;
char name [11];
if (argc<2) {
while (cin. get ()! ='\n')
continue;
readName (name);
if (name [0] =='\0')
return;
}
else
strcpy (name, * (argv+1));
ofstream f (name, ios:: binary);
if (f. fail ()) {
cout<<"Невозможно создать файл c именем"<<name<<endl;
return;
}
system ("clear");
cout<<"Файл с именем '"<<name;
while (1) {
f. write ( (char*) k->year,5);
f. write ( (char*) k->name,40);
f. write ( (char*) &k->a,4);
f. write ( (char*) &k->db,2);
f. write ( (char*) &k->p,2);
if (k->next==NULL)
break;
else
k=k->next;
}
if (f. fail ())
cout<<"' не создан";
if (! f. fail ())
cout<<"' создан";
f. close ();
return;
}
“ readFileB ”
Функция readFileB () - функция для чтения
данных из файла.
Если программа была запущена с параметрами, то в качестве имени
файла выступит аргумент из командной строки.
Функция написана с использованием потоковых классов С++
Принимаемые значения: количество аргументов, принятых функцией
main () из командной строки; указатель на массив указателей
на строки, считанные как аргумент из командной строки; указатель на указатель на
первый элемент; указатель на количество считанных элементов
Возвращаемые значения: нет
#include "my. h"
using namespace std;
void readFileB (struct e **head, int *n, int
argc, char **argv) {
char name [10];
struct e *k;
*head= (struct e*) malloc (sizeof (struct e));
k=*head;
if (argc>2)
strcpy (name, * (argv+1));
else{
while (cin. get ()! ='\n')
continue;
readName (name);
if (name [0] =='\0')
return;
}
ifstream f (name, ios:: binary);
if (f. fail ()) {
cout<<"Невозможно открыть файл c именем "<<name<<endl;
return;
}
else
cout<<"Файл с именем '"<<name<<"'
прочитан";
f. clear ();
k->pre=NULL;
for (*n=1;; (*n) ++) {
f. read ( (char*) k->year,5);
f. read ( (char*) k->name,40);
f. read ( (char*) & (k->a),4);
f. read ( (char*) & (k->db),2);
f. read ( (char*) & (k->p),2);
k->I=k;
k->number=*n;
if (f. peek ()! =EOF) {
k->next= (struct e*) malloc (sizeof (struct
e));
k->next->pre=k;
k=k->next;
}
else{
k->next=NULL;
break;
}
}
f. close ();
return;
}
“ nameSort ”
Функция nameSort () - функция для сортировки
дискового файла по по полю с именем БП. Сортировка происходит методом пузырька.
Если программа была запущена с параметрами, то в качестве имени файла выступит аргумент
из командной строки.
Принимаемые значения: Указатель на строку, содержащую имя файла
Возвращаемые значения: нет
Страницы: 1, 2, 3, 4 |