Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб_6_метод_указания.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
334.34 Кб
Скачать

Пример использования многофайловой компиляции

1. Описать структуру с именем student, содержащую следующие поля:

  • NAME – фамилия и инициалы;

  • номер группы;

  • успеваемость (массив из пяти элементов).

2. Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT;

  • упорядочение записей по алфавиту;

  • вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 3;

  • если таких студентов нет, вывести соответствующее сообщение.

////////////////////////////////////////////////////////////////

//head.h константы, определение структурного типа, прототипы

const int KOL_ST = 10;

const int KOL_OC = 5;

const int BAL = 3;

struct student {

unsigned short gruppa;

char fio[20];

unsigned short ysp[KOL_OC];

};

//заполнение массива записей с информацией о студентах и их оценках

int vvod (student students[],const int kol_st, const int kol_oc);

//вывод из массива записей на экран информации о студентах c оценкой

// bal и количеством оценок kol_oc int vivod (student students [], const int kol_st, const int kol_oc, const int bal);

//проверка наличия оценки bal среди массива оценок ysp размера kol_oc

int otsenka (unsigned short ysp[],const int kol_oc,const int bal);

//вспомогательная функция для стандартной функции сортировки qsort()

int compare( const void *arg1, const void *arg2 );

////////////////////////////////////////////////////////////////

// stdafx.h

#pragma once

#define WIN32_LEAN_AND_MEAN//Exclude rarely-used stuff from Windows headers

#include <stdio.h>

#include <tchar.h>

// TODO: reference additional headers your program requires here

#include <iostream>

#include <iomanip>

#include <conio.h>

#include "head.h" //!!!подключаем заголовочный файл

using namespace std;

////////////////////////////////////////////////////////////////

//func.cpp

#include "stdafx.h"

//функция получает массив записей о студентах, их количество и //количество предметов

int vvod (student *students,const int kol_st,const int kol_oc) {

for (int i=0;i<kol_st;i++) {

cout <<"vvedite fio studenta #"<<i+1<<" ";

cin >>students[i].fio;

cout <<"vvedite gryppy studenta #"<<i+1<<" ";

cin >>students[i].gruppa;

cout <<"\tvsego otsenok: "<< kol_oc <<endl;

cout <<"vvedite otsenki studenta #"<<i+1<<endl;

for (int j=0;j<kol_oc;j++){

cin >>students[i].ysp[j];

}

}

return 0;

}

int vivod(student *students,const int kol_st,const int kol_oc, const int bal) {

int i,j;

bool prov;

for (i=0;i< kol_st;i++){

if (otsenka(students[i].ysp,kol_oc,bal)) {

prov=true;

cout<<"student " << setw(15) << students[i].fio

<< " iz "<<students[i].gruppa

<<"-y gruppi imeet hotya bi odny troiky"<<endl;

}

}

if (!prov) cout<<" net studentov, imeyuschih troiki"<<endl;

return 0;

}

int otsenka (unsigned short ysp[],const int kol_oc, const int bal) {

for (int i=0;i<kol_oc;i++){

if (ysp[i]==bal) return 1;

}

return 0;

}

//сравниваем поля с фамилиями

int compare( const void *arg1, const void *arg2 )

{ return _stricmp( (char*)(((student*)arg1)->fio), (char*)(((student*)arg2)->fio));

}

////////////////////////////////////////////////////////////////

//main.cpp

#include "stdafx.h"

int main () {

student students[KOL_ST]; //определение масссива записей о студентах

vvod (students,KOL_ST,KOL_OC);

qsort(students, KOL_ST, sizeof(student),compare);

vivod (students,KOL_ST,KOL_OC,BAL);

_getch();

return 0;

} //

////////////////////////////////////////////////////////////////

Форматированный вывод в файл, используя <<

#include <fstream>

#include <iostream>

#include <string>

using namespace std;

int main()

{

char ch = 'x';

int j = 77;

double d = 6.02;

string str1 = "Kafka"; //строки-объекты с выделенной памятью

string str2 = "Proust";

ofstream outfile("fdata.txt"); //создание потока outfile

outfile << ch //запись данных в поток

<< j

<< ' ' //пробел между числами

<< d

<< str1

<< ' ' // пробел между строками

<< str2;

cout << "File written\n";

_getch();

return 0; //при завершении программы файл будет закрыт

}

////////////////////////////////////////////////////////////////

Форматированное чтение из файла, используя >>

#include <fstream>

#include <iostream>

#include <string>

using namespace std;

int main()

{

char ch;

int j;

double d;

string str1;

string str2;

ifstream infile("fdata.txt"); //создание потока класса ifstream

//чтение данных из потока

infile >> ch >> j >> d >> str1 >> str2;

cout << ch << endl //вывод данных на экран

<< j << endl

<< d << endl

<< str1 << endl

<< str2 << endl;

_getch();

return 0;

} //при завершении программы файл будет закрыт

////////////////////////////////////////////////////////////////

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]