Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Создание динамического массива






Способ.

#include < stdio.h>

#include < conio.h>

 

void main ()

{

char s, z[15]=" 123456789qwerty";

char *d, *h;

z[15]='\0';

printf(" Slovo v nachale --> %s \n", z);

for (d=z, h=& z[14]; d< h; d++, h--)

{

s=*d;

*d=*h;

*h=s;

}

printf(" Slovo v konze --> %s", z);

_getch();

}

Способ.

...

for (d=z, h=& z[14]; d< h;)

{

s=*d;

*d++=*h;

*h--=s;

}

printf(" Slovo v konze --> %s", z);

getch();

}

Способ.

...

d=z;

h=& z[14];

while (d< h)

{

s=*d;

*d++=*h;

*h--=s;

}

Способ.

char s, z[15]=" 123456789qwerty";

int i;

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

{

s=*(z+i);

*(z+i)=*(z+14-i));

*(z+(14-i))=s;

}


Функции для выделения и освобождения памяти

Функция Прототип и краткое описание
malloc void * malloc(unsigned s); Возвращает указатель на начало области (блока) динамической памяти длиной s байт. При неудачном завершении возвращает значение NULL.
calloc void * calloc(unsigned n, unsigned m); Возвращает указатель на начало области (блока) обнуленной динамической памяти, выделенной для размещения n элементов по m байт каждый. При неудачном завершении возвращает значение NULL.
realloc void * realloc(void *bl, unsigned ns); Изменяет размер блока выделенной динамической памяти до размера ns байт. bl – адрес начала изменяемого блока. Если bl равен NULL (память не выделялась), то функция выполняется как malloc.
Free void * free(void *p); Освобождает ранее выделенный участок (блок) динамической памяти, адрес первого байта которого равен p.

Создание динамического массива

#include < iostream>

using namespace std;

 

int main ()

{

int num; // размер массива

cout < < " Enter integer value: ";

cin > > num; // получение от пользователя размера массива

 

int *p_darr = new int [num]; // Выделение памяти для массива

for (int i = 0; i < num; i++) {

// Заполнение массива и вывод значений его элементов

p_darr[i] = i;

cout < < " Value of " < < i < < " element is " < < p_darr[i] < < endl;

}

delete [] p_darr; // очистка памяти

return 0;

}

Файлы

#include " stdafx.h"

#include < stdio.h>

#include < conio.h>

#include < stdlib.h>

int _tmain(int argc, _TCHAR* argv[]){

FILE *fp;

if ((fp=fopen(" ini.dat", " w"))==0)

perror(" ini.dat");

else

{int i;

for(i=1; i< 21; i++)

fprintf(fp, " chislo %5d \t kvadrat %10d\n", i, i*i);

fclose(fp); }

system(" pause");

return 0;

}

В таблице 1 перечислены функции позиционирования в потоках данных C++.

Таблица 1. Функции позиционирования в потоках данных
Класс Функция Описание
basic_istream< > tellg() Возвращает текущую позицию чтения
seekg(pos) Устанавливает абсолютную позицию чтения
seekg(offset, rpos) Устанавливает относительную позицию чтения
basic_ostream< > tellp() Возвращает текущую позицию записи
seekp(pos) Устанавливает абсолютную позицию записи
seekp(offset, rpos) Устанавливает относительную позицию записи

 

 


Рекурсивное вычисление факториала:

int fac(int val){ if (val == 1) return 1; else return fac(val - 1) * val; }

 

 

Числа фибоначи

#include < iostream>

 

using namespace std;

 

unsigned long long int f(int n)

{

if(n == 0) return 0;

if(n == 1 || n == 2) return 1;

 

return f(n-1)+f(n-2);

}

 

int main()

{

cout < < f(5) < < endl;

return 0;

}

 

 

int power(long int x, unsigned int y)

{

int d = 0;

if (y == 0)

d = 1;

else if (y == 1)

d = x;

else if (y % 2 == 0)

d = power (x * x, y/2);

else

d = x * power(x * x, y/2);

return d;

}

 







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.