Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   И ещё помогите с задачей (http://www.tehnari.ru/f41/t257463/)

semmmen98 08.01.2018 00:25

И ещё помогите с задачей
 
Дан файл Bagazh, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой структуру с двумя полями: одно поле целого типа (количество вещей) и одно поле действительное (масса вещей в килограммах). Определить:

- имеется ли пассажир, багаж которого состоит из одной вещи массой менее m кг
ПР11. Структуры данных
Программный код решения примера

#include <stdio.h>

#include <conio.h>

#include <string.h>

#define N 40

struct book { // определение структуры

char title[N+1]; // название книги

char author[N+1]; // автор

int year; // год издания

int page; // количество страниц

float price; // цена в у.е.

} Library;

int main (void)

{

// Инициализация полей структуры

Library.year = 2007;

Library.page = 496;

Library.price = 12.78F;

strcpy_s(Library.title, N, "Programming in C");

strcpy_s(Library.author, N, "Stephen G. Kochan");

// Вывод на консоль

printf("\n\t Title: %s\n", Library.title);

printf("\t Author: %s\n", Library.author);

printf("\t Year: %d\n", Library.year );

printf("\t Number of pages: %d p.\n", Library.page );

printf("\t Price: %1.2f y.e.\n", Library.price);

printf("\n\n Press any key: ");

_getch();

return 0;

}
Задание 1

1. Совместите объявление и инициализацию структуры. После инициализации структуры выполните изменение ее полей с последующим выводом на консоль.

2. Примените оператор typedef.

3. Поля структуры title и author определите с помощью указателей.

4. Произведите инициализацию структуры после ввода значений полей с клавиатуры.

Студент-2000 08.01.2018 03:31

Забавно - задание про пассажиров, а код программы про книги :)

Vladimir_S 08.01.2018 10:03

Студент-2000, кончайте флудить!
Цитата:

Сообщение от semmmen98 (Сообщение 2546395)
ПР11. Структуры данных
Программный код решения примера

Сказано же — "пример", т.е. рассмотрена аналогичная задача. В качестве образца.

Студент-2000 08.01.2018 23:13

Цитата:

Сообщение от Vladimir_S (Сообщение 2546444)
Студент-2000, кончайте флудить!Сказано же — "пример"

Цитата:

Программный код решения примера
-Сорри, у меня с русского не перевелось.

Olej 14.01.2018 20:55

Цитата:

Сообщение от semmmen98 (Сообщение 2546395)
Определить: - имеется ли пассажир, багаж которого состоит из одной вещи массой менее m кг

Ввод исходных данных из файла я не показываю - это элементарно просто (массив пассажиров выписан прямо в коде), а всё остальное может выглядеть так:
Код:

#include <iostream>
#include <algorithm>
using namespace std;

struct bagazh {
  string owner;
  int    number;
  float  weight;
  inline friend  ostream& operator <<( ostream& out, const struct bagazh& obj ) {
      return out << "[ " << obj.owner << " | "
                      << obj.number << " | " << obj.weight << " ]";
  }
};
 
int main( int argc, char** argv ) {
  float m = 12.;
  bagazh train[] = {
      { "Иванов И.И.",  2, 12. },
      { "Петров П.П.",  1, 15. },
      { "Сидоров С.С.", 1, 9.  },
      { "Макаров М.М.", 1, 11. },
  };
  int size = sizeof( train ) / sizeof( train[ 0 ] );
  for( bagazh *i = train; i < train + size; ) {
      i = find_if( i, train + size, [ m ]( bagazh& x )-> bool {
        return 1 == x.number && x.weight < m; } );
      if( i < train + size )
        cout << *i++ << endl;
  }
}

Выполнение:
Код:

$ g++ -Wall -std=c++11 -O3  bagazh.cc  -o bagazh

$ ./bagazh
[ Сидоров С.С. | 1 | 9 ]
[ Макаров М.М. | 1 | 11 ]



Часовой пояс GMT +4, время: 14:19.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.