русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Составные типы данных


Дата добавления: 2013-12-23; просмотров: 992; Нарушение авторских прав


Если поле недостаточно, строка выводится полностью;

Void main ()

Форматный вывод символьных и строковых данных

Для вывода символов используется формат типа в”%с", а для вывода строк формат типа "%s". Особенности вывода символов и строк рассмотрим на примерах. Ниже приведена программа, с помощью которой можно вывести в файл символы, заданные i-кодами, по 10 значений в строке.

(пример старой версии)

# include <stdio>

FILE *f;

{int i; f = fopen ( “14vivsim.res”, “w” ) ;

for ( i = 27; i < 255; i++)

{ fprintf (f, “ %3d = %c”, i, i ) ;

if ( (i - 26) % 10 = = 0 ) fprintf (f, “\n”) ; } fclose (f) ;

}

При выводе символов и в списках форматов можно использовать символь­ные константы - управляющие коды иesc-последовательности. Примеры управ­ляющих кодов даны в табл. ниже.

С помощью управляющих кодов можно формировать документ требуемой формы. Например, с помощью кода\r можно несколько раз выводить данные на одной и той же строке: расставить граничные символы, а затем вывести требуемые значения в соответствующие графы таблицы.

Код Назначение кода
\n новая строка
\b возврат на 1 символ
\r возврат в начало строки
\f прогон бумаги до конца страницы
\\ вывод символа “\”
\’ вывод апострофа
\” вывод кавычек
\? вывод знака вопроса
\a короткий звуковой сигнал
\07 “—“

В программе на рис. 16 из каждой строки исходных данных вводится 15 символов в элементы массива:

d[ i ] [ 0 ] / d[ i ][ 14 ]. В d[ i ][15] вводится признак кон­ца строки: d[ i ][15] = \n. В соответствии с правилами работы функцииfgetsформируется: d[ i ][16] = \0. После ввода значения строки d[ i ] оно выводится с помощьюfprintf.



Для вывода строк можно использовать следующие виды форматов:

"%s” - вывод всех символов строки;

“%ws” - вывод строки в поле w до первого символа \0;

“%w.ps”- вывод р символов в поле w;

"%.рs" - вывод р символов строки в поле w = р.

Ниже приведен пример вывода символьной строки с помощью различ­ных форматов типа %s и результаты ее выполнения.

 

Составные типы данных определяют наборы однотипных или разнотипных компонентов. В языке VC++2005 следующие составные типы:

1. Массивы.

2. Строки.

3. Структуры.

4. Объединения.

5. Перечисления.

6. Файлы.

 

Обработка массивов в VC++

Массив состоит из определенного количества компонентов одного и того же типа. Компоненты могут быть простыми и составными. Доступ к каждому элементу массива осуществляется с помощью индексирования. Индексом может быть произвольное выражение порядкового типа, заключенное в квадратные скобки. Допустимый диапазон индексов определяется в описании массива. Чтобы создать массив необходимо указать три параметра:

· Тип значений каждого элемента.

· Имя массива.

· Количество элементов в массиве.

 

Формат объявления массива:

Тип идентификатор_массива [количество элементов];

Пример:

int x[100]; //в ОП по адресу хвыделяется участок размером 100 умноженное на размер типа int, 4 байта.

float a[200]; //в ОП по адресу aвыделяется участок размером 200 умноженное на размер типа float, 4 байта.

Размер массива можно определить:

Число_байтов = sizeof (тип_элемента) * число элементов;

Количество элементов можно определить:

Кол._элем. = sizeof (имя_массива) / sizeof (тип_элемента);

Обязательные условия при объявлении массива:

· Размерность – это целое положительное константное выражение.

· Тип элемента в одномерном массиве – простой (скалярный).

· Количество элементов обязательно надо указать в одномерном массиве, если не проводится инициализация.

· В массиве каждый элемент обрабатывается отдельно.

· Доступ к каждому элементу массива осуществляется по имени массива и порядковому номеру элемента, указанного в квадратных скобках (индексу).

Пример индексации элементов массива

array [ 2 ] ; // третий элемент массива array

a [ i + 2 ] ; // (i + 2)-ий элемент массива a

 

· Каждому элементу одномерного массива соответствует один индекс.

· Одномерный массив имеет одну меру измерения, в нем может быть n элементов, использовать можем k элементов, где n>=k. Каждый элемент стоит на i‑том месте, где i изменяется от 0 до k. Т.Е. 0<=I <= k, где k<=n.Компилятор не контролирует значение индексной переменной, это необходимо делать внутри программы.

 

Основные операции над массивом – инициализация.

Прежде чем использовать элементы массива в программе, необходимо его инициализировать, т.е. каждый элемент должен получить конкретное значение.

Это можно выполнить в трех случаях:

1. во время объявления;

2. во время присвоения каждому элементу конкретное значение;

3. во время считывания с устройства в/в по адресу элемента массива.

1 случай: инициализация выполняется во время объявления массива по формату: тип имя_массива [ N ] = { элемент0,…,элементN-1};

Пример инициализации одномерного массива простого типа в момент объявления массива

int m [ 3 ] = { 1, 10, 100 } ; //нулевой элемент равен 1, первый – 10. второй – 100.

unsigned short x [ 5 ] = { 3, 5 } ; // нулевой элемент равен 3; первый – 5; элементы, значения которых не указаны, обнуляются, т.е.второй, третий и четвертый элементы равны 0.Чтобы обнулить все элементы массива, достаточно при объявлении массива, нулевому элементу присвоить нуль

int mas [10] = {0};

double y [ ] = { 1.5, 7.38, -8.9, 0.0, 10.5 } ;//в квадратных скобках не указано количество элементов, оно определяется по количеству элементов в фигурных скобках.

char c [ 4 ] = { 'a', 'b', 'c', '\0' } ;

Пример поиска минимального элемента в одномерном массиве простого типа

#include <iostream>

using namespace std ;

int main ( )

{

// объявление и инициализация массива array

int array [ ] = { 5, -10, 123, -7, 25, -3, -77, 1, 7, 3 } ;

// вычисление size — количества элементов в массиве

int size = sizeof ( array ) / sizeof ( array [ 0 ] ) ;

// предположение, что минимальный элемент имеет индекс 0

int jMin = 0 ;

// цикл проверки элементов массива

for ( int j = 1; j < size; j++ )

if ( array [ j ] < array [ jMin ] )

jMin = j ;

// вывод массива

cout << "Elements of array\n" ;

for ( int j = 0; j < size; j++ )

cout << array [ j ] <<" "<< '\t' ;

// вывод минимального значения array [ jMin ]

cout << "\nMinimum = " << array [ jMin ] << endl ;

return 0 ;

}

2 случай: каждому элементу массива присвоить случайно выработанное число

#include <iostream>

using namespace std ;

const int N = 100 ; int fk; // fk – переменная по фактическое количество элементов

int main ( )

{

// объявление массива из 100 элементов целого типа

int array [ N ] ;

do{

cout << "\n Введите фактическое количество элементов \t";

cin >> fk;

}while (fk > N) ;

// цикл ввода элементов массива

for ( int j = 0; j < fk; j++ )

{

cout << "Enter array [" << j << "] -> " ;

array [j] = rand();

cout << array [ j ] <<" "<< '\n' ;

}

// вывод подсказки

cout << "\n\nThe entered array\n" ;

// цикл вывода элементов массива

for ( int j = 0; j < fk; j++ )

cout << array [ j ] <<" "<< '\t' ;

cout << endl ;

for ( int j = 0; j < fk; j++ )

{

cout << "Enter array [" << j << "] -> " ;

array [j] = rand()/N;

cout << array [ j ] <<" "<< '\n' ;

}

return 0 ;

}

3 случай:

Пример ввода/вывода одномерного массива простого типа

#include <iostream>

using namespace std ;

const int N = 100 ; int fk; // fk – переменная по фактическое количество элементов

int main ( )

{

// объявление массива из 100 элементов целого типа

int array [ N ] ;

do{

cout << "\n Введите фактическое количество элементов \t";

cin >> fk;

}while (fk < N) ;

// цикл ввода элементов массива

for ( int j = 0; j < fk; j++ )

{

cout << "Enter array [" << j << "] -> " ;

cin >> array [ j ] ;

}

// вывод подсказки

cout << "\n\nThe entered array\n" ;

// цикл вывода элементов массива

for ( int j = 0; j < fk; j++ )

cout << array [ j ] <<" "<< '\t' ;

cout << endl ;

return 0 ;

}

Пузырьковая сортировка.

#include <cstdlib>

#include <ctime>

#include <iostream>

using namespace std;

void main ()

{

const int k = 100;

int fk; int i;

do

{

cout <<"fk = ";cin>>fk;

}

while (fk > k);

 

int mas[k];

// цикл ввода элементов массива

srand(( unsigned)time(NULL));

cout<<"\n isxod mas\n";

for ( i = 0; i < fk ; i++)

{

mas[i] = rand()%15+2;

cout<< mas[i]<<'\t';

}

bool pr = 0; int dmas; //предполагаем, что ряд не отсортирован

while (pr == false) //до тех пор пока ряд не отсортирован - сортируем

{

pr = true; //предположим, что не будет ни одной перестановки

for(i = 0; i < fk-1 ; i++)

{

if (mas[i] < mas[i+1])//если следующий элемент больше предыдущий

{

dmas = mas[i]; //делаем перестановку

//наибольший элемент

//переставляем вперед

mas[i] = mas[i+1];

mas[i+1] = dmas;

pr = false; //принимаем признак ложного ряда

}

}

}

 

cout<<"\n res mas \n";

for ( i = 0; i < fk ; i++)

{

cout<<mas[i]<<'\t';

}

 

 

// TODO: Add your control notification handler code here

}

 

Недостаток при использовании статического массивазаключается в том, что резервируется ОП под массив на наибольшее количество элементов и закрепляется за программой до ее завершения, а используется фактически возможное, что меньше или равно выделенному участку.В результатеэтого ОП простаивает или используется не экономно.

 



<== предыдущая лекция | следующая лекция ==>
DD - два десятичных разряда порядка. | Обработка двумерного массива


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.008 сек.