Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
5 / 5 / 1
Регистрация: 10.07.2017
Сообщений: 56

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

15.07.2019, 12:18. Показов 4621. Ответов 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
4138 / 2716 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
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
4138 / 2716 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
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,308
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
4138 / 2716 / 433
Регистрация: 09.09.2017
Сообщений: 12,050
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 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru