Основы средств и методов программирования
Ознакомление с перечнем переменных, задействованных в программе. Разработка и анализ действий для ввода с клавиатуры данных в массив, состоящий из элементов типа note, записи которых должны быть расположены в порядке убывания чисел телефонных номеров.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 13.10.2017 |
Размер файла | 136,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
Российский Государственный Гидрометеорологический Университет
Кафедра МИТ
Контрольная работа по дисциплине: «Средства и методы программирования»
Выполнил студент
гр. ОИ-209
Андриянов А.В.
Санкт-Петербург 2007
Содержание
1. Задание
2. Краткое описание выполнения работы
3. Структурные схемы функций
4. Листинг
5. Результаты
6. Таблица переменных
1. Задание:
Описать структуру с именем NOTE, содержащую следующие поля:
1. фамилия, имя
2. номер телефона
3. дата рождения (массив из 3 чисел)
Написать программу, выполняющую следующие действия:
1. ввод с клавиатуры данных в массив, состоящий из 8 элементов типа NOTE, записи должны быть расположены в порядке убывания чисел телефонных номеров
2. вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры
3. если таких нет, выдавать на экран соответствующее сообщение
2. Краткое описание выполнения работы
Программа состоит из 5-и функций: main, input, output, sort, poisk. Функция main служит для создания порядка выполнения остальных функций. Функция input используется для ввода данных (имя, фамилия, дата рождения, номер телефона) в массив структур. Функция output - для вывода массива структур на экран. Функция sort - для упорядочивания массива структур по телефонным номерам (по убыванию, начиная с самого большого числа). Функция poisk служит для поиска конкретных структур из массива структур по месяцу рождения. программа клавиатура note
Перечень представленного материала:
1. Структурные схемы алгоритмов.
2. Листинг программы.
3. Результаты выполнения.
4. Перечень переменных, задействованных в программе.
3. Структурные схемы функций
Структурная схема функции main():
Рис. 1
Рис. 2
Рис. 3 Структурная схема функции input(a):
Рис. 4 Структурная схема функции output(a):
Рис. 5 Структурная схема функции sort(a):
Рис. 6 Структурная схема функции poisk(a)
4. Листинг
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int x,i,j,k;
char n;
struct NOTE{
char im[10];
char fam[16];
unsigned int dr[4];
unsigned int tel[3];
}
a[9],s;
struct NOTE input(struct NOTE a[9]){
char w;
for(i=1; i<10; i++){
for(j=1; j<4; j++){
a[i].dr[j]=0;
a[i].tel[j]=0;
}
}
x=2;
printf("\n");
for (i=1;i<x;i++){
printf(" Vvedite Imja i Familiju: \n\r");
scanf("%s %s",&a[i].im,&a[i].fam);
printf("\n\r Vvedite d/r (dd mm yy): \n\r");
scanf("%2d %2d %2d",&a[i].dr[1],&a[i].dr[2],&a[i].dr[3]);
printf("\n\r Vvedite nomer telefona (xxx xxxx): \n\r");
scanf("%3d %4d",&a[i].tel[1],&a[i].tel[2]);
printf("\n\r Prodolzhit vvod dannyh? y-n? ");
m1: w=getch();
printf("%c \n\n\r",w);
switch(w){
case 'Y': case 'y': x++; break;
case 'N': case 'n': printf("Vasha tablica:\n\r"); break;
default: goto m1;
}
}
return a[9];
}
void output(struct NOTE a[9]){
printf("*********************************************************\n\r");
printf("* Imja * Familija * Tel. * D/r. *\n\r");
printf("*********************************************************\n\r");
for(i=1;i<x;i++){
printf("* %10s * %16s * ",a[i].im,a[i].fam);
if(a[i].tel[1]>99)
printf("%d",a[i].tel[1]);
else if(a[i].tel[1]>9)
printf("0%d",a[i].tel[1]);
else if(a[i].tel[1]<10)
printf("00%d",a[i].tel[1]);
else
printf("000%d",a[i].tel[1]);
printf("-");
if(a[i].tel[2]>999)
printf("%d",a[i].tel[2]);
else if(a[i].tel[2]>99)
printf("0%d",a[i].tel[2]);
else if(a[i].tel[2]>9)
printf("00%d",a[i].tel[2]);
else if(a[i].tel[2]<10)
printf("000%d",a[i].tel[2]);
else
printf("0000%d",a[i].tel[2]);
printf(" * ");
for(j=1;j<4; j++){
if(a[i].dr[j]>9)
printf("%d ",a[i].dr[j]);
if(a[i].dr[j]<10)
printf("0%d ",a[i].dr[j]);
}
printf(" * \n\r");
}
printf("*********************************************************\n\r");
}
struct NOTE sort(struct NOTE a[9]){
for(i=1;i<x;i++){
if(a[i].tel[1]<a[i+1].tel[1]){
s=a[i];
a[i]=a[i+1];
a[i+1]=s;
}
}
return a[9];
}
struct NOTE poisk(struct NOTE a[9]){
int m;
printf("\n\r Vvedite mesjac po kotoromu budet proizveden otbor: \n\r");
scanf("%d",&m);
x=1;
for(i=1;i<10;i++){
if(a[i].dr[2]==m)
x++;
}
return a[9];
}
main(void){
clrscr();
input(a);
output(a);
sort(a);
output(a);
poisk(a);
k=x;
k--;
if(k>0){
printf("podhodjashih elementov: %d \n\r",k);
output(a);
}
else{
printf("podhodjashih elementov net. \n\r");
}
getch();
return 0;
}
5. Результат
Vvedite Imja i Familiju:
Ivan Ivanov
Vvedite d/r (dd mm yy):
01 01 01
Vvedite nomer telefona (xxx xxxx):
910 9191
Prodolzhit vvod dannyh? y-n? y
Vvedite Imja i Familiju:
Petr Petrov
Vvedite d/r (dd mm yy):
02 02 02
Vvedite nomer telefona (xxx xxxx):
110 0101
Prodolzhit vvod dannyh? y-n? y
Vvedite Imja i Familiju:
Sidor Sidorov
Vvedite d/r (dd mm yy):
03 03 03
Vvedite nomer telefona (xxx xxxx):
123 4567
Prodolzhit vvod dannyh? y-n? y
Vvedite Imja i Familiju:
Pavel Pavlov
Vvedite d/r (dd mm yy):
04 04 04
Vvedite nomer telefona (xxx xxxx):
555 0055
Prodolzhit vvod dannyh? y-n? y
Vvedite Imja i Familiju:
Fedor Fedorov
Vvedite d/r (dd mm yy):
05 05 05
Vvedite nomer telefona (xxx xxxx):
394 7474
Prodolzhit vvod dannyh? y-n? y
Vvedite Imja i Familiju:
Aleksej Alekseev
Vvedite d/r (dd mm yy):
06 06 06
Vvedite nomer telefona (xxx xxxx):
987 6543
Vvedite nomer telefona (xxx xxxx):
987 6543
Prodolzhit vvod dannyh? y-n? y
Vvedite Imja i Familiju:
Roman Romanov
Vvedite d/r (dd mm yy):
07 07 07
Vvedite nomer telefona (xxx xxxx):
565 6565
Prodolzhit vvod dannyh? y-n? y
Vvedite Imja i Familiju:
Stepan Stepanov
Vvedite d/r (dd mm yy):
08 08 08
Vvedite nomer telefona (xxx xxxx):
566 7889
Prodolzhit vvod dannyh? y-n? N
Vasha tablica:
*********************************************************
* Imja * Familija * Tel. * D/r. *
*********************************************************
* Ivan * Ivanov * 910-9191 * 01 01 01 *
* Petr * Petrov * 110-0101 * 02 02 02 *
* Sidor * Sidorov * 123-4567 * 03 03 03 *
* Pavel * Pavlov * 555-0055 * 04 04 04 *
* Fedor * Fedorov * 394-7474 * 05 05 05 *
* Aleksej * Alekseev * 987-6543 * 06 06 06 *
* Roman * Romanov * 565-0065 * 07 07 07 *
* Stepan * Stepanov * 566-7889 * 08 08 08 *
*********************************************************
*********************************************************
* Imja * Familija * Tel. * D/r. *
*********************************************************
* Aleksej * Alekseev * 987-6543 * 06 06 06 *
* Ivan * Ivanov * 910-9191 * 01 01 01 *
* Stepan * Stepan * 566-7889 * 08 08 08 *
* Roman * Romanov * 565-0065 * 07 07 07 *
* Pavel * Pavlov * 555-0055 * 04 04 04 *
* Fedor * Fedorov * 394-7474 * 05 05 05 *
* Sidor * Sidorov * 123-4567 * 03 03 03 *
* Petr * Petrov * 110-0101 * 02 02 02 *
*********************************************************
Vvedite mesjac po kotoromu budet proizveden otbor:
03
podhodjashih elementov: 1
*********************************************************
* Imja * Familija * Tel. * D/r. *
*********************************************************
* Sidor * Sidorov * 123-4567 * 03 03 03 *
*********************************************************
6. Таблица переменных
тип |
название |
назначение |
|
struct NOTE |
|||
a[9] |
имя массива структур |
||
s |
имя структуры |
||
char |
im[10] |
имя |
|
char |
fam[16] |
фамилия |
|
unsigned int |
dr[4] |
дата рождения |
|
unsigned int |
tel[3] |
телефонный номер |
|
main() |
|||
int |
k |
порядковый номер в таблице после поиска |
|
int |
x |
присваивание значения для k |
|
input() |
|||
int |
x |
количество структур в массиве |
|
int |
i, j |
организация циклов |
|
char |
w |
организация завершения/продолжения циклов |
|
output() |
|||
int |
i, j |
организация циклов |
|
sort() |
|||
int |
i, j, k |
организация циклов |
|
poisk() |
|||
int |
i, j |
организация циклов |
|
int |
x |
количество ячеек массива структур |
|
int |
m |
номер выбираемого месяца |
Размещено на Allbest.ru
Подобные документы
Вычисление выражений, использование стандартных функций; работа с графикой. Порядок действий при вычислении, способы ввода данных с клавиатуры. Построение таблиц функций. Организация циклов в программе, итерационные процессы. Работа с массивами чисел.
контрольная работа [614,7 K], добавлен 16.09.2012Понятие класса на языке Java. Ввод с клавиатуры данных в массив, состоящий из десяти объектов типа WORKER. Вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры. Оценка работы программы, ее код.
курсовая работа [1,2 M], добавлен 20.04.2014Рассмотрение правил записи, способов ввода и вывода, использования функций обработки символьных данных в Pascal. Описание алгоритмизации и программирования файловых структур данных, проектирования структуры файла. Ознакомление с работой данных массива.
курсовая работа [336,2 K], добавлен 27.06.2015Описание записи, содержащей поля: расчётный счёт плательщика и получателя, перечисляемая сумма в рублях. Программа для ввода данных с клавиатуры в массив. Листинг исходного файла программы вывода информации на экран и распечатка снимков с экрана.
контрольная работа [710,6 K], добавлен 20.01.2011Линейный массив в программе на C++ - упорядоченный набор однотипных переменных, располагающихся в памяти последовательно. Массив как простейшая структура данных, облегчающая работу с большими объемами информации. Использование типизированных констант.
лабораторная работа [33,5 K], добавлен 15.07.2009Изучение способов организации консольного ввода/вывода данных в режиме черного экрана. Ознакомление со стандартными типами данных (целый, вещественный, символьный, логический) и методами описания переменных, использующихся на языке программирования С++.
презентация [2,2 M], добавлен 17.04.2010Ознакомление с основными понятиями и организацией ввода-вывода, обработкой массивов. Описание одномерных и двумерных массивов. Описание строк и операции с ними. Комбинированный тип данных - записи. Характеристика записей, использующих вариантную часть.
реферат [84,6 K], добавлен 09.02.2011Способы ограждения пользователей от деталей фактического устройства данных. Список описателей переменных, указателей или массивов. Статические или динамические структуры данных. Доступ к различным элементам данных. Добавление и удаление элементов.
презентация [57,8 K], добавлен 14.10.2013Запись в языке программирования – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. Поле записи как обычная переменная. Операторы сравнения, присоединения. Программа с использованием массива структур.
реферат [11,5 K], добавлен 19.01.2009Разработка программного обеспечения для упрощения буквенно-цифрового ввода при невозможности использовать функционал стандартной буквенной клавиатуры. Классификация и установка драйверов. Выбор языка и среды программирования. Пользовательский интерфейс.
курсовая работа [183,0 K], добавлен 12.03.2013