|
Программирование >> Элементы языков с и с++
C:\WINDOWS\systero32Vcmd.e3ee Рис. 7.9. Расчет зарплаты одному работнику ; Листинг 7.9 29.СРР : Defines the entry point for the console application. #include stdafx.h ttinclude <stdio.h> ttinclude <conio.h> ttinclude <stdlib.h> for atoiO ttdefine eof -1 ttdefine maxline 1000 -Ввод строки с клавиатуры int getline(char s[],int lim) { int c,i; for(i=0; i<lim-l && (c=getchar()) != eof && с != Xn; i++) s[i]=c; s[i]=\0; i++; для учета количества return(i); --------- struct zrp структура данных по зарплате int tinain() I char c, s [maxline] ; struct zrp *pl; /определение размера массива:*/ int RazmMas = sizeof(emp)/sizeof(zrp); do ( /*ввод номера работника:*/ ш: printf( enter emps number > ); getiine(s, maxline); int i=atoi(s); if(i < RazmMas) контроль количества заданных элементов массива pl=&emp[i]; else goto m; char *name; уоля работника float stavka; оплата за один рабочшй день float nalog; величина налога lemp[] = ( Ivanov ,200,0.1, Petrov ,300,0.2, Sldorov , 400,0.3 }; /*3десь задан массив экземпляров структур: одна структура содержит данные на одного работника. Массив сразу проинициализирован.*/ /Функция начисления зарплаты одному работнику. RabDn - количество отработанных дней*/ float zarplata (struct zrp *z,int RabDn) ( return (z->stavka * RabDn * (1 - z->nalog)); /*ввод количества отработанных дней:*/ printf( enter works days amount > ); getline(s, maxline); i=atoi(s) ; float zp = zarplata(pi,i); обращение к функции расчета зарплаты printf( %s %6.2f\n ,pl->name,zp); while((c=getchar()) != eof) ; конец оператора do-while } tmain() Рекурсия в структурах в структурах возможна рекурсия, т. е. структуры могут ссылаться сами на себя. Допустим, у нас имеется списковая структура типа: □ Слово (строка символов) ; □ Счетчик количества каждого искомого слова в тексте ; □ Указатель на предыдущую структуру, в которой встречается данное слово ; □ Указатель на последующую структуру, в которой встречается данная строка . Такая структура может быть представлена в виде рекурсивного шаблона с указателем на такую же структуру: struct tnod (***) char *word; int count; struct tnod *left; struct tnod *right; }t,*p; Если, например, p=&t, то доступ к элементам структуры будет таким: p->word, p->left, p->right Приведем пример программы, подсчитывающей количество встречающихся в некотором тексте слов. Эта программа передает введенные с клавиатуры слова специальной функции, которая по ним строит в памяти так называемое двоичное дерево . t
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |