0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 59
|
||||||
1 | ||||||
Программа выделяет не совсем то, что надо06.12.2021, 18:35. Показов 556. Ответов 13
Метки нет (Все метки)
Добрый вечер. Нам задали сделать программу, которая выделяет в программе C все заголовки функций. Я программу сделал, но почему-то вместо этого она выделяет совсем другое: не int main() и не void "Название функции"(аргументы) как требуется, а все #include и #define. Пытался исправить по-разному, но не выходит. Можете помочь найти мне ошибку и исправить? Надо до 11 числа сделать.
0
|
06.12.2021, 18:35 | |
Ответы с готовыми решениями:
13
В описании дана программа. Что она делает? Она создает список с полем ключа и полем данных. Что надо сделать? Надо чтобы программа работала бесконечно Программа делает не совсем то, что нужно Программа выдает не совсем то,что требуется, почему? Что делает эта программа? Совсем не могу понять сути её |
Вездепух
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
|
|
06.12.2021, 19:10 | 2 |
В чем смысл таких циклов в вашем коде (у вас их много)? Зачем вы много раз в цикле делаете одно и то же сравнение?
Зачем проверяется условие !feof(fpin) ?
0
|
0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 59
|
|
06.12.2021, 19:18 [ТС] | 3 |
Данные циклы по моей теории проверяют строку на то, является ли она заголовком. И если да, то она должна окраситься в голубой цвет. Если нет, то окраска должна вернуться к исходной.
!feop(fpin) - нас так учат проверять файл, пока он не будет просканирован полностью. Добавлено через 36 секунд TheCalligrapher, Данные циклы по моей теории проверяют строку на то, является ли она заголовком. И если да, то она должна окраситься в голубой цвет. Если нет, то окраска должна вернуться к исходной. !feop(fpin) - нас так учат проверять файл, пока он не будет просканирован полностью.
0
|
Вездепух
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
|
||||||
06.12.2021, 19:22 | 4 | |||||
Но для того, чтобы "проверить строку", нужно, наверное, проверить все ее символы, один за другим, так? А ваши циклы проверяют один и тот же символ снова и снова. Зачем? Почему?
Не знаю, кто вас этому учил, но в вашей программе вообще не должно быть использования функции feof вообще. Одна не предназначена для этого.Проверку "пока он не будет просканирован полностью" вы уже и так сделали своей проверкой
feof .
0
|
0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 59
|
|
06.12.2021, 19:30 [ТС] | 5 |
TheCalligrapher,
1)Как можно исправить проверку строки, чтоб она корректно определяла заголовок функции и выделяла именно его? 2)Как можно заменить feof?
0
|
Вездепух
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
|
|||||||||||
06.12.2021, 19:35 | 6 | ||||||||||
Ее нужно выкинуть вообще. Ваш главный цикл должен выглядеть примерно так
0
|
0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 59
|
|
06.12.2021, 19:40 [ТС] | 7 |
TheCalligrapher, по условию нет никаких запретов. Просто когда я делал эту часть, то это единственное, что пришло мне в голову + не особо хочется с динамическими массивами связываться.
0
|
0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 59
|
||||||
09.12.2021, 13:52 [ТС] | 8 | |||||
Кароче, я разобрался. Оказалось, я сглупил и не те указатели поставил, из-за чего красился #include<>, а не int main() с void abc(аргументы). Теперь всё работает как надо.
Если кому-то понадобится, держите рабочий код.
0
|
Вездепух
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
|
||||||
09.12.2021, 19:35 | 9 | |||||
???
Одни и те же ошибки. О каком "рабочем коде" может идти речь?
Тот же вопрос относится и ко всем остальным аналогичным циклам.
0
|
0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 59
|
|
09.12.2021, 20:54 [ТС] | 10 |
TheCalligrapher, этот цикл проверяет, является ли содержимое в файле программой на языке Си. Следующие выделяют заголовки функции. Правда, я хотел переписать программу, чтоб она в 1 цикле она фиксировала местоположения начала и конца заголовков, а во 2 уже выводила обработанную информацию. Но всё же этот смог заработать.
Пруфы, что всё работает в файле. Единственный случай, когда не работает, это если первая строчка #define _CRT_SECURE_NO_WARNINGS. Я не знаю операцию, которая проверяет, чтоб только одно из 2 условий выполнялось. Проверка.pdf
0
|
Вездепух
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
|
|
09.12.2021, 21:03 | 11 |
Как он это проверяет? Этот цикл, как я уже говорил выше, 18 раз делает одно и то же сравнение
if (*ptr != *cp) { . Каким образом это сравнение "проверяет, является ли содержимое в файле программой на языке Си"? И зачем его повторять 18 раз?Вам показалось, из-за того, что вы плохо тестировали. Вы просто подобрали пример, на котором "как будто все работает".
0
|
Вездепух
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
|
|
09.12.2021, 21:12 | 12 |
Вот пример работы вашей программы на моем тестовом примере
Код
#vasya+lena=lubov void func(int a[]) { } vereshagin, uhodi s barkasa!!! int main() { return 0; } int vse_tlen; #include <stdio.h> .Почему подсвечены строки, которые не являются заголовками функций? Никакого void в подсвеченных строчках нет.
0
|
0 / 0 / 0
Регистрация: 27.09.2021
Сообщений: 59
|
|
09.12.2021, 21:25 [ТС] | 13 |
TheCalligrapher, тогда предлагайте свой вариант. Да и в дополнение скажу, что преподаватель у нас не дотошный.
0
|
Вездепух
12785 / 6663 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
|
|
09.12.2021, 21:31 | 14 |
Ваш вопрос озаглавлен "Программа выделяет не совсем то, что надо". Как видите, согласно моему примеру, ваша программа по-прежнему "выделяет не совсем то, что надо". Если вашего "не дотошного" преподавателя это устраивает, то тогда откуда вообще возник вопрос?
А вы вообще для кого все это делаете? Для себя - чтобы чему-то научиться? Или для преподавателя - чтобы отстал? Я вам указал на конкретное место в коде, которое приводит к этим ошибкам. Дальше дело за вами.
0
|
09.12.2021, 21:31 | |
09.12.2021, 21:31 | |
Помогаю со студенческими работами здесь
14
Есть программа по кодированию и декодированию методом Хаффмана с помощью дерева, на я не совсем понимаю что здесь к чему! 1 курс. Тема: одномерные массивы. Программа работает, но не совсем точно выполняет то, что требуется в задании. Не знаю, как исправить код Не совсем работает как надо Ведется набор цифр и надо чтобы программа из него сама сообразило число. То есть что бы программа сама раскидывала их по разрядам. Программа не делает то, что надо. Почему? надо получить равнобед.треугольник у меня код есть но там надо изменить что то,я не могу понять что Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |