Лабораторная работа по "Программированию и компьютерам"

Автор работы: Пользователь скрыл имя, 11 Ноября 2014 в 22:29, лабораторная работа

Краткое описание

Сведения о составе комплектующих личных ПЭВМ в студенческой группе: фамилия владельца, число и тип процессоров, Объем памяти, тип видеоконтроллера (встроенный, внешний, AGP, PCI) и объем видеопамяти, тип (SCSI/IDE, ATA/SATA), число и емкость винчестеров, количество интегрированных контроллеров и внешних (периферийных) устройств, операционная система.

Прикрепленные файлы: 1 файл

Лабораторная работа №1.doc

— 111.50 Кб (Скачать документ)

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «МАТИ – Российский государственный технологический университет имени                           К.Э. Циолковского

(ПВК)

 

 

 

 

 

 

Лабораторная работа №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|   OS   |\n");

printf("______________________________________________________________________\n"); » 
Первый «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,s.GPU,&s.MemoryGPU,&s.HardDisk,&s.MemoryHD,s.OS); 
 
fwrite(&s,t,1,fspisok); 
 
printf("|%-10s|%-6s| %2d |%-8s|   %4d  |   %2d   |  %4d  |%-8s|\n",s.Familiya,s.CPU,s.Core,s.GPU,s.MemoryGPU,s.HardDisk,s.MemoryHD,s.OS); 
} » 
На этом мы закончим этот цикл.

В конце программы мы напишем ,что файл базы данных создан.

« 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|   OS   |\n");

printf("______________________________________________________________________\n");

fprintf(fspisok,"|FirstName |  CPU |Core|  GPU   |MemoryGPU|HardDisk|MemoryHD|   OS   |\n");

fprintf(fspisok,"______________________________________________________________________\n"); » 
 
Такое мы уже делали в первой программе, мы вводим на экран «шапку» таблицы, но по мио этого здесь мы ещё используем функцию «fpritnf» ,это функция похожа «printf» только запись всего идёт сразу в файл, в который мы указали, в данном случае мы использовали указатель «fspisok».

Итак мы дошли до цикла второй программы. 
Он аналогичен первому только есть не большие изменения. Сейчас мы их и рассмотрим.

За место «fwrite» и появилась функция «fread» и теперь мы не записываем, а ,наоборот, считываем информацию.

 « fread(&s1, t ,1, list); » в данной строчке изменился только файл, теперь это указатель «list», так как в первой программе мы записывали, а в этой считываем. 
Далее у нас появился оператор «if».С помощью оператора и функции «strcmp()» 
мы сравним чтобы вся информация была верна, если будет хотя бы один символ отличаться от начального файла, то программа не будет работать верно.

«if ((strcmp(s.FirstName,s1.FirstName))&&(s1.Ysp>=m)) » 

 

 

Далее мы увидим ещё один оператор «if» и функцию «strcmp()» и в этой части мы проверяем чтобы у нас в новый список попали только девочки(условие задачи)

« if(strcmp(s.OS,OS)) » 
 
Если оба эти условия будут выполнены, то программа выведет на экран обновленный список, и запишет его в конечный файл.

«  fprintf(fspisok,"|%-10s|%-6s| %2d |%-8s|   %4d  |   %2d   |  %4d  |%-8s|\n",s.Familiya,s.CPU,s.Core,s.GPU,s.MemoryGPU,s.HardDisk,s.MemoryHD,s.OS);

  printf("|%-10s|%-6s| %2d |%-8s|   %4d  |   %2d   |  %4d  |%-8s|\n",s.Familiya,s.CPU,s.Core,s.GPU,s.MemoryGPU,s.HardDisk,s.MemoryHD,s.OS); »

 

На этом вторая программа закончена.

 

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|   OS   |\n"); 
printf("______________________________________________________________________\n"); 
 
while(!feof(spisok)) 

s1=s; 
fscanf(spisok,"%s %s %d %s %d %d %d %s",s.Familiya,s.CPU,&s.Core,s.GPU,&s.MemoryGPU,&s.HardDisk,&s.MemoryHD,s.OS); 
fwrite(&s,t,1,fspisok); 
printf("|%-10s|%-6s| %2d |%-8s|   %4d  |   %2d   |  %4d  |%-8s|\n",s.Familiya,s.CPU,s.Core,s.GPU,s.MemoryGPU,s.HardDisk,s.MemoryHD,s.OS); 

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.txt", "w")) == NULL) 
{ printf("” ©« ­Ґ ­ ©¤Ґ­"); 
  getch(); 
  return 1; } 
t=sizeof(S); 
printf("|FirstName |  CPU |Core|  GPU   |MemoryGPU|HardDisk|MemoryHD|   OS   |\n"); 
printf("______________________________________________________________________\n"); 
fprintf(fspisok,"|FirstName |  CPU |Core|  GPU   |MemoryGPU|HardDisk|MemoryHD|   OS   |\n"); 
fprintf(fspisok,"______________________________________________________________________\n"); 
 
while (!feof(spisok)) 

s1 = s; 
fread(&s, t,1, spisok); 
if (strcmp(s.Familiya,s1.Familiya)) 
if(strcmp(s.OS,OS))


fprintf(fspisok,"|%-10s|%-6s| %2d |%-8s|   %4d  |   %2d   |  %4d  |%-8s|\n",s.Familiya,s.CPU,s.Core,s.GPU,s.MemoryGPU,s.HardDisk,s.MemoryHD,s.OS); 
printf("|%-10s|%-6s| %2d |%-8s|   %4d  |   %2d   |  %4d  |%-8s|\n",s.Familiya,s.CPU,s.Core,s.GPU,s.MemoryGPU,s.HardDisk,s.MemoryHD,s.OS); 


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|   OS   |

______________________________________________________________________

|Korolev     |amd   |  6     |Integ      |    128         |    2          |   512         |linux   |

|Semenova  |intel   | 16    |Descret  |   4096         |    1          |  2048       |Mac     |

|Krutova      |intel   |  2     |Integ      |     64          |    1          |   320      |linux   |


Информация о работе Лабораторная работа по "Программированию и компьютерам"