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

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

Войти
Регистрация
Восстановить пароль
 
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
#1

Цикл For, Разница между знаками - C++

04.06.2013, 20:56. Просмотров 315. Ответов 6
Метки нет (Все метки)

Первый вариант:
for(int i(0); i < N; i++)
Второй вариант:
for(int i = 0 ; i < N; i++)
Оба варианта работают идентично, но препод придрался к записи "(0)" в первом варианте и теперь заставляет узнать, почему так, ибо сам он видит подобное первый раз в жизни. Что скажете? Желательно со ссылками на какую-нибудь книгу.
Вот код программы:
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
 setlocale(LC_ALL , "Russian");
 int N;
 cout << "Введите размер матрицы ";
 cin >> N;
 int **Matrix = new int*[N];
  for(int i(0); i < N; i++)
   Matrix[i] = new int[N];
 
 cout << "Заполните матрицу " << N << "x" << N << "\n";
 
 for(int i(0); i < N; i++)
  for(int j(0); j < N; j++)
  {
   cin >> Matrix[i][j];
  }
 
 bool Triugolnay = true;
 for(int i(0); i < N; i++)
  for(int j(1); j < i; j++)
  {
   if(Matrix[i][j] != 0)
   {
    Triugolnay = false;
    break;
   }
  }
 
 if(Triugolnay)
  cout << "Матрица нижне-треугольная\n";
 else cout << "Матрица не нижне-треугольная\n";
 
 
 for(int i(0); i < N;i++)
  delete [] Matrix[i];
 delete [] Matrix;
 _getch();
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 20:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Цикл For, Разница между знаками (C++):

Как подсчитать кол-во символов между двумя знаками? - C++
В вообщем суть задания в том, чтобы посчитать кол-во символов между двумя знаками, может кто написать код для этого? фулл задание:...

Разница между 0 и 00 ? - C++
Как заставить программу различать 0 и 00 (ноль и два ноля, как в рулетке)? Вариант с заменой 00 на какое-то число не подходит, так как...

Разница между if else и else if - C++
Привет, у меня возник &quot;нубский&quot; вопрос. Этот код, это же соркащенная версия нижнего? int i = 3; if (i == 1) ...

Разница между != и <= - C++
Здравствуйте! Писал программу с использованием QuickSort и заинтересовала такая вещь: void quickSort(int arr, int left, int right) { ...

Разница между С и С++ - C++
Если не брать во внимание объекты и классы, то разница состоит только лишь в cin, cout и директивах?

Разница между T **a и T *a[const_size] - C++
T c_a; // Здесь тип c_a это T(*) T **d_a = (T**) malloc(sizeof(T) * size); for (i = 0; i &lt; size; ++i) { d_a = (T*)...

6
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
04.06.2013, 21:02 #2
Цитата Сообщение от muryj Посмотреть сообщение
но препод придрался к записи "(0)"
лолс, что это за препод такой, раз не знает альтернативный вариант инициализации.
0
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
04.06.2013, 21:06  [ТС] #3
Не будем называть имена
А можете источник дать?
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
04.06.2013, 21:15 #4
в данном случае разницы никакой потому, что int - это простой тип который не обладает нетривиальным конструктором.
C++
1
2
int i = 0;//1
int i(0);//2
Что в случае 1, что в 2 создается целочисленный литерал и потом i инициализируется им. В современным компиляторах происходит оптимизация, которая сходу создает инициализированный int.

Добавлено через 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
#include <iostream>
 
using std::cout;
 
struct Foo
{
    int x;
    Foo(): x(0) { cout << "Default constructor\n"; }
    explicit Foo(int a): x(a) { cout << "Simple constructor\n"; }
    Foo(const Foo &obj): x(obj.x) { cout << "Copy\n"; }
    Foo& operator = (const Foo &obj)
    {
        if (this == &obj) return *this;
        x = obj.x;
        cout << "operator =\n";
        return *this;
    }
};
 
int main()
{
    Foo x1 = Foo(5);//с оптимизацией компилятора: simple, без - simple->copy
    Foo x2(5); //simple
    return 0;
}
1
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
04.06.2013, 21:22 #5
Сия фича называется explicit type conversion. Преподу можешь показать ссылку на msdn: http://msdn.microsoft.com/ru-ru/libr...v=vs.100).aspx
1
Kastaneda
Нарушитель
Эксперт С++
4676 / 2880 / 234
Регистрация: 12.12.2009
Сообщений: 7,314
Записей в блоге: 2
Завершенные тесты: 1
04.06.2013, 21:43 #6
Цитата Сообщение от tony_pershin Посмотреть сообщение
Сия фича называется explicit type conversion. Преподу можешь показать ссылку на msdn: http://msdn.microsoft.com/ru-ru/libr...v=vs.100).aspx
Это не совсем то. По ссылке другая допустимая форма записи привидения типов. Т.е. язык допускает
C++
1
std::cout << (int)'a';
а так же
C++
1
std::cout << int('a');
вот.
А в примере ТС'а немного другое - это форма инициализации скалярных типов с помощью синтаксиса вызова конструктора. Б.Эккель в книге "Философия С++" называет это "псевдоконструктор". Но термин спорный, т.к. никакого конструктора не вызывается, даже "псевдо".
Могу предположить, что этот "псевдоконструктор" понадобился в языке например для таких вещей
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template <class T>
class Foo
{
public:
    Foo() 
    {
        bar = T();
    }
 
    T bar;
};
...
Foo<int> baz;
хотя может у этого есть другое объяснение, а может его и вовсе нет, добавили просто для синтаксической совместимости с пользовательскими типами.

Добавлено через 1 минуту
Цитата Сообщение от Kastaneda Посмотреть сообщение
По ссылке другая допустимая форма записи привидения типов.
там же даже написано
Explicit type conversions can also be specified using the "cast" syntax. The previous example, rewritten using the cast syntax, is:
C++
1
d = (float)i;
2
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
04.06.2013, 21:47 #7
Kastaneda, интересная штука, не знал про это, спасибо.
1
04.06.2013, 21:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 21:47
Привет! Вот еще темы с ответами:

Разница между DEV и VS - C++
Подскажите пожалуйста в чем проблема, писал задания на DEV C++, теперь начал работать на VS, но они не работают там.

вчем разница между с++ и ++с - C++
Не как него могу понять в чем разница между с++ и ++с ? с - счетчик. просто пример: int main() { int c = 0; // счетчик int k; ...

В чем разница между С и С++ - C++
Возник вопрос в чем жи разница между С и С++ кроме того, что в С++ есть классы а в С их нету ?

В чем разница между X x; и X x()? - C++
Корректный ли этот ответ?


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

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

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