Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / где тут может быть ошибка или недочет. помогите разобраться / 9 сообщений из 9, страница 1 из 1
24.06.2020, 13:47
    #39972715
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где тут может быть ошибка или недочет. помогите разобраться
Помогите разобраться где тут может быть ошибка или недочет. Это Керриган и Пайк "практика программирования"
в одном из упражнений требуют найти ошибку или недочет.
Я тут ничего плохого в коде не чувствую.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int read(int* ip) {
    scanf("%d", ip);
    return *ip;
}
.........
insert(&graph[vert], read(&val), read(&ch));

}



что делает функция insert умалчивается . поэтому я вместо неё написал свою функцию div. Полный код я привожу :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int read(int* ip) {
    scanf("%d", ip);
    return *ip;
}
float div(int a, int b) {
    printf("%d %d ", a,b);
    return  a/b;
}

int main()
{ 
    int d=0;
    int d1 = 0;
    int gg = div(read(&d), read(&d1));
    return 0;
}



все выполняется корректно. Не пойму что надо сделать чтобы столкнуть в пропасть первый исходник ?
...
Рейтинг: 0 / 0
24.06.2020, 13:57
    #39972723
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где тут может быть ошибка или недочет. помогите разобраться
read(NULL);
...
Рейтинг: 0 / 0
24.06.2020, 13:57
    #39972724
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где тут может быть ошибка или недочет. помогите разобраться
andron81,

Последовательность вызова функций read() не определена:

Код: plaintext
1.
insert(&graph[vert], read(&val), read(&ch));
...
Рейтинг: 0 / 0
24.06.2020, 14:01
    #39972726
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где тут может быть ошибка или недочет. помогите разобраться
Cerebrum,
справедливо заметил. но не думаю , что это вариант подразумевался. всё же в функции insert фигурируют реальные переменные.
...
Рейтинг: 0 / 0
24.06.2020, 14:22
    #39972738
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где тут может быть ошибка или недочет. помогите разобраться
petrav
andron81,

Последовательность вызова функций read() не определена:

Код: plaintext
1.
insert(&graph[vert], read(&val), read(&ch));


да, думал над этим. я кстати для этого и сделал функцию деления в надежде вызвать конфликт деления на 0. но не удалось, поэтому не понимаю опасности.
какая разница для функции insert(div) какой read выполнится первым. Если она , конечно, не начнет выполнение без отработки какого-то из read, что думаю невозмжно.
не мог бы ты прокомментировать ?
...
Рейтинг: 0 / 0
24.06.2020, 14:29
    #39972746
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где тут может быть ошибка или недочет. помогите разобраться
andron81
petrav
andron81,

Последовательность вызова функций read() не определена:

Код: plaintext
1.
insert(&graph[vert], read(&val), read(&ch));


да, думал над этим. я кстати для этого и сделал функцию деления в надежде вызвать конфликт деления на 0. но не удалось, поэтому не понимаю опасности.
какая разница для функции insert(div) какой read выполнится первым. Если она , конечно, не начнет выполнение без отработки какого-то из read, что думаю невозмжно.
не мог бы ты прокомментировать ?

Что ж тут непонятного? Ты думаешь, что последовательность будет такая:

Код: plaintext
1.
2.
3.
int a = read(&val);
int b = read(&ch);
insert(&graph[vert], a, b);


Поменял компилятор, переключился с Debug на Release, или оптимизатор как-то по другому рассудил. И получилось так:

Код: plaintext
1.
2.
3.
int b = read(&ch);
int a = read(&val);
insert(&graph[vert], a, b);


Ведь эти числа у тебя вводит пользователь. Как же он их введёт если ты не можешь ему сообщить что вводить сначала, а что потом?
...
Рейтинг: 0 / 0
24.06.2020, 14:31
    #39972748
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где тут может быть ошибка или недочет. помогите разобраться
удалил
...
Рейтинг: 0 / 0
24.06.2020, 14:35
    #39972751
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где тут может быть ошибка или недочет. помогите разобраться
petrav

Ведь эти числа у тебя вводит пользователь. Как же он их введёт если ты не можешь ему сообщить что вводить сначала, а что потом?


точняк ! можно закрывать тему
...
Рейтинг: 0 / 0
24.06.2020, 21:31
    #39972928
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
где тут может быть ошибка или недочет. помогите разобраться
Модератор: Закрыто
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / где тут может быть ошибка или недочет. помогите разобраться / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]