1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
1

Указатели

10.10.2013, 21:34. Показов 567. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Что делает следующий фрагмент кода? В чем состоит логическая ошибка? (Отметим, что операция индексирования ([]) применена к указателю pia правильно.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main()
{
    int *adress;
    int *pi = new int(10);
    int *pia = new int[10];
    
    while(*pi < 10) {
              pia[*pi] = *pi;
              *pi = *pi + 1;
              }
              delete pi;
              delete[] pia;
    
    system("pause >> void");
    
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2013, 21:34
Ответы с готовыми решениями:

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно....

Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей?
Доброго времени суток! Задался теоретическим вопросом. Читал пример из книги Лафоре...

Через указатели на указатели посчитать сумму двух чисел и записать в третье
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать...

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

13
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
10.10.2013, 21:55 2
Выход за пределы массива в 11 строке.
0
120 / 120 / 47
Регистрация: 29.03.2013
Сообщений: 237
10.10.2013, 21:58 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    int *adress;
    int *pi = new int(0);
    int *pia = new int[10];  
    while(*pi < 10) {
              pia[*pi] = *pi;
              *pi = *pi + 1;
              }
    delete pi;
    delete[] pia;
    system("pause >> void");
    
    return 0;
}
Инициализация элементов динамического массива с помощью указателя на переменную, насколько я понял
1
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 21:59 4
Да где ж вы все берете эту хрень из 17-й строки!?
Ничего не делает. Цикл не выполняется.
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
10.10.2013, 22:00  [ТС] 5
Цитата Сообщение от scenotaph Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    int *adress;
    int *pi = new int(0);
    int *pia = new int[10];  
    while(*pi < 10) {
              pia[*pi] = *pi;
              *pi = *pi + 1;
              }
    delete pi;
    delete[] pia;
    system("pause >> void");
    
    return 0;
}
Инициализация элементов динамического массива с помощью указателя на переменную, насколько я понял
Это задачка из книжки
0
120 / 120 / 47
Регистрация: 29.03.2013
Сообщений: 237
10.10.2013, 22:01 6
castaway, может 15-ой? Я понятия не имею, просто копипаст кода автора

у автора в 17-ой, да.
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
10.10.2013, 22:04  [ТС] 7
Цитата Сообщение от castaway Посмотреть сообщение
Да где ж вы все берете эту хрень из 17-й строки!?
Иниаче нельзя будет увидеть результат (Dev C++)

Добавлено через 1 минуту
Цитата Сообщение от Fyret Посмотреть сообщение
Выход за пределы массива в 11 строке.
Нет не может массив же четко определен.

Добавлено через 1 минуту
Цитата Сообщение от castaway Посмотреть сообщение
Да где ж вы все берете эту хрень из 17-й строки!?
Ничего не делает. Цикл не выполняется.
Почему не выполняется
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 22:07 8
Потому что *pi == 10, а цикл работает при условии что *pi < 10
Кто вам сказал такую чушь про 17-ю строку?
0
120 / 120 / 47
Регистрация: 29.03.2013
Сообщений: 237
10.10.2013, 22:08 9
int *pi = new int(10);
...
while(*pi < 10) { // *pi == 10, вот и не выполнится
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
10.10.2013, 22:12  [ТС] 10
Цитата Сообщение от castaway Посмотреть сообщение
Потому что *pi == 10, а цикл работает при условии что *pi < 10
Кто вам сказал такую чушь про 17-ю строку?
На Youtube от какого-то там непонятного.(У меня проблема была после компиляции программы быстро закрывалась)

Добавлено через 2 минуты
Цитата Сообщение от scenotaph Посмотреть сообщение
int *pi = new int(10);
...
while(*pi < 10) { // *pi == 10, вот и не выполнится
Вы, наверное, забыли что индексация в массиве начинается с нуля?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 22:14 11
Будь добр, найди для меня ссылку.

Добавлено через 55 секунд
Я не могу такое забыть. Оно мне по ночам сниться. Тем более pi - это не массив.
1
120 / 120 / 47
Регистрация: 29.03.2013
Сообщений: 237
10.10.2013, 22:17 12
JaySeven,
В вашем примере с ошибкой, переменная *pi инициализируется десяткой
int *pi = new int(10); //указатель на pi, *pi = 10 - интовская переменная
int *pia = new int[10]; //массив pia на 10 элементов
Соотвественно цикл не выполнится, так как *pi = 10
1
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
10.10.2013, 22:24  [ТС] 13
Цитата Сообщение от castaway Посмотреть сообщение
Будь добр, найди для меня ссылку.

Добавлено через 55 секунд
Я не могу такое забыть. Оно мне по ночам сниться. Тем более pi - это не массив.
http://www.youtube.com/watch?v=wpuhOZHFUoc
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
10.10.2013, 22:46 14
JaySeven, 2 пост
0
10.10.2013, 22:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2013, 22:46
Помогаю со студенческими работами здесь

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов?
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;//...

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной
Мой код. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include&lt;iomanip&gt; using namespace std; ...

Указатели на указатели: для чего они могут понадобятся?
Изучаю C++, дошёл до указателей на указатели. Там пишут что эта тема не обязательна. Для чего они...

Указатели на указатели, как правильно разыменовать, где ошибка?
1)Есть класс: Shape - абстрактный; у него есть классы наследники: Circle, Triangle. 2)Eсть...

Зачем нужны все эти указатели (или не указатели)
Зачем надо DWORD, HANDLE, LPVOID?

Отсортировать массив и вывести на экран (массивы и указатели на указатели)
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s- результат сессии F...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru