5 / 5 / 1
Регистрация: 10.07.2017
Сообщений: 56

Ошибка в коде или чему учат в школе

15.07.2019, 12:18. Показов 4655. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго дня!
Не пинайте сильно. Только начал изучать С++ и наткнулся на пример из учебного пособия одного из крупных ВУЗов:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char *s;
register int t;
s = malloc(80);
if (!s) {
printf("Память выделена не была.\n");
return 1;
}
gets(s);
for(t=strlen(s)-1; t>=0; t--) printf("%c", s[t]);
free(s);
return 0;
}
Вот только компилятор затыкается вот тут: s = malloc(80); -со словами: значение типа "void *" нельзя присвоить сущности типа "char *"
Это я что-то не так делаю или нужно сказать спасибо авторам пособия?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.07.2019, 12:18
Ответы с готовыми решениями:

Учат в школе, учат в школе...
Кхм, был глубоко поражен степенью дебилизации нынешней молодежи: Не ту страну назвали Гондурасом. Посмотрел тесты, которые предлагает...

чему нас учат в институте %)
тут такая вот ситуация нашел пару ошибок в одной из предоставленных задач и их решений в своей методичке по С++, а именно:#include...

Ошибка в IIS 7 или в коде?
Добрый день! Создаю два связанных @DropDownListFor. В зависимости от выбранной категории формируется список разделов. Модель данных...

50
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
15.07.2019, 15:02
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Termit779 Посмотреть сообщение
О боже, вы на проц посмотрите. Он на одном только приведении типа пачками начнет запрашивать.
Именно. Поэтому "подсказывать" компилятору никакого смысла нет. Использование register оправдано разве что в самом низкоуровневом коде, когда действительно можно разместить переменную в регистре. И то нужно это чуть чаще, чем никогда.
2
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
15.07.2019, 15:34
Termit779, привыкайте. Все всегда кого-то бесят - вы не исключение.
1
5 / 5 / 1
Регистрация: 10.07.2017
Сообщений: 56
16.07.2019, 04:30  [ТС]
Цитата Сообщение от Termit779 Посмотреть сообщение
Боюсь не хватит. Ты пойми, програм это не шутка. Ты сам как думаешь? Мама научила ? или в тебе есть склонность не повторять шаблоны?
Разрешите поинтересоваться, Вы какого года рождения?
Хотя... На личности переходить не стоит, я думаю. Это никого никогда еще не приукрасило.
Я понимаю многое, и поступил в ВУЗ не просто так.
Изучение только начал, о чем и написал в самом начале. Но ВУЗовские методички-это кошмар. По теории вероятности находил ошибки, в дискретной математике ошибки. Сюда написал только как крик души.


Цитата Сообщение от GbaLog- Посмотреть сообщение
лучше посоветую человеку нашу тему по литературе: Литература C++
Вот за это жирный плюс и моя благодарность!
Начну изучение.

Цитата Сообщение от Croessmah Посмотреть сообщение
Пособие по C?
Пособие по "СТРУКТУРЫ И АЛГОРИТМЫ ОБРАБОТКИ ДАННЫХ В ЭВМ"

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Либо компилируете Си-шный код плюсовым компилятором.
Именно так. И Вам большое спасибо.
2
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
16.07.2019, 10:30
Цитата Сообщение от Tanatholog Посмотреть сообщение
По теории вероятности находил ошибки, в дискретной математике ошибки. Сюда написал только как крик души.
Надеюсь, такие же, как и тут, то есть нулевые. Потому что код из примера вполне рабочий. Могло быть и лучше, но что-то улучшить можно всегда.
0
5 / 5 / 1
Регистрация: 10.07.2017
Сообщений: 56
16.07.2019, 10:52  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Надеюсь, такие же, как и тут, то есть нулевые. Потому что код из примера вполне рабочий. Могло быть и лучше, но что-то улучшить можно всегда.
Жаль Вас расстраивать, но нет. Там были ошибки в экзаменационных заданиях. Если порыться, то можно найти переписку с описанием ошибок и подтверждением со стороны ВУЗа. Но у меня есть более интересные занятия. Например, изучение С.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
16.07.2019, 12:49
Цитата Сообщение от Tanatholog Посмотреть сообщение
Именно так.
То есть Вы компилируете код C компилятором C++, а виновато в этом пособие?
С таким же успехом можно код C++ собирать javac'ом и искренне удивляться ошибкам.
Как правило, в любой книге или пособии указывается как и что собирать, либо об этом рассказывают на лекциях.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
16.07.2019, 19:33
Цитата Сообщение от Tanatholog Посмотреть сообщение
Пособие по "СТРУКТУРЫ И АЛГОРИТМЫ ОБРАБОТКИ ДАННЫХ В ЭВМ"
Берите Дональда Кнута, "Искусство Программирования". Этакий комбайн от образования - и алгоритмы разъясняет, и сопутствующий матан разжевывает. Матан можно пролистать, если уже знаете.
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
16.07.2019, 20:05
Цитата Сообщение от Renji Посмотреть сообщение
Берите Дональда Кнута, "Искусство Программирования".
Никто в здравом уме не станет использовать «Искусство программирования» в качестве обучающего материала. Так что, Вы дали плохой совет.
2
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
16.07.2019, 20:13
Цитата Сообщение от Eanmos Посмотреть сообщение
Никто в здравом уме не станет использовать «Искусство программирования» в качестве обучающего материала.
Почему нет? Разумеется, никакой конкретный язык там не изучается, но теоретическая база дается отлично.
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
16.07.2019, 20:26
Цитата Сообщение от Renji Посмотреть сообщение
Почему нет? Разумеется, никакой конкретный язык там не изучается, но теоретическая база дается отлично.
Да дело не в отсутствии конкретного языка (MIX не считается), а в исключительно высокой академичности изложения и глубине рассматривания различных вопросов.

Недаром на обложке одного из изданий приведена цитата Билла Гейтса: «Если вы считаете себя действительно хорошим программистом…, прочитайте „Искусство программирования“ (Кнута)… Если вы сможете прочесть весь этот труд, то вам определённо следует отправить мне резюме».
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
16.07.2019, 20:43
Цитата Сообщение от Eanmos Посмотреть сообщение
Да дело не в отсутствии конкретного языка (MIX не считается), а в исключительно высокой академичности изложения и глубине рассматривания различных вопросов.
"Книга рассчитана на широкий круг читателей - от начинающих студентов до программистов-профессионалов" (c) введение ко второму тому.

Да, на глубину изложения материала там и правда грех жаловаться. Но все разжевано до уровня понятного школьнику. Главное, читать вдумчиво. Конечно, если время поджимает, лучше взять более простое пособие. Но чтоб основательно разобраться, Кнут - самое то.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
16.07.2019, 21:23
Цитата Сообщение от Eanmos Посмотреть сообщение
Никто в здравом уме не станет использовать «Искусство программирования» в качестве обучающего материала. Так что, Вы дали плохой совет.
Как-то так
- Сбацай чё-нибудь (Шарапов играет этюд Шопена).
- Это и я так могу.
- А чё же сыграть-то?
- Мурку (Шарапов играет Мурку, подобревший Промокашка напевает куплет).
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
16.07.2019, 21:50
Цитата Сообщение от Renji Посмотреть сообщение
Да, на глубину изложения материала там и правда грех жаловаться. Но все разжевано до уровня понятного школьнику. Главное, читать вдумчиво. Конечно, если время поджимает, лучше взять более простое пособие. Но чтоб основательно разобраться, Кнут - самое то.
Вот пара цитат об «Искусстве программирования»:
«I know a software engineer that bought the books. They sit on his shelf at home. He says he reads them, but he doesn’t understand them. I honestly think that people have them on their shelf more as a trophy than a reference.» — Bill Callahan, former Software Engineer (1987-2015)
«TAOP is a reference. One does not read it as one would a novel. One does not even necessarily read it as a classroom text.» — Harvey T. Durstinger
Я снова повторю, что этот труд не предназначен для обучения вообще, а студентов так и тем более! Не понимаю, где вы увидели «разжеванность до уровня, понятного школьнику». Кнут писал (и пишет) этот труд на протяжении 51 (!) года. Как думаете, сколько потребуется времени, чтобы, как вы говорите, «основательно разобраться»?

«Искусство программирования» — это великий труд, но далеко не учебник.

oleg-m1973, не совсем понял, что вы имели в виду.
1
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
16.07.2019, 21:56
Цитата Сообщение от Eanmos Посмотреть сообщение
«Искусство программирования» — это великий труд, но далеко не учебник.
oleg-m1973, не совсем понял, что вы имели в виду.
Вообще, это учебник. Для студентов. Планка просто упала.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
16.07.2019, 22:14
Цитата Сообщение от Eanmos Посмотреть сообщение
Не понимаю, где вы увидели «разжеванность до уровня, понятного школьнику».
Да вот еще раз открыл главу "Случайные числа", еще раз и увидел. Никакого матана школьникам недоступного там нет. Или давайте цитатку чего там такого неподъемного. При условии что читать по порядку, а не пролистывать.
Цитата Сообщение от Eanmos Посмотреть сообщение
Вот пара цитат об «Искусстве программирования»:
"Книгу могут изучать и школьники старших классов, знакомые с основами программирования" (c) все то же предисловие. Своим глазам и предисловию я верю как-то больше.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
16.07.2019, 22:20
Цитата Сообщение от Renji Посмотреть сообщение
Или давайте цитатку чего там такого неподъемного.
Кликните здесь для просмотра всего текста
0
5 / 5 / 1
Регистрация: 10.07.2017
Сообщений: 56
17.07.2019, 04:21  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
То есть Вы компилируете код C компилятором C++, а виновато в этом пособие?
С таким же успехом можно код C++ собирать javac'ом и искренне удивляться ошибкам.
Вы неправильно меня поняли. Я не специально. Так получилось. В этом и заключалась главная моя ошибка. Я недосмотрел и создал C++ проект в CodeBlocks вместо С. И парился, почему ничего не работает =)
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,312
17.07.2019, 05:36
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Использование register оправдано разве что в самом низкоуровневом коде, когда действительно можно разместить переменную в регистре. И то нужно это чуть чаще, чем никогда.
Никакой компилятор уже давно не будет размещать переменную в регистре в ответ на ключевое слово register. Ключевое слово в языке С имеет лишь одно назначение - запретить применять к объекту оператор взятия адреса. Больше оно не делает ничего.
1
5 / 5 / 1
Регистрация: 10.07.2017
Сообщений: 56
17.07.2019, 10:23  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Никакой компилятор уже давно не будет размещать переменную в регистре в ответ на ключевое слово register.
Встречный вопрос:
А как тогда использовать методический материал?
Может, посоветуете IDE для новичка? Чтобы можно было и примеры разбирать, ну и с поставленными задачами справляться?

Добавлено через 1 час 40 минут
Отвечу сам себе:
Учись правильно настраивать CodeBlocks!!!
Всем спасибо!
Все корректно работает. Дело, в прокладке между стулом и клавиатурой!

Добавлено через 2 часа 49 минут
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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
 
struct point //структура точка с координатами (x, y)
{
    int x;
    int y;
};
 
struct rect //структура прямоугольник, заданная двумя точками типа struct point
{
    struct point pt1;
    struct point pt2;
};
/* makepoint: формирует точку по компонентам x и y */
struct point makepoint(int х, int у)
{
    struct point temp;
    temp.x = х;
    temp.y = у;
    return temp;
}
/* addpoint: сложение двух точек */
struct point addpoint(struct point p1, struct point p2)
{
    p1.x += p2.x;
    p1.y += p2.y;
    return p1;
}
 
/*ptinrect: возвращает 1, если p в r, и 0 в противном случае*/
int ptinrect(struct point p, struct rect r)
{
    return p.x >= r.pt1.x && p.x < r.pt2.x
        && p.y >= r.pt1.y && p.y < r.pt2.y;
}
 
int main()//главная функция программы
{
    setlocale(LC_ALL, "Russian");
    struct rect screen;
    struct point middle;
    struct point t1 = {120, 200};
    struct point t2 = {180, 280};
    struct point t3; 
    int point1;
    screen.pt1 = makepoint(130, 0);
    screen.pt2 = makepoint(200, 300);
    middle = makepoint((screen.pt1.x + screen.pt2.x)/2,(screen.pt1.y + screen.pt2.y)/2);
    printf("Сложение точек t1{%d, %d} и t2{%d, %d}, результат помещается в t3\n", t1.x, t1.y, t2.x, t2.y);
    t3 = addpoint(t1, t2);
    printf("t3{%d, %d}\n\n", t3.x, t3.y);
    printf("Проверка находится ли точка t1{%d, %d} \n в прямоугольнике screen{%d, %d, %d,%d}\n", t1.x, t1.y, screen.pt1.x, screen.pt1.y, screen.pt2.x, screen.pt2.y);
    point1 = ptinrect(t1, screen);
    printf("результат %d\n\n", point1);
    printf("Проверка находится ли точка t2{%d, %d} \n в прямоугольнике screen{%d, %d, %d,%d}\n", t2.x, t2.y, screen.pt1.x, screen.pt1.y, screen.pt2.x, screen.pt2.y);
    point1 = ptinrect(t2, screen);
    printf("результат %d\n\n", point1);
    getch();
    return 0;
}
Запутался со структурами:

||=== Build: Debug in 1 (compiler: GNU GCC Compiler) ===|
|In function 'makepoint':|
|20|error: stray '\365' in program|
|20|error: expected expression before ';' token|
|21|error: stray '\363' in program|
|21|error: expected expression before ';' token|
||In function 'main':|
|43|warning: variable 'middle' set but not used [-Wunused-but-set-variable]|
||=== Build failed: 4 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|

Еще удивляет почему параллельно идет предмет "Программирование"-но там исключительно Паскаль, а СИАОД на С дают...
1
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
17.07.2019, 10:24
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Никакой компилятор уже давно не будет размещать переменную в регистре в ответ на ключевое слово register
gcc прекрасно размещает, можно даже указать конкретный регистр, во встраиваемых системах это даже изредка используется.
Цитата Сообщение от Tanatholog Посмотреть сообщение
Вы неправильно меня поняли. Я не специально. Так получилось. В этом и заключалась главная моя ошибка. Я недосмотрел и создал C++ проект в CodeBlocks вместо С. И парился, почему ничего не работает =)
Речь не о том, что вы перепутали компилятор, с кем не бывает. Речь о том, что вы выдаете это за ошибку методички, которую "героически нашли"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.07.2019, 10:24

Ошибка сервера или в коде
Может ли как-нибудь зависнуть сервер(hostinger) и не брать какую либо информацию? Т.к. час назад перестала работать одна из функций...

Некорректное задание или ошибка в коде
Доброго времени суток! Есть задание (рис. 1) Моя программа: using System; using System.Collections.Generic; using...

Баг stm8s003 или ошибка в коде?
При написании программы под контроллер STM8S003 столкнулся с такой проблемой. Когда я работаю с одним каналом АЦП, то все работает...

Ошибка в коде или в ASP.NET 2?
Недавно столкнулся с ошибкой в ASP.NET2.0 Данные у меня хранятся в одной таблице в рекурсивном виде , (id,parent_id) . Что бы каждый...

К чему относится this в данном коде ?
У меня есть код реализированного шаблонного односвязного списка и данный метод push_back. На 10 строчке используется ключевое слово this....


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

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

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru