close

Вход

Забыли?

вход по аккаунту

?

Задача 3 (7)

код для вставкиСкачать
Задача №3
Условие задачи
Создать список владельцев автомашин (количество запрашивается с клавиатуры), содержащий: фамилию, марку машины и номер. Вывести этот список в виде таблицы. По введенной марке машины получить список владельцев автомашин с указанием номера и их количество. Если таких нет, то вывести сообщение об этом.
Описание метода решения задачи
1. Выявляем исходные данные, результаты, назначаем им имена.
Исходные данные: Структурный типs avto с полями: char name[20]; char marka[20]; char number[10] - для создания структурированного типа;
Массив set[50] типам struct avto тз 50-ти элементов - для записи данных по владельцам машин;
Целочисленные переменные m,flag=0; count =0 - для ввода количества владельцев автомашин, сигнала о том, что владельцы нужных марок машин в списке есть, для подсчета таких владельцев соответственно;
Символьный указатель *mar - для марки машины;
Результаты: Список владельцев машин, марки машин которых удовлетворяет некоторой нужной марки автомашины, выведенный на экран.
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ).
3. Первоначально составим укрупненную схему, а затем подробную для блока 6,7.
Укрупненная схема
1. Подключение всех необходимых заголовочных файлов. Локальное описания переменных struct avto set[50]; int m,flag=0; char*mar;
int count=0;
2. Вводим количество владельцев в переменную m. 3. Вводим в цикле для каждого владельца фамилию, марку машины и государственный номер автомобиля в массив set[50]. 4. В цикле выводим в виде списка введенные данные.
5. Вводим интересующую марку машины в переменную *mar.
6. В цикле перебираем массив set[50], определяя те элементы, в которых совпадает поле marka с переменной *mar. Если найдется хотя бы один, выставляем flag=1 и делаем break.
7. Выполняем проверку флага. Если его значение равно 1, то выводим списком в цикле те элементы, в которых совпадает поле marka с переменной *mar, попутно считая количество выведенных элементов в переменную count. Выводим значение count. Иначе выводим сообщение, что нет таких владельцев
VI.
- Рабочие формулы - нет. Ничего не вычисляем.
- Начальные значения аргументов: i=0, flag=0.
- Закон изменения аргументов (переменных): i=i+1
- условие окончания цикла: i<m или break.
МРЗ: Если при сравнении двух строковых переменных set[i].marka и mar возвращаемое значение получаем возвращаемое значение функции strcmp()==0, то значение флага выставляем в 1( flag=1) и делаем break;
VII. - рабочие формулы - нет, ничего не вычисляем
- закон изменения аргументов (переменных): i=i+1
- начальных значения аргументов (переменных): i=0; flag=1или flag=0;
- условие окончания цикла: i<m
МРЗ: Проверка флага: - если его значение равно 1 if(flag==1), то выводим списком в цикле те элементы, в которых совпадает поле marka с переменной *mar. Считаем их количество в переменную count:
for(i=0;i<m;i++)
if(strcmp(set[i].marka,mar)==0)
{
count++;
cout<<setw(3)<<i+1<<")"<<setw(19)<<set[i].name<<setw(16)<<set[i].marka<<setw(19)<<set[i].number<<"\n";
}
- если значение flag равно 0, то вывод сообщения cout<<"\nTakich vladelcev NET\n";
Программа, реализующая данный алгоритм
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
struct avto
{
char name[20];
char marka[20];
char number[10];
};
void main()
{
clrscr();
struct avto set[50];
int m,flag=0;
char *mar;
int count=0;
cout<<"\nVvedi kol-vo vladelciv mashin->";
cin>>m;
for(int i=0;i<m;i++)
{cout<<"Famale "<<i+1<<"-> ";
cin>>set[i].name;
cout<<"Marka avto "<<i+1<<"-> ";
cin>>set[i].marka;
cout<<"GosNomer "<<i+1<<"-> ";
cin>>set[i].number;
}
cout<<"\nSpisok vladelzev:\n";
cout<<"\n"<<setw(3)<<"Num"<<setw(20)<<"F A M A L E"<<setw(16)<<"M A R KA"<<setw(20)<<"G o s N o m e r\n";
for(i=0;i<m;i++)
cout<<setw(3)<<i+1<<")"<<setw(19)<<set[i].name<<setw(16)<<set[i].marka<<setw(19)<<set[i].number<<"\n";
cout<<"\nVvedi marku Avto for search ->";
cin>>mar;
for(i=0;i<m;i++)
if(strcmp(set[i].marka,mar)==0)
{
flag=1; break;
}
if(flag==1)
{
cout<<"\nSpisok vladelzev takich avto:\n";
cout<<"\n"<<setw(3)<<"Num"<<setw(20)<<"F A M A L E"<<setw(16)<<"M A R KA"<<setw(20)<<"G o s N o m e r\n";
for(i=0;i<m;i++)
if(strcmp(set[i].marka,mar)==0)
{
count++;
cout<<setw(3)<<i+1<<")"<<setw(19)<<set[i].name<<setw(16)<<set[i].marka<<setw(19)<<set[i].number<<"\n";
}
cout<<"\nVladelzev takich avto:"<<count<<"\n";
}
else
cout<<"\nTakich vladelcev NET\n";
getch();
}
Документ
Категория
Рефераты
Просмотров
27
Размер файла
22 Кб
Теги
задачи
1/--страниц
Пожаловаться на содержимое документа