-22

Решение уравнения на языке Си.Ошибка на стадии компиляции

Решение уравнения на языке Си.Ошибка на стадии компиляции Си, Программирование, Код, C++
Решение уравнения на языке Си.Ошибка на стадии компиляции Си, Программирование, Код, C++

Ошибка 26 строки

error: 'Y' undeclared (first use in this function)|

each undeclared identifier is reported only once for each function it appears in|


Как исправить ошибку?

Решение уравнения на языке Си.Ошибка на стадии компиляции Си, Программирование, Код, C++

Дубликаты не найдены

+8

А у вас Y заглавная, а задекларирована строчная. Замените заглавную Y на строчную везде, начиная с 26 строки, уйдет и ошибка и варнинги

+5

А чё, уже и исходники картинками модно выкладывать???

раскрыть ветку 1
+2

Для пикабу мб даже норм. Отступы жует и подсветки синтаксиса нет

+2

Запусти автоисправление: Нажми быстро подряд комбинации
Ctrl-A

Ctrl-X

Ctrl-S

+1

ТС, ты о https://pastebin.com/ когда-нибудь слышал? Посмотрел скрины и вообще о...л, ТС, ты читать умеешь? Тебе компилятор человеческим языком красным по белому написал что не так...

+1

А в чём саркальная суть return y?

+1

Для таких вещей есть cyberforum

раскрыть ветку 2
+4

Там вычислят, найдут и побьют если так выложить.

раскрыть ветку 1
-2

Здесь. А вот там таких любят как раз. Я не выдержал там в разделах своих языков дольше года, стал всех нахуй посылать таких и самозабанился, ибо нахуй такой форум(ни на один мой вопрос по сути языков не ответили тамошние, но до этого по API прилично помогли, потому сидел ещё).

-6

Точно,моя невнимательность...

Спасибо

ещё комментарий
Похожие посты
42

Типобезопасные контейнеры в GNU C11 без кодогенерации

Всем привет!
Я решаю проблему про которую никто не знает, на языке, на котором никто не пишет. Это пост про язык Си.

Я сам не пишу на Си уже очень давно. Профессионально последние 7 лет только на C++ и C#. Но Си очень привлекает своей простотой. Но отталкивает отсутствием множества удобных штук.

Есть интересное открытие, которым я хотел бы поделиться, но не знаю с кем, так как мало кто пишет на Си и вообще задумывается о нем. Поэтому напишу тут, вдруг кому-то будет интересно. Это не готовое решение, а лишь идея, которая пришла в голову вчера утром и обросла деталями в течении дня.


Не хочу чтобы идея пылилась, хочу скорее от нее освободиться и вернуться к работе. Поэтому в посте мало деталей, пожалуйста, посмотрите пример, там вроде все довольно понятно.


Вот сразу ссылка на пример в Wandbox - https://wandbox.org/permlink/pOwkHRfWyipp8P89

1. Проблема
Если вы хотите универсальные контейнера на Си, можно пойти двумя путями:
1. Макросы, которые работают почти как шаблоны в C++, генерировать функции для доступа к контейнерам для тех типов, которые вы хотите использовать. Вот пример: https://github.com/stefanct/sglib
Это быстро, но требует объявить все используемые типы в одном месте, что усложняет разделение проекта на модули. Поправьте, если я не прав.
2. Типы данных, хранящие всю инфорацию внутри как это сделано в Glib  https://developer.gnome.org/glib/2.66/ в данном случае, невозможно организовать типобезопасность, повсеместно используюется void* . Меняешь тип контейнера и не знаешь, что после этого отвалится. Моя цель - решить именно этот класс проблем.


2. Как выглядит решение
Так вот, слыхали что существует C11? Это почти как C++11, только C11.


Так вот, там появилось такое ключевое слово _Generic, которое позволяет выбрать функцию, в зависимости от типа и позволяет сделать какую ни какую перегрузку функций (которой нет в Си из коробки)

Оказалось, что используя _Generic  + typeof() из GNU + указатели на функции можно сделать типобезопасные контейнеры прямо в Си! Эти контейнеры не используют кодогенерацию, однако так же удобны в использовании (хотя будут чуть медленней работать, но в большинстве случаев удобство важнее)


Вот короткий пример создания вектора:

ABVECTOR(int) numbers = CREATE_ABVECTOR(int);
for (int i = 0; i < 20; i++)
*PUSH( numbers) = i; // обратите внимание, тип известен!

В данном примере ABVECTOR(int) это аналог std::vector<int>

Если поменять тип контейнера, или тип переменной хоть в одном месте, вы получите ошибку компиляции. А это ровно то, чего я хочу!

Другой пример, передача контейнера в качестве аргумента в функцию:

void printValues(ABVECTOR(float) numbers)
{
for (float* iter = BEGIN(numbers); iter != END(numbers); iter = NEXT(numbers, iter))
printf("Val: %f\n", *iter);
for (int i = 0; i < LENGTH(numbers); i++)
printf("Val: %f\n", *GET(numbers, i));
}

Если передать в функцию неправильный тип контейнера, например List, вместо Vector - будет ошибка. Если тип элемента контейнера будет отличаться - то же ошибка.

3. Как этого добиться?

1. Использовать указатель на функцию чтобы хранить сразу два типа, тип контейнера + тип элемента. Например int (*) (ABVector*)

2. Использовать typeof, чтобы достать тип элемента контейнера typeof( X(0) ) - получение типа результата вызова функции

3. Использовать _Generic, чтобы проверить тип контейнера

_Generic(( X ), typeof(X(0)) (*) (ABVector*) : __my_container_func__ )(X)

На этом пожалуй все ) Спасибо за внимание!

Не забудьте потыкать пример в Wandbox - https://wandbox.org/permlink/pOwkHRfWyipp8P89

Показать полностью
257

Ответ на пост «Коротко о моих программах» 

Вспомнился похожий косяк, неожиданно вылезший)


В студенческие годы был подключен к локальной сети, и на локальном портале висел прогноз погоды, кроме того, админ даже сделал вариант запроса, который просто отдавал цифру температуры.


И вот, увидев всё это, решил я на новогодних каникулах наваять термометр на рабочий стол. Это была простейшая прога на delphi - парсить ничего не надо, просто забирай запросом цифру; я нашел красивый png градусника, а шкалу сделал прогрессбаром(который менял цвет с синего(-) на красный(+)). И висел этот градусник тихонько в углу экрана, показывая температуру в городе. Висел до весны, а потом просто упал с ошибкой.

Да, где-то у меня в проге было деление, и как только температура на улице поднялась до нуля - всё свалилось)

1211

Мотивация роста программистов

Мотивация роста программистов Программирование, C++, Java, Зарплата, Квалификация

Есть у меня знакомый, который является отличным программистом на языке программирования C++. У него в конторе руководство придумало следующую схему мотивации программистов. Вывесили таблицу с фамилиями сотрудников и каждый должен был проставить напротив себя в каждом столбике оценку своих знаний различных языков программирования.


Надо отметить, что мой знакомый большой противник растекания мысью по древу и попытки изучить все языки программирования. Поэтому в знак протеста он не стеснясь проставил везде себе самый низкий балл, кроме, конечно же своего любимого Си++. И это с учетом того, что оценивать знания предлагалось самостоятельно без каких либо тестов. Но всем остальным карта поперла. В ход под хорошие оценки пошли все языки программирования с любым опытом начиная от написания HelloWorld. Особенно начали оценивать себя по модному Java. Ведь вполне вероятно было, что в будущем это скажется на уровне зарплаты.


Через время результаты оценки были зафиксированы руководством.И...

Мотивация роста программистов Программирование, C++, Java, Зарплата, Квалификация

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

Показать полностью 1
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: