Программирование на языках высокого уровня

Автор работы: Пользователь скрыл имя, 22 Октября 2010 в 13:05, Не определен

Описание работы

Лабораторная работа

Файлы: 1 файл

Программирование на языках высокого уровня ч2.doc

— 103.00 Кб (Скачать файл)

}; 

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 <stdio.h>

#include <conio.h>

#include <iostream.h> 

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;i<L;i++)

            if(abc(d[i])>abc(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<<" ";

} 
 
 
 

Задача 2

Создать связанный  числовой список. Распечатать его. Выполнить  следующие операции со связанным  списком:

а) найти максимальный по модулю элемент;

б) вставить за ним  новый элемент, равный по величине, но противоположный по знаку;

в) исключить  первый элемент списка. Новый список распечатать.

*/ 

#include <stdio.h>

#include <conio.h>

#include <iostream.h> 

int abc (int x) {return x>0?x:-x;} 

struct ND

{

      int val;

      struct ND * n;

} *dl=NULL, *r, *p=NULL; 
 

void main(void)

{

int mas[]={1,2,3,-50,6,30,1,2,3};

for(int i=0;i<sizeof(mas)/sizeof(mas[0]);i++)

{

         r=new ND;

         r->val=mas[i];

         r->n=NULL;     

         if(dl==NULL)

         { 

               dl=r;

               p=r;

         }

         else

         {

               p->n=r;

               p=r;

         }

}

//максимальный  по модулю элемент

p=dl;

int MAX=dl->val;

while((p->n)!=NULL)

{

      p=p->n;

      if(abc(p->val)>abc(MAX)) MAX=p->val;

}

cout<<"\n"; 

printf("MAX element= |%d|",MAX); 

//добавление  нового элемента за МАХ

p=dl;

while((p->n)!=NULL)

{

      p=p->n;

      if(p->val==MAX)

      {

            r=new ND;

            r->n=p->n;

            r->val=-MAX;

            p->n=r;

      }

} 

//исключить первый  элемент списка

      p=dl;

      dl=dl->n;

      delete (p); 

//новый список 

            p=dl;

            cout<<"\nspisok\n"

        while(p!=NULL)

            {

                  cout<<p->val<<"\t";

                  p=p->n;

            }

cerr<<" ";

} 
 
 

Задача 3

Создать связанный  числовой список типа очередь из 5 объектов. Распечатать его. Выполнить следующие  операции со связанным списком:

а) добавить два  новых объекта в очередь. Распечатать очередь;

б) поменять местами  первый и последний объект в очереди. Распечатать очередь;

в) удалить из очереди первых три объекта. Распечатать  очередь.

*/ 

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

#include <stdlib.h> 

struct elem {

      int inf;

      struct elem *link;

} *begq=NULL, *endq=NULL; 

void addel(int val)

{

      struct elem *p= new struct elem;

      p->inf=val;

      p->link=NULL;

      if(endq==NULL) begq=p;

      else endq->link=p;

      endq=p;

} 

int getdelel(void)

{

      struct elem *p;

      int temp;

      temp=begq->inf;

      p=begq;

      begq=p->link;

      if(begq==NULL) endq=NULL;

      delete p;

      return temp;

} 

void output(struct elem *p)

{

      if (p==NULL)

      {

            printf("\nEND");

            return; 

      }

      printf("\tinf=%i",p->inf); 

output(p->link); 

} 
 

void main(void)

{ 

int mas[]={10,20,30,1,2,3};

for (int i=0;i<sizeof(mas)/sizeof(mas[0]);i++) addel(mas[i]);

output(begq); 

int number;

while (1)

{

      printf("\n 1 - добавить два новых объекта  в очередь");

      printf("\n 2 - поменять местами первый и  последний объект в очереди");

      printf("\n 3 - удалить из очереди первых три объекта");

      printf("\n 4 - Exit");

   while (1)

    {

    printf("\n Menu:");

    scanf("%d",&number);

    if(number>0&&number<5) break;

    printf("\n Error menu");

    while (getchar()!='\n');

    }

   switch (number)

      {

     case 1:

                  {

                        //а) добавить два  новых объекта в очередь. Распечатать  очередь; 

                        scanf("%d",&number);

                        addel(number);

                        scanf("%d",&number);

                        addel(number);

                        break;

                  } 

     case 2:

                  {

                        //б) поменять местами  первый и последний объект в очереди. Распечатать очередь;

                        int temp = getdelel();

                        int endelement= endq->inf;

                        while (begq->inf != endelement) addel(getdelel());

                        addel(temp);    

                        break;

                  }

     case 3:

                  {

                        //в) удалить из  очереди первых три объекта.  Распечатать очередь.

                        for (i=0;i<2;i++) getdelel();

                        break;

                  }

     

            case 4: exit(0); break;

          default: exit(0);

      } 

printf("\nnew spisok\n");

output(begq);

cerr<<" ";

getch();

}

} 
 

/*

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;

} 
 

Задача 4

Создать связанный  числовой список типа стек из 5 объектов. Распечатать его. Выполнить следующие операции со связанным списком:

а) добавить два  новых объекта в стек. Распечатать  стек;

б) поменять местами  первый и последний объект в стека. Распечатать стек;

в) удалить из стека первых три объекта. Распечатать стек. 
 
 
 
 

Информация о работе Программирование на языках высокого уровня