Задача 1 Составить программу на языке С/С++, содержащую: - объявления и инициализацию указателей на различные типы объектов: переменные, массивы, структуры; - объявления и инициализацию указателей с различными модификаторами (const, near, far, huge); - преобразования указателей различных типов, в том числе типа void. #include #include #include void main(void) { //переменные const double Eu=8.1; double *pEu=(double*)&Eu; *pEu=4.6; //изменения константы Eu с помощью указателя cout<<Eu<<"\n"; //массивы float Y[]={1,2,3,4,5,6}; //указатель на масив вещественного типа float *pY=Y; //pY указывает на начало массива y[] //структуры struct komp { char proc [20]; int memory; }; komp *Celeron=NULL; //инициализированный указатель на объект типа komp komp MStar[]={"Celeron2000",512,"Pentium2500",512}; Celeron=&MStar[0]; cout<<"\n"<<Celeron<<"\t"<<Celeron->proc<<"\t"<<Celeron->memory; //модификаторами (const, near, far, huge) double St[]={8.1,3.3,1.4}; double *const pSt=&St[2]; //инициализированный константный указатель //на элемент массива типа float //преобразования указателей различных типов unsigned long A=12345678; char *char_=(char*)&A; //указатель на объект типа char int *int_=(int*)&A; //указатель на объект целого типа float *float_=(float*)&A; //указатель на объект вещественного типа cout<<A<<"\t"<<(void*)char_<<"\t"<<int_<<"\t"<<float_<<"\n"; cout<<A<<"\t"<<*char_<<"\t"<<*int_<<"\t"<<*float_; cerr<<" "; void *vp; int i=77; float f=2.7; vp=&i; cout<<"*(int*)vp="<<*(int*)vp; vp=&f; cout<<"*(float*)vp="<<*(float*)vp; cerr<<" "; getch(); } Задача 2 Составить программу на языке С/С++, содержащую: - простейшие действия с одномерными массивами (как числовыми, так и символьными), используя указатели, методы доступа к элементам массивов через указатели; - простейшие действия с многомерными массивами (как числовыми, так и символьными), используя указатели, методы доступа к элементам массивов через указатели; - всевозможные операции с указателями. */ #include #include #include void main(void) { //одномерные массивы int x[]={4,5,6,7,2,4,6}; char ch[]="ABCD"; char ch1[]={'A','B','C','D'}; int *px=x; char *pch=ch; char *pch1=ch1; for(int i=0;i=0;i--) cout<<*(pch1+i)<<"\t"; cout<<"\n"; for(i=0;i<4;i++) cout<<*(pch1++)<<"\t"; //многомерные массивы int A[3][3]={1,2,3,4,5,6,7,8,9}; char B[3][3]={'A','B','C','D','E','F','G','H','\0'}; cout<<*(*(A+1))<<"\n"; int C[3][2][4]= { 0, 1, 2, 3, 10, 11, 12, 13, 100, 101, 102, 103, 110, 111, 112, 113, 200, 201, 202, 203, 210, 211, 212, 213 }; cout<<***C<<"\n"; cout<<*(*(*(C+1)+1)+3)<<"\n"; int sum=0; for(int i=0;i<3;i++) for (int j=0;j<2;j++) { cout<<"\n"; for(int k=0;k<4;k++) { sum+=*(*(*(C+i)+j)+k); cout<<*(*(*(C+i)+j)+k)<<"\t"; } } cout<<"\n"<<sum; cerr<<" "; } Задача 3 Составить программу на языке С/С++, содержащую: - объявления указателей на функции и передачи аргументов с помощью указателей; - доступ к содержимым по указателям. */ #include #include #include void f1(int *x) { cout<<*x; } int** f2(int *x) { int **z= new int*[*x]; for (int i=0;i<*x;i++) z[i] = new int[*x]; for (i=0;i<(*x);i++) for (int j=0;j<(*x);j++) *(*(z+i)+j)=i+j; return z; } void main(void) { int A=5; void (*fun)(int*); fun=f1; int *pa=&A; (*fun)(pa); int **pf=NULL; int (**(*fun1)(int*)); fun1=f2; pf=(*f2)(pa); cout<<"\n"<<**pf; for (int i=0;i<(*pa);i++) { cout<<"\n"; for (int j=0;j<(*pa);j++) cout<<*(*(pf+i)+j)<<"\t"; } cerr<<" "; } Задача 4 Составить программу на языке С/С++, содержащую: - динамическое размещение массивов; - интерпретацию составных описателей. 11 Задача 1 а) Создать программу определения факториала числа n, использующую цикл (любой - for или while). б) Составить описание рекурсия математическими терминами. в) Разработать схему рекурсивных вызовов. г) Составить программу определения факториала числа n, использующую рекурсию. д) Проанализировать работу рекурсивной функции с помощью отладчика. е) Сделать сравнительный анализ работы двух программ. */ а) #include void main() { int i; cout << "Введите число:"; cin >> i; // расчет факториала int j, fact=1; for (j=i; j>=1; j--) fact*=j; cout << "Факториал равен:" << fact; } г) #include long fact(int f) { if (f<0) return (0); if (f==0) return (1); return (f*fact(f-1)); } Задача 2 Написать программу рекурсивной функции Аккермана с использованием основной функции ackr и вспомогательной функции smacc. Составить описание рекурсия математическими терминами. Разработать схему рекурсивных вызовов. Проанализировать работу рекурсивной функция с помощью отладчика. */ #include #include void main(void) { //clrscr(); int x,y,n; long t; int ackr(int,int,int); printf("\nВведите 3 целых положительных числа:\n"); n=3,x=3,y=3; //scanf("%d%d%d",&n,%x,&y); t=ackr(n,x,y); printf("Результат вычисления функции Акермана = %ld",t); getch(); } int smacc (int n, int x) { switch (n) { case 0: return (x+1); case 1: return (x); case 2: return (0); case 3: return (1); default: return (2); } } int ackr(int n, int x, int y) { int z; int smacc(int,int); if(n==0||y==0)z=smacc(n,x); else { z=ackr(n,x,y-1); z=ackr(n-1,z,x); } return z; } Задача З Подобрать собственный пример, иллюстрирующий работу рекурсивной функции. Составить программу, выполнить ее анализ. */ Рекурсивный ввод и печать списка. #include #include struct cell { char sign[10]; int weight; struct cell *pc; }; struct cell* input(void) { struct cell *p; p=(struct cell *)malloc(sizeof(struct cell)); printf("Sign="); scanf("%s",& p->sign); printf("Weight="); scanf("%d",& p->weight); if(p->weight==0) { free(p); return NULL; } p->pc=input(); return p; } void output(struct cell *p) { if (p==NULL) { printf("\nEND"); return; } printf("\nsign=%s\tweight=%d",p->sign,p->weight); output(p->pc); } void main(void) { struct cell *beg=NULL; beg=input(); printf("\nBegin"); output(beg); } 12 Задача 1 Создать несвязанный числовой список в виде массива. Распечатать его. Выполнить следующие операции с несвязанным списком: а) найти максимальный по модулю элемент; б) вставить за ним новый элемент, равный по величине, но противоположный по знаку; в) Новый список распечатать. */ #include #include #include int abc (int x) {return x>0?x:-x;} void main(void) { int d[100]={1,2,300,-4,-50,6,7},L=7; int max = 0; //максимальный по модулю элемент for (int i=0;iabc(d[max])) max=i; printf("MAX element= |%d|",d[max]); //добавление нового элемента за МАХ элеме for (int j=L-1; j>max; j--) d[j+1]=d[j]; d[max+1]=-d[max]; L++; //исключить первый элемент списка for (j=0; j<L; j++) d[j]=d[j+1]; L--; //новый список cout<<"\n"; for (i=0;i<L;i++) cout<<d[i]<<"\t"; cerr<<" "; }
Рефераты по информатикеЗадача 1 Составить программу на языке С/С++, содержащую: - объявления и инициализацию указателей на различные типы объектов: переменные, массивы,
Оценок: 489 (Средняя 5 из 5)
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.