Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
2 / 2 / 0
Регистрация: 19.09.2013
Сообщений: 25
1

Доброй ночи форумчане! Не могу изменить программу для добавочного условия

27.09.2013, 01:40. Просмотров 446. Ответов 3
Метки нет (Все метки)


Первое условие было составить двусвязный список из случайных чисел, оно выполнено.Теперь нужно Найти произведение 2-ого и последнего элемента двусвязного списка.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdlib.h>
#include <iostream>
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <fstream>
#include<time.h>
using namespace std; 
 
struct Node       //структура являющаяся звеном списка
 {
     int x;     //значение x будет передаваться в список
     Node *Next,*Prev; //указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   //создаем тип данных Список
 {
     Node *Head,*Tail; //указатели на адреса начала списка и его конца
 public:
     List():Head(NULL),Tail(NULL){}; //инициализируем адреса как пустые
     ~List(); //деструктор
     void Show(); //функция отображения списка на экране
     void Add(int x); //функция добавления элементов в список
 };
 
List::~List() //деструктор
 {   
     while (Head) //пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; //резервная копия адреса следующего звена списка
         delete Head; //очистка памяти от первого звена
         Head=Tail; //смена адреса начала на адрес следующего элемента
     }
 }
 
 void List::Add(int x)
 {
   Node *temp=new Node; //выделение памяти под новый элемент структуры
   temp->Next=NULL;  //указываем, что изначально по следующему адресу пусто
   temp->x=x;//записываем значение в структуру
 
   if (Head!=NULL) //если список не пуст
   {
       temp->Prev=Tail; //указываем адрес на предыдущий элемент в соотв. поле
       Tail->Next=temp; //указываем адрес следующего за хвостом элемента
       Tail=temp; //меняем адрес хвоста
   }
   else //если список пустой
   {
       temp->Prev=NULL; //предыдущий элемент указывает в пустоту
       Head=Tail=temp; //голова=хвост=тот элемент, что сейчас добавили
   }
 }
 
 void List::Show()
 {
//ВЫВОДИМ СПИСОК С КОНЦА
     Node *temp=Tail;   //временный указатель на адрес последнего элемента
     while (temp!=NULL) //пока не встретится пустое значение
     {
     cout<<temp->x<<" "; //выводить значение на экран
     temp=temp->Prev; //указываем, что нужен адрес предыдущего элемента
     }
     cout<<"\n";
 
 //ВЫВОДИМ СПИСОК С НАЧАЛА
     temp=Head; //временно указываем на адрес первого элемента
      while (temp!=NULL) //пока не встретим пустое значение
     {
     cout<<temp->x<<" "; //выводим каждое считанное значение на экран
     temp=temp->Next; //смена адреса на адрес следующего элемента
     }
     cout<<"\n";
 }
 
int main ()
{
 
 List lst; //объявляем переменную, тип которой есть список
 for (int i = 0, n = rand()%11 + 10; i < n; ++i) 
 {
   lst.Add(rand()%101-50);
 }
 
 
 lst.Show(); //оттображаем список на экране
 _getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2013, 01:40
Ответы с готовыми решениями:

не могу изменить программу для немного другого условия
первое условие: дан текстовый файл из чисел, создать новый файл и записать в него минимальный и...

Всем доброй ночи!
Можно ли написать макрос в MO Word который будет проверять пункт &quot;Список литературы&quot; на...

Дорогие форумчане,завтра надо сдать программу,а я не могу ее написать
Вводится последовательность целых чисел, 0 – конец последовательности. Определить, сколько в ней...

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

3
44 / 30 / 18
Регистрация: 29.09.2012
Сообщений: 75
Записей в блоге: 1
27.09.2013, 04:56 2
это после функции Add:
C++
1
float multiplication();
это после класа
C++
1
2
3
float List::multiplication(){
     return ((float)(Head->Next->x*Tail->x))/2;
 }
0
2 / 2 / 0
Регистрация: 19.09.2013
Сообщений: 25
27.09.2013, 10:20  [ТС] 3
behemoth, сделала всё как и сказали, но программа выводит только списки чисел
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <stdlib.h>
#include <iostream>
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <fstream>
#include<time.h>
using namespace std; 
 
struct Node       //структура являющаяся звеном списка
 {
     int x;     //значение x будет передаваться в список
     Node *Next,*Prev; //указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   //создаем тип данных Список
 {
     Node *Head,*Tail; //указатели на адреса начала списка и его конца
 public:
     List():Head(NULL),Tail(NULL){}; //инициализируем адреса как пустые
     ~List(); //деструктор
     void Show(); //функция отображения списка на экране
     void Add(int x); //функция добавления элементов в список
     float multiplication();
 
 };
 float List::multiplication(){
     return ((float)(Head->Next->x*Tail->x))/2;
 }
 
 
List::~List() //деструктор
 {   
     while (Head) //пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; //резервная копия адреса следующего звена списка
         delete Head; //очистка памяти от первого звена
         Head=Tail; //смена адреса начала на адрес следующего элемента
     }
 }
 
 void List::Add(int x)
 {
   Node *temp=new Node; //выделение памяти под новый элемент структуры
   temp->Next=NULL;  //указываем, что изначально по следующему адресу пусто
   temp->x=x;//записываем значение в структуру
 
   if (Head!=NULL) //если список не пуст
   {
       temp->Prev=Tail; //указываем адрес на предыдущий элемент в соотв. поле
       Tail->Next=temp; //указываем адрес следующего за хвостом элемента
       Tail=temp; //меняем адрес хвоста
   }
   else //если список пустой
   {
       temp->Prev=NULL; //предыдущий элемент указывает в пустоту
       Head=Tail=temp; //голова=хвост=тот элемент, что сейчас добавили
   }
 }
 
 void List::Show()
 {
//ВЫВОДИМ СПИСОК С КОНЦА
     Node *temp=Tail;   //временный указатель на адрес последнего элемента
     while (temp!=NULL) //пока не встретится пустое значение
     {
     cout<<temp->x<<" "; //выводить значение на экран
     temp=temp->Prev; //указываем, что нужен адрес предыдущего элемента
     }
     cout<<"\n";
 
 //ВЫВОДИМ СПИСОК С НАЧАЛА
     temp=Head; //временно указываем на адрес первого элемента
      while (temp!=NULL) //пока не встретим пустое значение
     {
     cout<<temp->x<<" "; //выводим каждое считанное значение на экран
     temp=temp->Next; //смена адреса на адрес следующего элемента
     }
     cout<<"\n";
 }
 
int main ()
{
 
 List lst; //объявляем переменную, тип которой есть список
 for (int i = 0, n = rand()%11 + 10; i < n; ++i) 
 {
   lst.Add(rand()%101-50);
 }
 
 
 lst.Show(); //ттображаем список на экране
 _getch();
}
Добавлено через 1 минуту
behemoth, сделала все как и сказали но программа выводит только 2 списка
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <stdlib.h>
#include <iostream>
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <fstream>
#include<time.h>
using namespace std; 
 
struct Node       //структура являющаяся звеном списка
 {
     int x;     //значение x будет передаваться в список
     Node *Next,*Prev; //указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   //создаем тип данных Список
 {
     Node *Head,*Tail; //указатели на адреса начала списка и его конца
 public:
     List():Head(NULL),Tail(NULL){}; //инициализируем адреса как пустые
     ~List(); //деструктор
     void Show(); //функция отображения списка на экране
     void Add(int x); //функция добавления элементов в список
     float multiplication();
 
 };
 float List::multiplication(){
     return ((float)(Head->Next->x*Tail->x))/2;
 }
 
 
List::~List() //деструктор
 {   
     while (Head) //пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; //резервная копия адреса следующего звена списка
         delete Head; //очистка памяти от первого звена
         Head=Tail; //смена адреса начала на адрес следующего элемента
     }
 }
 
 void List::Add(int x)
 {
   Node *temp=new Node; //выделение памяти под новый элемент структуры
   temp->Next=NULL;  //указываем, что изначально по следующему адресу пусто
   temp->x=x;//записываем значение в структуру
 
   if (Head!=NULL) //если список не пуст
   {
       temp->Prev=Tail; //указываем адрес на предыдущий элемент в соотв. поле
       Tail->Next=temp; //указываем адрес следующего за хвостом элемента
       Tail=temp; //меняем адрес хвоста
   }
   else //если список пустой
   {
       temp->Prev=NULL; //предыдущий элемент указывает в пустоту
       Head=Tail=temp; //голова=хвост=тот элемент, что сейчас добавили
   }
 }
 
 void List::Show()
 {
//ВЫВОДИМ СПИСОК С КОНЦА
     Node *temp=Tail;   //временный указатель на адрес последнего элемента
     while (temp!=NULL) //пока не встретится пустое значение
     {
     cout<<temp->x<<" "; //выводить значение на экран
     temp=temp->Prev; //указываем, что нужен адрес предыдущего элемента
     }
     cout<<"\n";
 
 //ВЫВОДИМ СПИСОК С НАЧАЛА
     temp=Head; //временно указываем на адрес первого элемента
      while (temp!=NULL) //пока не встретим пустое значение
     {
     cout<<temp->x<<" "; //выводим каждое считанное значение на экран
     temp=temp->Next; //смена адреса на адрес следующего элемента
     }
     cout<<"\n";
 }
 
int main ()
{
 
 List lst; //объявляем переменную, тип которой есть список
 for (int i = 0, n = rand()%11 + 10; i < n; ++i) 
 {
   lst.Add(rand()%101-50);
 }
 
 
 lst.Show(); //ттображаем список на экране
 _getch();
}
0
44 / 30 / 18
Регистрация: 29.09.2012
Сообщений: 75
Записей в блоге: 1
27.09.2013, 23:00 4
я думал что вызов метода в мейне это очевидно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <stdlib.h>
#include <iostream>
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <fstream>
#include<time.h>
using namespace std; 
 
struct Node       //структура являющаяся звеном списка
 {
     int x;     //значение x будет передаваться в список
     Node *Next,*Prev; //указатели на адреса следующего и предыдущего элементов списка
 };
 
 class List   //создаем тип данных Список
 {
     Node *Head,*Tail; //указатели на адреса начала списка и его конца
 public:
     List():Head(NULL),Tail(NULL){}; //инициализируем адреса как пустые
     ~List(); //деструктор
     void Show(); //функция отображения списка на экране
     void Add(int x); //функция добавления элементов в список
     float multiplication();
 };
 
List::~List() //деструктор
 {   
     while (Head) //пока по адресу на начало списка что-то есть
     {
         Tail=Head->Next; //резервная копия адреса следующего звена списка
         delete Head; //очистка памяти от первого звена
         Head=Tail; //смена адреса начала на адрес следующего элемента
     }
 }
 
 void List::Add(int x)
 {
   Node *temp=new Node; //выделение памяти под новый элемент структуры
   temp->Next=NULL;  //указываем, что изначально по следующему адресу пусто
   temp->x=x;//записываем значение в структуру
 
   if (Head!=NULL) //если список не пуст
   {
       temp->Prev=Tail; //указываем адрес на предыдущий элемент в соотв. поле
       Tail->Next=temp; //указываем адрес следующего за хвостом элемента
       Tail=temp; //меняем адрес хвоста
   }
   else //если список пустой
   {
       temp->Prev=NULL; //предыдущий элемент указывает в пустоту
       Head=Tail=temp; //голова=хвост=тот элемент, что сейчас добавили
   }
 }
 
 void List::Show()
 {
//ВЫВОДИМ СПИСОК С КОНЦА
     Node *temp=Tail;   //временный указатель на адрес последнего элемента
     while (temp!=NULL) //пока не встретится пустое значение
     {
     cout<<temp->x<<" "; //выводить значение на экран
     temp=temp->Prev; //указываем, что нужен адрес предыдущего элемента
     }
     cout<<"\n";
 
 //ВЫВОДИМ СПИСОК С НАЧАЛА
     temp=Head; //временно указываем на адрес первого элемента
      while (temp!=NULL) //пока не встретим пустое значение
     {
     cout<<temp->x<<" "; //выводим каждое считанное значение на экран
     temp=temp->Next; //смена адреса на адрес следующего элемента
     }
     cout<<"\n";
 }
 float List::multiplication(){
     return (float)(Head->Next->x*Tail->x);
 }
int main ()
{
 
 List lst; //объявляем переменную, тип которой есть список
 for (int i = 0, n = rand()%11 + 10; i < n; ++i) 
 {
   lst.Add(rand()%101-50);
 }
 lst.Show(); //оттображаем список на экране
 cout<<endl<<"multiplication of 2nd and last element is:"<<lst.multiplication();
_getch();
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2013, 23:00

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

Как программно изменять поля записи в старой доброй FoxPro для DOS?
Как программно изменять поля какой-либо записи? Т.е. происходить это должно без ведома...

Форумчане, спасайте! Сижу 3 дня с этих багом разобраться не могу
Вот видео о баге. https://vimeo.com/258279915 Вот скрипты: Inventory: using UnityEngine;...

Дорогие форумчане доделайте пожалуйста программу на Паскале
Ребята помогите пожалуйста. Задание следующие: нужно сделать так, чтобы 1 бегала по синусоиде,...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.