Автор работы: Пользователь скрыл имя, 11 Ноября 2014 в 22:29, лабораторная работа
Сведения о составе комплектующих личных ПЭВМ в студенческой группе: фамилия владельца, число и тип процессоров, Объем памяти, тип видеоконтроллера (встроенный, внешний, AGP, PCI) и объем видеопамяти, тип (SCSI/IDE, ATA/SATA), число и емкость винчестеров, количество интегрированных контроллеров и внешних (периферийных) устройств, операционная система.
Федеральное государственное
бюджетное образовательное учреждение
высшего профессионального образования
«МАТИ – Российский государственный технологический
университет имени
(ПВК)
Лабораторная работа №1
по дисциплине «Алгоритмические языки и программирование »
Студент:
Группа: 6ВТИ-1ДБ-268
Специальность: Информатика и вычислительная техника
Преподаватель:
Вариант 11
Сведения о составе комплектующих личных ПЭВМ в студенческой группе: фамилия владельца, число и тип процессоров, Объем памяти, тип видеоконтроллера (встроенный, внешний, AGP, PCI) и объем видеопамяти, тип (SCSI/IDE, ATA/SATA), число и емкость винчестеров, количество интегрированных контроллеров и внешних (периферийных) устройств, операционная система.
Задание заключается в следующем.
Список учащихся который лежит в текстовом
файле (Spisok1.txt), нужно перевести с помощью
программы в файл с расширение «dat» (Baz.dat).После
чего мы с помощью второй программы должны
будем отсортировать список учащихся
из файла с расширение «dat» по определенному
условию (студентки с лучшей успеваемостью)
и вывести уже обновлённый список и
результат занести во второй текстовой
файл который будет создаваться программой.
В итоге предстоит создать один текстовой файл и написать две программы для реализации нашего задания.
Ход работы
Разберём программу №1 (LABA1~1.CPP).
Создадим структуру (struct S). В нашей структуре
создадим 8 переменных двух типов,
4 переменных символьного типа «char» и 4 переменных
целочисленного типа «int».
Четыре переменных символьного типа нам
понадобятся для фамилии «Familiya», для типа
процессора «CPU» , для типа
видеоадаптера «GPU» и для
типа операционной системы «OS» .Оставшиеся
4 переменных целого типа мы будем использовать
для написания: количества ядер «Core»,памяти
видеоадаптера «MemoryGPU» ,количества
жестких дисков «HardDisk» и кол-во памяти
жесткого диска «MemoryHD».
Со структурой мы закончили.
Перейдём к основной части программы.
В начале мы напишем функцию «clrscr()»,она нужна
для очистки всего того что было на экране
до запуска нашей программы.
Следующее что мы сделаем, проверим наличие
нужных нам фалов(текстового файла и файла
с расширение «dat»).Сделаем
это с помощью оператора «if» и структуры
FILE.
В структуре FILE с помощью символа «*» отметим два
идентификатора «spisok» и «fspisok».
В операторе «if» напишем
условие для проверки существования файла.
Для этого нам понадобиться функция «fopen», которая
открывает файл.
« if((spisok = fopen("Spisok1.txt","r")) == NULL) »
Если условие выполниться и открытие файла будет равное нулю, то есть файла нет, то надо об этом известить, для этого мы использовали функцию «printf».
printf("Файл не найден");
Аналогично и для файла с расширение «dat» , только если мы не найдём файл, то мы его создадим.
Далее мы в переменную «t» занесём длину всей структуры S, это нам понадобиться для создания базы данных.
После чего выведем на экран
нашего монитора список который мы имеем
в файле «spisok.txt». Для этого мы используем «pritnf».
« printf("|FirstName | CPU |Core| GPU
|MemoryGPU|HardDisk|MemoryHD|
printf("______________________
Первый «printf» печатает
заголовки нашей таблицы ,а второй просто
подводит черту, отчёркивает заголовки
от самой таблицы.
Теперь преступим к самому списку. С помощью цикла «while» и функции «!feof()»,которая проверяет достигнут ли конце файла, будем выводить список.
«while(!feof(list))»
Функцией «fscan» мы получим
все данные из файла «spisok.txt» и выведем
на экран с помощью «printf».
Далее мы используем функцию «fwrite»,которая и будет получать все данные из файла «spisok.txt» и записывать в «Baz.dat»
« fwrite(&s, t,1, fspisok);» Сначала пишем буфер. Для «fwrite» буфер — это указатель на данные, которые будут записаны в файл. После него мы пишем кол-во байт которое у нас занимает каждый элемент. После пишем счётчик, который определяет считывается элементов. И последним пишется указатель файла в который все будет записано.
Вот так вот будет
выглядеть цикл:
« while(!feof(spisok))
{
s1=s;
fscanf(spisok,"%s %s %d %s %d %d %d %s",s.Familiya,s.CPU,&s.Core,
fwrite(&s,t,1,fspisok);
printf("|%-10s|%-6s| %2d |%-8s| %4d |
%2d | %4d |%-8s|\n",s.Familiya,s.CPU,s.
} »
На этом мы закончим
этот цикл.
В конце программы мы напишем ,что файл базы данных создан.
« printf("Файл базы
данных (Baz.dat) создан ");
getch(); } »
И вот что мы получим на экране:
На этом мы закончили нашу первую программу.
Разберём программу №2 (L2.CPP).
Вторую программу мы тоже начнём со структуры , которая аналогично структуре из первой программы.
Поэтому можно перейти к основной части программы.
Объявим две переменных: «t» типа «int» для успеваемости,
которую введёт пользователь, и переменную «OS» типа «char», для определения
операционной системы на компьютере переменная
изначально равна «windows»
« { int t;
char OS [19] ="windows"; »
Здесь, так же как и в первой программе мы с помощью «if» определяем наличие фалов и если финального списка нет, то мы его создадим.
« printf("|FirstName |
CPU |Core| GPU |MemoryGPU|HardDisk|MemoryHD|
printf("______________________
fprintf(fspisok,"|FirstName |
CPU |Core| GPU |MemoryGPU|HardDisk|MemoryHD|
fprintf(fspisok,"_____________
Такое мы уже делали в первой программе,
мы вводим на экран «шапку» таблицы, но
по мио этого здесь мы ещё используем функцию «fpritnf» ,это функция
похожа «printf» только
запись всего идёт сразу в файл, в который
мы указали, в данном случае мы использовали
указатель «fspisok».
Итак мы дошли до цикла второй программы.
Он аналогичен первому только есть не
большие изменения. Сейчас мы их и рассмотрим.
За место «fwrite» и появилась функция «fread» и теперь мы не записываем, а ,наоборот, считываем информацию.
« fread(&s1, t ,1, list);
» в данной строчке изменился
только файл, теперь это указатель «list», так как
в первой программе мы записывали, а в
этой считываем.
Далее у нас появился оператор «if».С помощью
оператора и функции «strcmp()»
мы сравним чтобы вся информация была
верна, если будет хотя бы один символ
отличаться от начального файла, то программа
не будет работать верно.
«if ((strcmp(s.FirstName,s1.
Далее мы увидим ещё один оператор «if» и функцию «strcmp()» и в этой части мы проверяем чтобы у нас в новый список попали только девочки(условие задачи)
« if(strcmp(s.OS,OS)) »
Если оба эти условия будут
выполнены, то программа выведет на экран
обновленный список, и запишет его в конечный
файл.
« fprintf(fspisok,"|%-10s|%-6s|
%2d |%-8s| %4d | %2d |
%4d |%-8s|\n",s.Familiya,s.CPU,s.
printf("|%-10s|%-6s| %2d
|%-8s| %4d | %2d | %4d
|%-8s|\n",s.Familiya,s.CPU,s.
На этом вторая программа закончена.
L1.CPP
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
FILE *spisok, *fspisok;
struct S
{ char Familiya[10];
char CPU[6];
int Core;
char GPU[8];
int MemoryGPU;
int HardDisk;
int MemoryHD;
char OS[8];
} s,s1;
int main ()
{ clrscr();
int t;
if((spisok = fopen("Spisok1.txt","r")) == NULL)
{ printf("” ©« Ґ ©¤Ґ");
getch();
return 1;
}
if((fspisok = fopen("Baz.dat", "wb")) == NULL)
{ printf("” ©¤ Ґ ©¤Ґ");
getch();
return 1; }
t=sizeof(S);
printf("|FirstName | CPU |Core| GPU |MemoryGPU|HardDisk|MemoryHD|
printf("______________________
while(!feof(spisok))
{
s1=s;
fscanf(spisok,"%s %s %d %s %d %d %d %s",s.Familiya,s.CPU,&s.Core,
fwrite(&s,t,1,fspisok);
printf("|%-10s|%-6s| %2d |%-8s| %4d |
%2d | %4d |%-8s|\n",s.Familiya,s.CPU,s.
}
printf("\n” ©« Ў §л ¤ ле (Baz.dat) ᮧ¤ ");
getch(); }
L2.CPP
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
FILE *spisok, *fspisok;
struct S
{ char Familiya[10];
char CPU[6];
int Core;
char GPU[8];
int MemoryGPU;
int HardDisk;
int MemoryHD;
char OS[8];
} s,s1;
int main()
{ int t;
char OS [19] ="windows";
clrscr();
if((spisok=fopen("BAZ.dat", "rb")) == NULL)
{ printf("” ©« Ґ ©¤Ґ");
getch();
return 1; }
if((fspisok=fopen("Spisok2.
{ printf("” ©« Ґ ©¤Ґ");
getch();
return 1; }
t=sizeof(S);
printf("|FirstName | CPU |Core| GPU |MemoryGPU|HardDisk|MemoryHD|
printf("______________________
fprintf(fspisok,"|FirstName | CPU |Core| GPU
|MemoryGPU|HardDisk|MemoryHD|
fprintf(fspisok,"_____________
while (!feof(spisok))
{
s1 = s;
fread(&s, t,1, spisok);
if (strcmp(s.Familiya,s1.
if(strcmp(s.OS,OS))
{
fprintf(fspisok,"|%-10s|%-6s| %2d |%-8s|
%4d | %2d | %4d |%-8s|\n",s.Familiya,s.CPU,s.
printf("|%-10s|%-6s| %2d |%-8s| %4d |
%2d | %4d |%-8s|\n",s.Familiya,s.CPU,s.
}
}
getch();
}
Spisok1.txt
Matveeva intel 1 Integ 64 2 120 windows
Ivanova intel 8 Descret 2048 1 1024 windows
Korolev amd 6 Integ 128 2 512 linux
Semenova intel 16 Descret 4096 1 2048 Mac
Krutova intel 2 Integ 64 1 320 linux
Spisok2.txt
|FirstName | CPU |Core| GPU
|MemoryGPU|HardDisk|MemoryHD|
______________________________
|Korolev |amd | 6 |Integ | 128 | 2 | 512 |linux |
|Semenova |intel | 16 |Descret | 4096 | 1 | 2048 |Mac |
|Krutova |intel | 2 |Integ | 64 | 1 | 320 |linux |
Информация о работе Лабораторная работа по "Программированию и компьютерам"