Дайте ссылку, где подробно описан графический режим Си. Разные функции, чтобы меню делать, курсоры. Чтобы в меню можно было вставить картинку свою.... И нажимая стрелки передвигать ее по экрану... Искал в поисковике по граф. режим... но так и не нашел....
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
tolikrog в Cи нет графического режима. Эти функции реализуются сторонними библиотеками. Иногда включенными в состав среды разработки. Поэтому уточните - под какую среду собираетесь программировать. Тогда можно на вопрос ответить.
Цитата:
Искал в поисковике по граф. режим... но так и не нашел....
Если под вынь, то тогда скорее копать в сторону OWL/MFC/Win32API/MSDN...
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Member
Статус: Не в сети Регистрация: 08.05.2006 Откуда: СПБ
tolikrog если игру,то в borland 3.11 есть библиотека grafiks.h(помоему так) при помощи нее можно рисовать,цветов всего 16,но в инете где-то валялся драйвер с 1024 цветами
_________________ Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс
Да, картинки сам нарисую, ну, а как меню сделать? Наподобие как в Нортон Командере, чтобы прокручивать стрелками. Еще раз прошу, если знаете сайт, где это подробно описано, то дайте ссылку на этот сайт.
Member
Статус: Не в сети Регистрация: 10.12.2007 Откуда: Санкт-Петербург
Всем привет. Имеется одна программка, которую портит 1 момент. К примеру, есть введенное слово "раковина". А также есть слово "дом". В словаре они бы располагались "дом" и "раковина". Вот из этих двух слов нужно вывести дом, так как он стоит выше исходного, те раковины. Слова конечно произвольные, это так, для примера. Подскажите, пожалуйста, как это сделать( просто общую идею, код я и так напишу).
_________________ Семь бед, один Reset. 95, 98 - это количество багов. В пpоцентах... DCN - наше все
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
manya общая идея - связать все слова в виде иерархического дерева (т.е. "дом" - элемент нулевого уровня, "ванная", "гостиная" - "дети" элемента "дом", "раковина" - потомок "ванной"). Если требуются более сложные связи, то это будет не дерево, а клубок какой-то ... Хранить в памяти можно в виде списка вида: N элемента - описание элемента - ссылка на родительский элемент. Работать будет не очень быстро, но конструкция жизнеспособная. Просто соориентируйтесь какие взаимосвязи Вы хотите иметь - плясать отсюда. Плюс теорию БД неплохо посмотреть (отношения один-к-одному, один-к-многим... индексы, виды и пр.).
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Member
Статус: Не в сети Регистрация: 10.12.2007 Откуда: Санкт-Петербург
простите за беспокойство, но вот тут проблема( прога удаляет те слова, которые лексиграфически меньше введенного) некорректно выводит первое слово Добавлено спустя 4 минуты 28 секунд:
Добавлено спустя 1 час 51 минуту 24 секунды:
Код:
#include <stdio.h> #define N 100 int word[N]; int phrase[N]; void main(void) { int c=0; int i=0; int count=0; printf("Input word: "); while((c=getchar()) !='\n') { word[i]=c; i++; } printf("Input phrase. The end of the phrase must '0' "); c=0; i=0; //getchar(); while((c=getchar()) !='0') { if(c!=' ' && c!=',' && c!='0') { phrase[i]=c; i++; } else { int u=0; bool flag = true; for (u=0;u<=i;u++) { if(word[u]<phrase[u]) { flag = false; break; } if(word[u]>phrase[u]) { flag = true; break; }
} if (flag) { count++; for (u=0;u<=i;u++) { putchar(phrase[u]); phrase[u]=0; } }
printf("\n"); i=0; } } if (count==0) { printf("There are no such words\n"); } }
Так будет правильнее, но она все равно работает не всегода
_________________ Семь бед, один Reset. 95, 98 - это количество багов. В пpоцентах... DCN - наше все
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
manya это не программа, а ужОс какой-то. 1) не int word[N], а char word[N]. Мы же работаем с символами 2) строчки должны оканчиваться символом с кодом, иначе Вы так и не узнаете, где конец. Ну, и Сишные функции по умолчанию считают, что все именно так. Иначе могут залезть в чужую память. Так что если сами создаете строчку - не забываем ставить в конце нуль-терминатор. 3) вместо глобальных строк фиксированной длины можно перейти на указатели на строчки с динамическим выделением памяти - Вы же не уверены, что Вам всегда хватит 100 символов? 4) учитывая, что логика программы получается смазанная - нарисуйте блок-схему или напишите алгоритм на бумаге (просто в виде неких фраз 'сделать то-то'). Потом уже реализуйте. Так, например, я бы разнес функции ввода данных и функции обработки данных. В конец - сунуть вывод отчета о выполнении (окончательная строчка, количество слов, ну, и т.д.) 5) см.п.4, если хотите, чтобы другие поняли, ЧТО должна делать Ваша программа 6) см. стандартную библиотеку Си. В частности, раздел про строковые функции - там есть и сравнение, и поиск подстроки и многое другое.
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Member
Статус: Не в сети Регистрация: 10.12.2007 Откуда: Санкт-Петербург
Нам нельзя использовать строки, а только массивы . В данном случае можно же записывать в int, там будут просто коды символов. 100 мне точно хватит, это оговорено условием задачи( и динамическую память нам тоже пока нельзя) . Ну а насчет логики полностью соглашусь)))) А строкуа у меня ограничена 0, а введенное слово enterом
_________________ Семь бед, один Reset. 95, 98 - это количество багов. В пpоцентах... DCN - наше все
Заблокирован Статус: Не в сети Регистрация: 23.01.2005 Откуда: с Марса
manya Во-первых, нет ни единого комментария , какая команда за что отвечает... Во-вотрых, прежде что либо делать , нужно это расписать на бумаге , немного поразмышлять , составить в виде стрелок и кружков (if, else if , else). /*Проблема быстро решится.*/
Добавлено спустя 6 минут 35 секунд:
Цитата:
#include <stdio.h> #define N 100 int word[N]; int phrase[N]; void main(void) { int c=0; int i=0; int count=0; printf("Input word: ");
Нафиг такой фигней заниматся ??? Неужели нельзя проще ?
#include<stdio.h>
main() { int n = 100 , c = 0 , i = 0 , count = 0; char word[n] , phrase[n] ;
Добавлено спустя 2 минуты 3 секунды: И вообще пользуйся Code::Blocks , весч !
_________________ Монитор никак у всех, у меня на IPS. Пpошьешь и бедное железо на совсем убьешь ! Не уверен , не прошивай ! Пниха Виста Колбоса КГ / АМ
Заблокирован Статус: Не в сети Регистрация: 23.01.2005 Откуда: с Марса
manya Буквы ака символы, ты не можешь сохронять в таблицах типа инт , инт только для цифр (без запятых). А вот char , можно сохронять (не знаю как лутше скзать) символы , тоесть цифры , буквы, запятые , точки всё что является символом (не в счет исключения).
_________________ Монитор никак у всех, у меня на IPS. Пpошьешь и бедное железо на совсем убьешь ! Не уверен , не прошивай ! Пниха Виста Колбоса КГ / АМ
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
BiC круто объяснили! Я ничего не понял. Вообще-то символы МОЖНО сохранять в массивах int. Правда, это плохо по другим причинам. Например, по той, что ф-ции работы со строками начнут глючить при передаче им не char*. В рамках компьютера символы записываются не как символы, а как их коды, т.е как числа. Т.к. в компьютере используется таблица ASCII, то символ = 1 байт. А Unicode - 2хбайтовый... Просто в Си нет отдельного однобайтного целочисленного типа кроме char . То, что Вы имели в виду - в массиве int нельзя сохранять данные в формате с плавающей точкой - соглашусь. Так делать не стоит. Но делать так можно, когда понимаешь, что делаешь...
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Заблокирован Статус: Не в сети Регистрация: 23.01.2005 Откуда: с Марса
Ой, не городи огород с уникодом , мы говорим о type (int , char) и для чего они предназначены. Не ты создал этот язык , значит должен делать так как полагается.
Если заниматся буквами и цифрами то:
int цифры без запятой float с запятой char буквы, а так же можно цифры + запятые , точки
, у C нет string поетому нужно использовать char таблицу.
_________________ Монитор никак у всех, у меня на IPS. Пpошьешь и бедное железо на совсем убьешь ! Не уверен , не прошивай ! Пниха Виста Колбоса КГ / АМ
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
BiC
Цитата:
int цифры без запятой float с запятой char буквы, а так же можно цифры + запятые , точки
товарищ, с таким уровнем познания языка в этой ветке делать нечего.
Цитата:
таблицу.
не таблицу, а массив.
Цитата:
char буквы, а так же можно цифры + запятые , точки
еще раз (для непонятливых). В Си есть три целочисленных типа: char (1-байтовое), [short] int (2-хбайтовое), long int (4-хбайтовое). Про числа с плавающей точкой речи пока нет. То что символьные данные удобнее хранить в char'ах - очевидно. Но то что int x = 'c'; char c = 'c'; помещает в x и c одно и то же значение (кода символа c) должно быть понятно. Си тем и удобен - что он достаточно высок (не надо писать конкретных ассемблерных инструкций) и тем, что он достаточно низок (можно с очень хорошей степенью достоверности предсказывать как преобразуются инструкции в машинные коды и как хранятся данные)
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения