Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
malinka111
2 / 2 / 0
Регистрация: 19.09.2013
Сообщений: 25
#1

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

27.09.2013, 01:40. Просмотров 328. Ответов 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 01:40     Доброй ночи форумчане! Не могу изменить программу для добавочного условия
Посмотрите здесь:

C++ уважаемые форумчане не могу разобраться с перегрузкой
Изменить программу для типа unsigned char C++
Не могу осилить условия! C++
C++ Не могу понять условия задачи
Как изменить код программы чтобы все условия выполнялись должным образом? C++
не могу изменить программу для немного другого условия C++
Составить программу для вычисления значения rez в зависимости от поставленного условия C++
C++ Найти минимальный элемент для каждой диагонали матрицы (не могу изменить цикл)
C++ Изменить программу для работы с массивом из string
C++ Изменить функцию, чтобы все условия выполнялись в цикле
Не могу разобраться с оператором условия C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
behemoth
44 / 30 / 7
Регистрация: 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;
 }
malinka111
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();
}
behemoth
44 / 30 / 7
Регистрация: 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();
}
Yandex
Объявления
27.09.2013, 23:00     Доброй ночи форумчане! Не могу изменить программу для добавочного условия
Ответ Создать тему
Опции темы

Текущее время: 17:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru