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

Отладка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поразрядные операции http://www.cyberforum.ru/cpp-beginners/thread708480.html
Добрый вечер. Не понимаю по какому принципу решать второю часть задачи. Собственно вот: тема - Поразрядные операции. Задание: Даны два int-числа: N1 = ABCD и N2 = EFGH, где AB…GH – 16 – ричные цифры. Образовать long-число, используя только поразрядные операции: ACCDGHEF. В подчёркнутой группе цифр ССDG определить количество непересекающихся кодовых комбинаций 011. Собственно вот, что я...
C++ Функции: выяснить, какое число встречается в последовательности раньше - положительное или отрицательное 2)Дано натуральное число n и последовательность целых чисел x1,x2,x3....xn. Написать программу решения след. задачи : выяснить, какое число встречается в последовательности раньше-положительное или отрицательное. http://www.cyberforum.ru/cpp-beginners/thread708478.html
C++ Форматирование текста записанного в файл
В файле записан текст стихотворения. Форматировать текст так, чтобы каждый куплет из 4 строк следовал с одной и той же позиции, начинался с прописной буквы и был сдвинут относительно предыдущего куплета на 5 позиций вправо или влево поочередно. Подскажите как сделать сдвиги относительно предыдущего куплета на 5 позиций вправо или влево поочередно. #include <iostream> #include <string>...
Проверка наличия двух пар среди выданных игроку карт C++
Можно ли оптимизировать алгоритм этой функции? У меня извечная проблема... когда я напишу функцию или часть кода в программе и он работает, то вместо радости у меня появляется чувство что я плохо составил алгоритм и код получился некрасивым. несмотря на то что он свою функцию выполняет bool DeckOfCards::twoPairs (const int *face) { bool twoPairs = false; int pairs = { 0 }; int count = 0;...
C++ Дан файл, компоненты которого являются действительными числами. Найти наименьшее из значений компонент с четными номерами. http://www.cyberforum.ru/cpp-beginners/thread708463.html
У меня следующее задание: Дан файл, компоненты которого являются действительными числами. Найти наименьшее из значений компонент с четными номерами. Вот код который я написал: #include <iostream> #include <fstream> using namespace std; void main() { char a, chet; fstream kote("1.txt", ios::in);
C++ Функции: вычислить значение сложной (составной) функции помогите,пожалуйста!! 1)Y= Max(a,b) если х=0 y=Min(a,b) если х=1 y= |a+b| во всех остальных случаях подробнее

Показать сообщение отдельно
ps10n1ck
 Аватар для ps10n1ck
53 / 47 / 2
Регистрация: 10.11.2010
Сообщений: 132
26.11.2012, 16:24     Отладка
Цитата Сообщение от ps10n1ck Посмотреть сообщение
в данном случае разницы особой нет, а может и вовсе нет
позже подробно опишу почему
Как уже писалось выше, компиляторы с возможностью оптимизации кода, могут заменять подобные постфиксные операции на префиксные если данная операция не находится в выражении (к примеру такие замены выполняются в простых приращениях счетчиков).

Чем отличается постфиксная операция от префиксной:
- в префиксной операции, сперва происходит увеличение/уменьшение на 1, а потом выполняется действие(операция), в постфиксной - сперва действие, а потом увеличение/уменьшение на 1
к примеру:
C++
1
2
3
4
5
6
int a = 5;
int b = 5;
int c = 0;
 
c = ++a; // тут с = 6
c = b++; //тут с = 5;
- второй момент заключается в том, что при использовании постфиксной операции выделяется дополнительно память для одной переменной того же типа (соответственно требуется больше тактов процессора для выделения, копирования переменной и т.д.).

На примере я думаю будет более понятнее:
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
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
class Integer {
  int a;
 
public:
  Integer(int data);
  ~Integer();
  void ShowData();
 
  int operator++(); // префиксная операция
  int operator++(int tmp); // постфиксная операция
};
 
// Конструктор
Integer::Integer(int data){
  a = data;
}
 
// Деструктор
Integer::~Integer(){
}
 
// префиксная операция
int Integer::operator++(){
    a += 1;
  return a;
}
 
// постфиксная операция
int Integer::operator++(int tmp){
  tmp = a; // сперва копируем значение во временную переменную
  a += 1;  // потом увеличиваем на еденицу
  return tmp; // возвращаем значение временной переменной
}
 
// вывод значения A
void Integer::ShowData(){
  cout << "Element A = " << a << endl;
}
 
int main(){
  
  Integer IntDataA(5);
  Integer IntDataB(5);
  cout << "IntDataA: ";
  IntDataA.ShowData();
  cout << "IntDataB: ";
  IntDataB.ShowData();
 
  int a_test = ++IntDataA; // префиксная операция
  int b_test = IntDataB++; // постфиксная операция
 
  cout << "a_test: " << a_test << endl; // результат префиксной операции
  cout << "b_test: " << b_test << endl; // результат постфиксной операция
 
  cout << "IntDataA: ";
  IntDataA.ShowData();
  cout << "IntDataB: ";
  IntDataB.ShowData();
 
  return 0;
}
результат программы:
[img]http://s45.***********/i107/1211/b3/23cb15eed58ft.jpg[/img]
 
Текущее время: 10:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru