LINUX.ORG.RU

Избранные сообщения kremator666

Простая программа в С, проблема с while loop и input

Форум — Development

Добрый день!

Пожалуйста, посмотрите небольшую программу. Я новичок, поэтому прошу снисходительности и помощи.

Задание было следующее: предположим, что количество воды, затраченное в течение одной минуты, проведенной под душем, эквивалентно 12 бутылкам воды. Цель программы запросить пользователя ввести количество минут, которые он/она проводит в душе и выдать количество бутылок воды.

Используются допущения: не проверять на положительные - отрицательные числа (правда я знак добавила). Если вводятся числа, то программа выдает количество бутылок. Если вводится слово (например, foo или 123abc), то программа должна снова ожидать ввод данных.

С последним у меня проблема. Если вводится foo или 123abc, то программа выдает 0. То есть с одной стороны, неверные значения не принимаются, но и запрос на новый ввод тоже не происходит. Вот тест:

reject "foo" minutes
   \ expected prompt for input, not exit code of 0 
 rejects "123abc" minutes
   \ expected prompt for input, not exit code of 0
То есть выдает такой результат: foo 0 Пожалуйста, помогите разобраться.
#include <stdio.h>
#include <ctype.h>

#define MAX 5000
#define BOTTLES_PER_MINUTE 12
int minutes[MAX];

void get_minutes(int minutes[]);
int char_to_digit(int minutes[]);

int main(void)
{
    printf("Please, enter the number of minutes\n");
    get_minutes(minutes);
    
    printf("%d\n", (char_to_digit(minutes) * BOTTLES_PER_MINUTE));
    
    return 0;
}
/* get minutes from the user, fill in the array */
void get_minutes(int minutes[])
{
    int i = 0;
    int c;
    
    while (!isspace(c = getchar()))
    {
        if (isalpha(c))
        {
            continue;
        }
        else
        {
            minutes[i] = c;
            i++;
        }
    }
    
    minutes[i] = '\0';
    
}
/*convert input into digits */
int char_to_digit(int minutes[])
{
    int i = 0;
    int n, sign;
    
    sign = (minutes[i] == '-')? -1: 1;
    if (minutes[i] == '-' || minutes[i] == '+')
    {
        i++;
    }
    
    for (n = 0; minutes[i] != '\0'; i++)
    {
        n = 10 * n + (minutes[i] - '0');
    }
    
    return sign * n;
}

Перемещено beastie из general

 , ,

Ducol
()

Swift IDE

Форум — Development

В связи с большим открыванием, хотелось бы иметь IDE или хотя бы какой-то блокнот с кнопкой для запуска/компиляции и автодополнением. Гуглятся какие-то заброшенные плагины для sublime и все. Если есть не-мертвые проекты по созданию плагинов для idea/sublime, могу присоединиться. Даже что-то для vim или emacs подойдет.

 ,

cdshines
()

Записал свое собеседование и смонтировал ролик

Форум — Talks

Всем привет!

Завтра пройдет первое занятие в моей IT-школе,

а пару дней назад, я проходил трактористское техническое собеседование по скайпу (СиньЁр Пайтон Девелопер). Я его записал на несколько устройств, потом смонтировал все воедино. По-моему, я показал себя неплохо и рассчитываю на следующий этап.

Но, судить не мне, а Вам!

youtu.be/zC5eQ29Qijk

 , , , ,

fifajan
()

Модульность-3

Форум — Development

Продолжаю мучаться с системой модулей. Уже почти в депрессию впал - настолько это оказалось трудно.

Как будет устроен файл в Л2

Кусок кода делится на интерфейс и реализацию. Интерфейс и реализация находятся в разных файлах (как в С). Сборка происходит путём построения графа «зависимых действий».

Структура файла примерно такая:

// -*- для_чтения : "зависимое_действие1 ... зависимое_действиеN"; -*-
пространство_имён ИМЯ;
зависит_от зависимое_действие1 ... зависимое_действиеN ; 
... собственно код ... 

В общем-то это похоже на C с его инклюдами.

Зависимые действия

Зависимое действие - это файл (цель) и указание, что с ним нужно сделать. Что можно сделать?

1. Прочитать - это означает, что файл будет распарсен и записан куда-то в память.

2. Загрузить - это означает, что он будет откомпилирован и динамически слинкован. В ходе этого процесса будут (пере)определены описанные в файле функции и типы и выполнены команды инициализации.

Зависимости в С и в Лиспе

И вот тут у меня вопрос. В С просто указывается имя файла, а дальше система сама ищет его по путям.

В лиспе же есть «системы», хотя их надо бы назвать «модулями».

Система в лиспе является набором файлов и в то же время единицей зависимостей для сборки образа. Внутри системы - свои зависимости между файлами.

Лисп ищет систему (по путям или другим способом). Внутри системы имена файлов заданы жёстко.

Иллюзия циклических ссылок

Сравнивая работу в Лиспе и в Дельфи, я увидел, что в Дельфи работать намного удобнее. Мне казалось, что дело в циклах, и я даже многих обругал. Но я ошибался. В Дельфи нет циклических ссылок.

unit b; interface uses a; 
end. {EOF}

unit a; interface ; implementation uses b; 
end. {EOF}

Казалось бы, это циклическая зависимость. На самом же деле Дельфи компилирует интерфейс и реализацию отдельно и необязательно сразу, а зависимость возможна только от интерфейса. Поэтому это _не_ циклическая зависимость.

В Лиспе тоже надо отделить интерфейс от реализации системы

В лиспе же обычно ОДНА и та же система содержит пакет (интерфейс) и код (реализацию). Из-за этого и проблемы с порядком сборке в лиспе, которых нет в Дельфи. Нужно бы в лиспе завести традицию выделять пакет (и другой интерфейс) в одну систему, а реализацию - в другую систему.

Тогда на лиспе стало бы легче управлять системами. Не считая, конечно, того, что в Дельфи нужно писать меньше слов.

А что делать в Л2

Как же сделать, чтобы было хорошо, в новом языке? Уже понятно, что нужно отделить интерфейс от реализации, но это только часть решения. Как управляться с файлами?

Вижу два варианта:

1. Сделать как в С - единицей сборки и зависимости является отдельный файл, который ищется по помойке путей. Тут очевидно вылезает проблема уникальности имён. Я на С больших проектов не писал, может я чего-то не знаю о том, как решается эта проблема?

2. Сделать как в лиспе, т.е. ввести два уровня иерархии - систему и файл. Система содержит свой файл .asd. Но! Важное отличие от лиспа состоит в том, что система не является единицей сборки, а служит лишь для поиска файлов. Например, если мы нашли где лежит mysystem.asd, то файл mysystem.myfile.л2 находится там же. А, скажем, mysystem/dir1/f2.л2 - находится в подкаталоге dir1.

Зависимости же задаются в виде

действие(система.файл_внутри_системы)

а действие может быть «прочитать» или «загрузить». Если в системе принято стандартом хранить интерфейс в файле интерфейс.л2, то построить зависимость от интерфейса легко, зная только имя системы.

При этом где-то должно храниться знание о том, где лежит данная система. Но в asdf эта задача уже решена (даже слишком уж навороченно решена).

Собственно и вопрос - надо ли морочиться с «системами» или достаточно файлов? И может быть, кто-нибудь может это соотнести с другими языками (не знаю, как это сделано в Java и C#).

 , ,

den73
()

А много ли есть языков, где нет фиксированного «синтаксиса»?

Форум — Development

Вообще, под синтаксисом часто понимаются разные вещи, понятие довольно расплывчатое. Кстати, есть ли четкое, абсолютно однозначная, каноническая трактовка?

Я бы, наверное, интуитивно определил это так. Не-синтаксис — это только лишь вражения языка. Сюда не входят любые макроопределения, спецформы, statements, операторы и так далее. В таком случае синтаксиса нет в том смысле, что нет такого синтаксиса, который бы нельзя было изменить средствами самого языка. Грамматика при этом, конечно, никуда не денется.

Опять же, тут есть тонкая грань. Если каждому оператору соответствует какое-либо выражение языка, то все еще можно считать, что в языке все есть выражение. В таком случае, это можно считать легкой косметикой. Например, оператору := в Io соответствует выражение setSlot. Спецформе define в Scheme не соответствует никакое выражение. Соответственно, на Io можно писать используя одни только выражения, на scheme — нет.

Таким образом, к языкам без синтаксиса(или как это лучше назвать) можно отнести те, на которых весь код может быть написан без использования препроцессора, на одних только выражениях.

Наверное, tcl сюда входит, picolisp, возможно смоллток(поправьте, если я ошибаюсь). А еще есть?

UPD точней будет, наверное, не «без синтаксиса», а «независим от синтаксиса»

 , , ,

callbackhell
()

8.6 под офтопиком без ActiveState

Форум — Development

Как сделать?

 , ,

den73
()

PascalABC.NET стал свободным ПО

Новости — Open Source
Группа Open Source

PascalABC.NET — диалект языка Pascal для платформ .NET и Mono, а также компилятор и среда разработки для него. Разрабатывается в Южном Федеральном Университете и используется для обучения программированию. Среда разработки работает только под Windows, но компилятор работает и в GNU/Linux под Mono.

Долгое время проект имел проприетарную лицензию (распространялся при этом бесплатно), но 28 августа 2015 года (одновременно с выпуском версии 3.0) переведён на GNU LGPL.

Особенности (с официального сайта):

( читать дальше... )

Репозиторий на GitHub

>>> Подробности

 , ,

Ceiling_QB
()

Изготавливаем ЛОР-специфичную осеннюю обоину в Darktable за 10 шагов

Галерея — Скриншоты

Пока в галерее тишина и полное отсутствие новых скриншотов, расскажу всем желающим, как за 10 операции превратить сырой снимок в нескучную обоину, не запуская Gimp. Сегодня для этого мы воспользуемся широкоизвестным рав-конвертером Darktable. Для разнообразия я хотел воспользоваться Rawtherapee, но у него в моей системе очень страшные декорации окон.

  • Шаг номер ноль. Необходимо что-нибудь сфотографировать. В этот раз я сфотографировал альтер-эго одного небезызвестного обитателя нашего сайта. Однако, это может быть всё что угодно — лампочка, ножик, симпатичная девчонка или пушистый котик.
  • Шаг номер один. Дебайеризация. Страшное слово, означающее превращение изображения, закодированного в raw-файле в более привычное нам RGB-изображение. DT предоставляет нам три варианта на выбор, но выбирать имеет смысл лишь между AmaZE и VNG4. В данном случае выбор ни на что не влияет — самые мелкие детали, которые могли бы породить артефакты, всё равно не уцелели по причине вертлявости «модели». Дополнительные настройки нужны для борьбы с возможными артефактами и тоже, в данном случае, неактуальны.
  • Шаг два. Восстановление пересветов. Я немного выбил листву и часть шёрстки. Это не страшно, но при манипуляциях с ББ можно словить нехорошие эффекты в пересвеченных областях (т.н. розовые облака). Поэтому небольшая коррекция в режиме «воссоздать свет».
  • Шаг три. Баланс белого. Крайне влияет на общее восприятие снимка. Выставлять его по серой карте — далеко не всегда хорошая идея, ведь мы занимаемся не каталожной съёмкой. Тут я руководствовался революционным чутьём и подвинул множитель красного канала чуть за двойку, а синего — на 1,3.
  • Шаг четыре, в этот раз самый утомительный — установка базовой кривой. Ни одна из готовых меня не удовлетворила, пришлось рисовать самому. Заваливаем тени, поднимаем середину, компрессируем цвета.
  • Пять. Кривые Lab, раз уж они тут есть. Немного добавим контраста в тенях по L и чуть-чуть увеличим крутизну правого плеча каналов a и b.
  • Шесть. Локальный контраст. Не самый гибкий инструмент, к сожалению. Внимательно смотрим на белку и проявляем мелкие детали (детализация) . Внимательно смотрим на бокэ и стараемся не сделать из него что-то совсем страшное, играясь контурами (зернистость). Регулируем силу эффекта по-вкусу (контраст).
  • Семь. Листву под белкой я выбил и, гулять так гулять — попробуем замаскировать это аккуратно наложив градиент. Два стопа, небольшое окрашивание. Кажется, помогло.
  • Восемь. Обрезка под формат 16:10.
  • Девять. USM. Тут всё стандартно — на максимум и регулятором «порог» убираем артефакты. Затем уменьшаем силу шарпа.
  • Десять — экспорт в jpg.

Итак, ни Gimp ни какой-нибудь другой растровый редактор (например, от компании Adobe) нам не понадобились. Все операции заняли пару минут, а на результат можно смотреть без кровотечения из глаз. Разработчикам Darktable, как всегда — спасибо и (как уж без ложки дёгтя) пламенный привет за отсутствие комбинации CTRL+Z. Результат можно забрать там же, где и всегда.

 , ,

ist76
()

Выпуск дистрибутива Tails 1.6

Новости — Linux General
Группа Linux General

Недавно был представлен релиз специализированного дистрибутива Tails (The Amnesic Incognito Live System) 1.6, основанного на пакетной базе Debian и предназначенного для обеспечения анонимного выхода в сеть. Для загрузки подготовлен iso-образ, способный работать в Live-режиме, размером 941 Мб. Программное обеспечение по умолчанию:

Окружение рабочего стола GNOME.

Работа с сетью:

( читать дальше... )

Шифрование и приватность:

( читать дальше... )

Что нового в Tails 1.6:

( читать дальше... )

>>> Подробности

 ,

Odalist
()

Новый свободный моноширинный шрифт Hack 2.0

Новости — Open Source
Группа Open Source

Тихо и незаметно, никого не спрося, увидел свет новый свободный моноширинный шрифт Hack 2.0.

Оптимизированный для редакторов кода, шрифт включает более 1500 глифов, в том числе, кириллических. Доступны обычное, жирное, курсивное и жирное курсивное начертания. Оптимальный кегль, рекомендуемый разработчиками — 8-12px, хотя заявлено разборчивое начертание уже при 6-7px.

Подробные примеры шрифта

Github-репозиторий

>>> Источник

 

Hurenweibel
()

Нетбучный крыс готов к труду и обороне !

Галерея — Скриншоты

Собственно, fedora 22 на нетбуке Acer ES1-111M-C1EY. Очень порадовал браузер midori, жрёт мало ресурсов ,есть встроенные (нужно только включить) аналоги adblock, noscript, stylish и greasemonkey (всё работает на ура), хотя пришлось повозиться с включением flash player. Федорка тоже порадовала. Вместо заявленых на сайте производителя 5 часов работы от батареи работает аж ~8 почти без усилий с моей стороны. Всё окружение также летает даже без особых стараний его ускорить.

  • За тему gtk и xfwm спасибо Dontes.
  • ШГ в интерфейсах - PT Sans, в терминале - DejaVu Sans Mono Book, Браузер - Cantarell
  • Иконки - Vibrancy Light Aqua
  • Обои сменяются каждые 10 минут

 , , ,

sudopacman
()

Shotcut 15.07

Новости — Мультимедиа
Группа Мультимедиа

Опубликована очередная версия Shotcut — свободного (GNU GPL 3) видеоредактора, использующего мультимедийный фреймворк MLT.
Приложение поддерживает многие видео, аудио и графические форматы с помощью FFmpeg, имеет аппаратную поддержку обработки видео.

Новые возможности и изменения:

  • поддержка разрешения 4K UHD (улучшена поддержка устройств захвата компании Blackmagic Design, проверено на плате Intensity Pro 4K);
  • 5 видеофильтров для имитации старой киноплёнки (пыль, зерно, проектор, царапины, Technicolor);
  • 5 аудиофильтров (3-полосный эквалайзер, полосовой фильтр, фильтры верхних и нижних частот, режекторный фильтр);
  • добавлена функция вставки и удаления дорожки на таймлинии;
  • новые настройки кодирования по умолчанию для более качественного выходного видеофайла H.264 MP4 (используется переменный битрейт);
  • видеокомпозитинг теперь по умолчанию включен.

Все характеристики

Страница загрузки

>>> Подробности

 , , , ,

amorpher
()

Хилый закос под любовь

Галерея — Скриншоты

Так как ужасно надоела Unity тормозами, глюками, слетающим индикатором раскладки, убитым треем и т.д. и я уже давно хотел переползти на крысу. Но привычек, за пять лет использования интерфейса имени Великого Космонавтикуса, накопилось слишком много. Каждое переползание на xfce сопровождалось позорным бегством назад. Но всё изменилось не так давно, когда я поставил на нетбук Asus EEE 901, по причине его тупизны, xubuntu. Среда очень сильно прибавила за последний год-полтора. Так еще и на лоре проскочила рабочая версия глобального меню. И я понял, что день настал. Итак:

  • Xubuntu 14.10
  • Xfce 4.12
  • TopMenu 20150219 (наблюдается перемигивание фона тёмный/светлый/тёмный при смене приложения, напрягает не сильно, на светлых темах не заметно)
  • DockbarX 0.91.4 слева в качестве плагина панели xfce
  • Whiskermenu 1.4.0 забиндина на «SuperLeft», как в юнити, ищет и запускает в миллиард раз быстрее чёртовых линз!!!
  • Соль_БГ.2014 совершенно ошеломляющий релиз, чего почти уже и не надеялся услышать от Бориса Борисовича.

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

В догонку:

 , , ,

abadello
()

Пакет для рисования иллюстраций в учебные пособия fiziko 0.1

Новости — Open Source
Группа Open Source

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

Пакет для создания иллюстраций к учебным пособиям fiziko 0.1 позволяет быстро вносить в иллюстрации объекты реального мира, выполненные в стиле «рисунок со штриховкой».

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

>>> Подробности

 , ,

psv1967
()

Tanks of Freedom — пошаговая, изометрическая стратегическая игра

Новости — Игры
Группа Игры

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

Используйте дороги для перемещения ваших вооруженных сил. Прорывайтесь через линию фронта и возьмите под контроль бункера противника чтобы выиграть сражение!

( читать дальше... )

>>> Подробности

 , , ,

fallout4all
()

О XML-программистах

Форум — Development

Всем более-менее опытным программистам, работавшим с энтерпрайзом, четко известен следующий эмпирический закон:

Девятое Правило Гринспуна, о котором он сознательно предпочел умолчать

Любая более-менее крупная программа на Java или C# является программой на XML

Вобщем, в один прекрасный день, работая на C#, я написал на XML-конфиг некоторых приблуд для UI. Это смотрелось настолько элегантно и красиво, и кастомизировалось настолько проще, по сравнению с обычным хардкодом, что я долго лелеял идею о том чтобы воткнуть подобное еще куда-либо в проект.

Не так давно, такой шанс появился, и я перевел в декларативное описание на XML воркфлоу основных бизнес-процессов системы.

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

А что если эти два конфига объединить в один XML?

Ой, стойте, но тогда ведь получается, что туда же можно перенести и разнообразные простые валидаторы и предикаты действий по бизнес-логике? Описание геттеров/сеттеров и простой арифметики - не такое уж сложное занятие, тем более проект и так в System.Reflection по уши.

Черт! Но вообще-то ведь и сложные тоже не проблема - ведь они явлются в 99% случаев не более чем SQL/HQL-запросами, которые никто не мешает хранить в конфигах.

Ух, а ведь если подумать еще - то туда же можно перенести и сами действия по бизнес-логике, не так ли?

Но ведь можно пойти и дальше. Из XML можно вообще-то говоря даже и генерировать модель данных для всей логики системы! И ведь это не просто бредовая идея - такое отчасти давно уже делается стандартными средствами .Net-платформы, например тем же Entity Framework.

И тут я задался вопросом - а зачем нам тогда вообще большая часть кода на C#? Сторонние библиотеки мы ведь точно так же можем вызывать из интерпретатора XML.

Вон оно как все отлично то выходит.

Хм, правда что-то эта модель несколько, скажем так, раздулась.

Вот бы, конечно, написать более высокоуровневый интерпретатор XML чтобы он нам генирировал наш XML из декларативного описания другим XML?

И тут меня осенило. Где-то я это уже видел. Может быть в одной книжке, давно забытой на полке? Или в старой статье семьдесят мохнатого года?

Вспомнив окончательно, я просто расплакался.

Итак:

Вторая Теорема Лавсана

Каждый XML-программист (то есть любой продвинутый java/c#-программист) в конечном итоге доходит до лиспа, просветляется и плачет.

Дискач.

 , ,

lovesan
()

Композитинг видео в Linux часть вторая

Галерея — Скриншоты

Как то незаметно в начале августа релизнулась очередная стабильная бета NATRON за нумером 0.96. Есть сборки для всех трех PC платформ, так же был запилен удобный менеджер OFX плагинов и простой инсталлятор. Были исправлены выпадения при применении нескольких нод цветокоррекции и прочие мерзкие зефирные баги. До сих пор падают плагины от TurtleOFX и нет фильтров типа blur - но динамика работы над проектом обнадеживает и я думаю что в версии 1.0 мы увидим стабильное решение для домашнего композитинга.

АЛСО результат композитинга: http://www.render.ru/download/blog_img/661fb0e2bceb111744226d353eb64a71.jpg

 ,

wst
()

Композитинг видео в Linux

Галерея — Скриншоты

Тестирую новый пакет для композитинга на нодах Natron.

Что уже есть: ноды, няшный интерфейс, ротоскопинг, кеинг по маске и по хромаку, экспорт в кучу форматов, совместимость с OFX, работа с цветовыми пространствами и многое другое.

Из печального - пока увы бета, но, есть надежда что уж в этот раз мы увидим, если не убийцу AE и Nuke, то действительно удобный инструмент для работы с хромакеем под Linux. Статья в жж будет немного позже - продолжаю изучать это чудо. подробнее об этом проекте можно прочитать тут(осторожно English): http://libregraphicsworld.org/blog/entry/natron-0-92-released-with-new-roto-a...

 ,

wst
()

Xubuntu четырнадцать.нольчетыре LTS

Галерея — Скриншоты

Сейчас повалят скрины 14.04 )))

Вот, оно установилось и используется.
Из стандарта что не понравилось и было убрано:
- Whisker Menu - очень мудренное и тугонастраиваемое, теперь старое меню по правому клику
- File-Roller - испортили интерфейс, заменен на Xarchiver
- Mousepad - Leafpad привычней
- Tumbler - глючный генератор эскизов к файлам, ломался на ровном месте
... и еще по мелочи.

Настроилось все как в 12.04

Дровишки на невидию не ставил, игорь не гоняю. В nouveau тиринга нет и хорошо. Да и загрузочный экран не ломается. Необходимость в Compton'е исчезла.

Допилил GTK-тему из Numix к новой версии, исправлены табы (в gtk и gtk3 разные были). Находится здесь, в архиве для 12.04 и 14.04 (какие там версии - хз)
Значки - Compass

 , ,

dagaragga
()

Велокадный спорт

Галерея — Скриншоты

В продолжение моих прошлых скриншотов. ZCAD — самодельный кад, написанный на паскале.

За последнее время запилил некоторые размерные примитивы, улучшил инспетор объектов — теперь уже можно рисовать детские чертежики))

На скрине дефолтная кубунта, lazarus и zcad

 ,

zamtmn
()