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

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

Войти
Регистрация
Восстановить пароль
 
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
#1

Определение переменной внутри цикла - C++

02.10.2012, 17:22. Просмотров 587. Ответов 9
Метки нет (Все метки)

Кусочек кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iomanip>
#include <fstream> 
 
int main() 
{ 
    const int size = 3; 
    int j = 0;
    int i = 0;
 
    /*int** matrix = new int*[size];  // здесь ошибка 
    for ( i = 0; i < size; i++) 
        matrix[i] = new int[size];*/
    int **matrix = new int *[size]; // это верно
      for (int i=0;i<size;i++)
        matrix[i]= new int [size];
ясно, что ошибка из за переменной i, но как-то я этот момент упустил в процессе обучения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 17:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определение переменной внутри цикла (C++):

Объявление переменной внутри цикла while - C++
Доброго времени суток, форумчане. Расскажите нубу, что происходит при объявлении объявленной переменной. Знаю, звучит глупо, посему...

Применение цикла if для определения простых чисел. If внутри цикла for - C++
Доброго времени суток, подскажите пожалуйста, в чем тут дело. С кодом все хорошо, все работает, просто я пытаюсь докопаться до сути и...

Цикл внутри цикла - C++
Есть вопрос, можно ли задать цикл внутри цикла? Вот в этой программе чтоб j прошёл условие while(j&lt;9) и выполнился цикл while (i&lt;9) ...

Остановиться внутри цикла - C++
Всем доброго времени суток,такая проблема, у меня задача по имитационному моделированию: FM–приёмник Радиовещание на...

Локальная переменная внутри цикла - C++
Добрый день ! При вызове функции void println (int i, int ident) { cout &lt;&lt; i; if (ident) ...

Таймер ожидания внутри цикла - C++
Ребят, задача не из простых, т.к. в тряске поисковиков я не нашёл, либо не понял как работают &quot;их&quot; методы. Нужна высокая точность...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
programmer_11
94 / 69 / 5
Регистрация: 08.10.2011
Сообщений: 130
02.10.2012, 17:28 #2
Вы в 15 строке переопределили переменную i.

Надо так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iomanip>
#include <fstream> 
 
int main() 
{ 
    const int size = 3; 
    int j = 0;
    int i = 0;
 
    /*int** matrix = new int*[size];   
    for ( i = 0; i < size; i++) 
        matrix[i] = new int[size];*/
    int **matrix = new int *[size]; // это верно
      for (i=0;i<size;i++) 
        matrix[i]= new int [size];
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.10.2012, 17:29  [ТС] #3
Цитата Сообщение от programmer_11 Посмотреть сообщение
Вы в 15 строке переопределили переменную i.
это я понял. Почему так нельзя?
programmer_11
94 / 69 / 5
Регистрация: 08.10.2011
Сообщений: 130
02.10.2012, 17:34 #4
Переменная i локальна к функции main(). А переменную с имемем i только можно определить в каком-то блоке в функции main().

C++
1
2
3
4
5
6
7
int main()
{
int i=0;
{
int i=6;
}
}
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
02.10.2012, 17:40 #5
David Sylva, не вижу ошибки. Предупреждение может быть и будет, но не ошибка
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.10.2012, 17:42  [ТС] #6
Цитата Сообщение от I.M. Посмотреть сообщение
David Sylva, не вижу ошибки
Компилируется нормально. При запуске косяк.
programmer_11
94 / 69 / 5
Регистрация: 08.10.2011
Сообщений: 130
02.10.2012, 17:44 #7
Наверное David Sylva работает в Visual c++ 6, кототрый не поддерживает новых стандартов, согласно которым переменная, обявленная в заголовке цикла, является локальной к циклу.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.10.2012, 17:53  [ТС] #8
Цитата Сообщение от programmer_11 Посмотреть сообщение
Наверное David Sylva работает в Visual c++ 6, кототрый не поддерживает новых стандартов, согласно которым переменная, обявленная в заголовке цикла, является локальной к циклу.
Нет у меня Студия 10

Добавлено через 5 минут
Ладно осознал, что спросил глупость. Просто думал, что здесь есть более глубокий смысл, чем область видимости.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
02.10.2012, 18:10 #9
С Вашими библиотеками (для интереса) на 2010Express компилируется и работает:
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
#include <iostream>
#include <iomanip>
#include <fstream> 
int main() 
{ 
    const int size = 3; 
    int j = 0;
    int i = 0;
     int** matrix = new int*[size];  // здесь НЕ ошибка 
    for ( i = 0; i < size; i++) 
        matrix[i] = new int[size];
   /* int **matrix = new int *[size]; // это верно
      for (int i=0;i<size;i++)
        matrix[i]= new int [size]; */
for ( i = 0; i < size; i++) {
for ( j = 0; j < size; j++) {
        matrix[i][j] = i+j;
std::cout<<"\ni= "<<i<<" "<<matrix[i][j];
}
}
std::cout<<"\n";
std::system("pause");
      return 0;
}
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
02.10.2012, 18:19  [ТС] #10
Правильно всё работает. Переклинило не много.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2012, 18:19
Привет! Вот еще темы с ответами:

Рандомные значения внутри цикла - C++
Доброго всем дня! Подскажите, возможно ли на каждом прохождении цикла получить различные рандомные значения? Т. е. &quot;на выходе&quot; следующего...

Не увеличивается значение внутри цикла - C++
Простая программа. Выводить должна значения функции y= x^2 на промежутке c шагом 0.4 на выходе имею следующее: F(4) = 16 F(4)...

Функции внутри цикла не выполняются - C++
Здравствуйте! Почему-то не работают функции внутри цикла (конечное значение выходит такое, будто изменений переменных внутри цикла не...

Delete внутри тела цикла while(0) - C++
Всем привет. Нашел в недрах cocos2dx такую конструкцию: #define CC_SAFE_DELETE(p) do { delete (p); (p) = nullptr; } while(0) ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.10.2012, 18:19
Ответ Создать тему
Опции темы

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