Программирование >>  Процедурные приложения 

1 ... 69 70 71 [ 72 ] 73 74 75 ... 150


Судно Чайка 1982 гола в1пуска с регистрационн1м номером #XA1011, отработавшее 34187 моточасов. Великолепное судно для морских прогулок. ВСЕГО $18132.00

Судно Метеорит 1988 года выпуска с регистрационн1м номером #КИ8096, отработавшее 27657 моточасов.

Отлично выглядит, прекрасные ходовые качества.

ВСЕГО $20533.00

Судно Спрут 1993года выпуска с регистрационн1м номером #ДД7845, отработавшее 1000 моточасов. Надежно и экономично. ВСЕГО $36234.00

Указатели на структуры

Следующая программа является вариантом предыдущего примера, в котором для получения доступа к отдельным членам структуры применяются указатель и оператор ->.

* structpt.c

* Эта программа на языке С демонстрирует применение оператора ->.

#include <stdio.h> #define iSTRINGIS 15 #define 1STRING20 20 #define iNULL CHAR 1 #define iMAX BOATS 50 struct stboat {

char szmodel[iSTRING15 + iNULL CHAR];

char szserial[iSTRING20 + iNULL CHAR] ;

char szcomment[80];

int iyear;

long lmotor hours;

float fsaleprice; } ;

int main(void)

int i, iinstock;

struct stboat astBoats[iMAX BOATS], *pastBoats; pastBoats= sastBoats[0];

printf( Информацию о скольких лодках следует ввести в базу данных? );

scanf( %d ,Siinstock);

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

flushall(); /* очисткабуфер */

printf( \nВведите модель судна: ); gets (pastBoats->szmodel) ; printf( \nВведите регистрационн1й номер судна: ); gets(pastBoats->szserial) ;

printf( \nВведите строку заметок о судне: ); gets(pastBoats->szcomment);,

printf( \nВведите год изготовления судна: ); scanf( %d ,SpastBoats->iyear) ;

printf( \nВведите число моточасов, наработанных двигателем: ); scanf( %d ,SpastBoats->lmotor hours);

printf( \nВведите стоимость судна: ); scanf( %f ,&pastBoats-

>fsaleprice) ;

pastBoats++;

pastBoats = SastBoats [0]; printf ( \n\n ); for (d = 0; i < linstock; i++) {

printf ( Судно%s %d года выпуска с регистрационн1м номером#%s,\n , pastBoats->szmodel, pastBoats->iyear, pastBoats->szserial) ;



printf ( отработавшее%d моточасов . \n ,pastBoats->lmotor hours) ;

printf ( %s\n ,pastBoats->szcomment) ;

printf ( ВСЕГО$%8.2f .\n\n ,pastBoats->fsaleprice) ;

pastBoats++;

return(0);

К отдельному члену структуры, представленной указателем, можно обратиться и таким способом:

gets ( (*pastBoats) .szmodel) ;

Дополнительная пара скобок необходима, поскольку оператор прямого доступа к члену структуры (.) имеет больший приоритет, чем оператор раскрытия указателя (*). Использование оператора косвенного доступа (->) делает запись проще и аккуратнее:

gets (pastBoats->szmodel) ;

Передача массива структур в качестве аргумента функции

Ранее в этой главе уже говорилось о том, что структуры передаются в функции по значению. Если же вместо самой структуры передавать указатель на нее, то это может существенно ускорить выполнение программы.

* structaf. с

* В этой программе на языке С в функцию передается указатель на структуру.

#include <stdio.h> #define i STRING 15 15

#define 1STRING20 20

#define iNULL CHAR 1 #define iMAX BOATS 50

int linstock; struct stboat {

char szmodel[iSTRING15 + iNULL CHAR] ;

char szserial[iSTRING20 + iNULL CHAR] ;

char szcomment [80];

int iyear;

long lmotor hours;

float fsaleprice;

void vprint data(struct stboat *stused boatptr); int main(void) { int i;

struct stboat astBoats[iMAX BOATS], *pastBoats; pastBoats= SastBoats[0];

printf( Информацию о скольких лодках следует ввести в базу данных? );

scanf( %d ,Siinstock);

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

flushall(); /* очищаетбуфер */ printf( \nВведитемодельсудна: ); gets(pastBoats->szmodel);

printf( \nВведите регистрационн1й номер судна: ); gets(pastBoats->szserial);

printf( \nВведите строку заметок о судне: ); gets (pastBoats->szcoiranent) ;

printf( \nВведите год изготовления судна: ); scanf( %d ,&pastBoats->iyear);



printf( \nВведите число моточасoв, наработанных двигателем: );

scanf( %d /&pastBoats->lmotor hours);

printf( \nВведите стоимость судна: );

scanf( %f ,spastBoats->fsaleprice);

pastBoats++;

pastBoats = SastBoats[0]; vprint data(pastBoats); return(0); }

void vprint data (struct stboat *stused boatptr) { int i;

printf ( \n\n );

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

printf ( Судно%s %d года выпуска с регистрационн1м номером#%s,\n , stused boatptr->szmodel, stused boatptr->iyear, stused boatptr->szserial) ;

printf( отработавшее %dмоточасов. \n ,stused boatptr->lmotor hours)

printf ( %s\n ,stused boatptr->szcomment) ;

printf ( ВСЕГО$%8.2f\n\n ,stused boatptr->fsaleprice) ;

stused boatptr++;

Структуры в C++

Ниже показана программа на C++, являющаяся аналогом рассмотренного в предыдущем параграфе примера на языке С. В обоих случаях для работы со структурой применяется одинаковый синтаксис.

struct. срр

В этой программе на языке C++ в функцию передается

указатель на структуру.

#include <iostream.h>

#define 1STRING15 15 #define 1STRING20 20 #define iNULL CHAR 1

#define iMAX BOATS 50 int linstock; struct stboat {

char szmodel[iSTRING15 + iNULL CHAR]; char szserial[iSTRING20 + iNULL CHAR];

char szcomment[80]; int iyear; long lmotor hours; float fsaleprice; );

void vprint data (stboat *stused boatptr) ; int main (void) { int i;

char newline;

stboat astBoats [iMAX BOATS] , *pastBoats; pastBoats = SastBoats [0];

cout<< Информацию о скольких лодках следует ввести в базу данных?

cin >> linstock;

ford = 0; i < linstock; i++) {

cout << \nВведите модель судна: ; cin >> pastBoats->szmodel;



1 ... 69 70 71 [ 72 ] 73 74 75 ... 150

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика