Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Clr (str) - очистка строки




0 1 2 3 4 5

Многомерные массивы

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

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

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

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

  j         m
i            
    # X X X #
      # X #  
        #    
      #   #  
n   #       #

Например, для матрицы 5x5 обработать элементы, лежащие выше главной диагонали и выше обратной диагонали.

 

 

Пример реализации:

// Pozitiv and Negativ method for matrix

# include<stdio.h>

# include<conio.h>

# include<iostream.h>

# include<math.h>

# include<dos.h>

const n=5;

int M2[n][n]={{ 2, 4, 7,-2, 5},

{-7, 1, 7, 9,-5},

{-2, 3, 6, 8, 1},

{ 7, 1, 0,-4, 3},

{ 0, 2, 1, 8, 9}};

int Sum_Pozitiv(int n)

{ int i,j, Sum=0;

for (i=0; i<n/2; i++)

for (j=i+1; j<n-i-1; j++)

{ Sum+=M2[i][j]; cout<<i<<" "<<j<<endl;}

return Sum;

}

int Sum_Negativ(int n)

{ int i,j, Sum=0;

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

for (j=i+1; j<n; j++)

if((i<j)&&(j<n-i-1)) Sum+=M2[i][j];

return Sum;

}

void main()

{ clrscr();

printf("Sum=%i\n",Sum_Pozitiv(n));

printf("Sum=%i\n",Sum_Negativ(n));

getch();

}

4.3. Сложный тип данных – строки.

Строки предназначены для операций с символьными данными.

В С++ строка представляет собой некоторый массив элементов типа char, в конце которого помещается символ ‘\0’ (нуль-терминатор). Такой массив называется ASCII – строкой.

Инициализацию строки можно выполнить следующим образом:

сhar str[6] = {'B','E','G','I','N','\0'};

сhar str[6] = "BEGIN";

сhar str[] = "BEGIN";

В памяти строка выглядит следующим образом:

 

str B E G I N \0

 

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

gets (str) -ввод строки с клавиатуры;

puts (str) -вывод строки на экран;

printf("%s",str) –

вывод строки на экран, используя шаблон 's';

Рассмотрим пример: Определить, имеется ли в строке хотя бы одна латинская буква, а также напечатать количество цифр в строке. Для решения задачи организуем цикл по элементам строки от первого элемента до нуль-терминатора ('\0').

// String Latin && Cifra

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

#include <math.h>

char st[36]=""; // -- String

 

// Является ли simbol латинской буквой?

int Latin(char simbol)

{ if (((simbol>='A')&&(simbol<='Z'))||

((simbol>='a')&&(simbol<='z')))

return 1;

return 0;

}

// Является ли simbol цифрой?

int Cifra(char simbol)

{ if ((simbol>='0')&&(simbol<='9')) return 1;

return 0;

}

void main() //-- Главная функция ---

{ int i; int f=0; int k=0;

cout<<"Input Line = \n";

gets(st);

printf("%s\n",st);

for (i=0; st[i]; i++)

{ if (Latin(st[i])) f=1;

if (Cifra(st[i])) k++;

}

if (f) printf("Latin Yes!\n");

else printf("Latin No!\n");

printf("Cifr = %i.\n",k);

getch();

}

 

Еще один пример показывает способ выборки слов из строки, отделенных друг от друга пробелами. Для этого мы напишем несколько полезных функций для работы со строками:

Len (str) - определяет длину строки;

Cat (str, ch) - конкатенация или склеивание;

Задание: распечатать в столбик все слова из строки st.

// Task 43 Word from String.

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

#include <math.h>

char st[36]=""; // -- String

int Len(char st[]){ for (int i=0; st[i]; i++); return (i);}

void Cat(char st[],char S)

{ st[Len(st)+1]='\0';st[Len(st)]=S;}

void Clr(char st[])

{ for (int i=0; st[i]; i++) st[i]='\0';}

void Pri(char st[])

{ for (int i=0; st[i]; i++)

printf("%c",st[i]);

printf("\n");

}

// ------------ MAIN --------------------------

void main()

{ int i; char wrd[36]="";

cout<<"Input Line = \n";

gets(st);

Cat(st,' ');

Pri(st);

int CountWord=0;

for (i=0; st[i]; i++)

{ if (st[i]!=' ') Cat(wrd,st[i]);




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 495; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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