Основы средств и методов программирования

Ознакомление с перечнем переменных, задействованных в программе. Разработка и анализ действий для ввода с клавиатуры данных в массив, состоящий из элементов типа 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.