Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

Mike497:

В библиотеке такие данные, может быть, и есть... хотя 19 лет прошло :) Кроме того, человек. придумывавший задачу, явно не знал, что такое читательский билет и вообще библиотека. Читательские билеты выдаются библиотекой и находятся на руках, а в библиотеке на читателей заводятся учетные карточки.

Количество книг, сочиненных Дюма, по данным из читательских билетов или учетных карточек библиотеки не определить. И даже сколько книг Дюма есть в библиотеке, по данным учетных карточек и тем более читательских билетов тоже не определить - может быть, некоторые книги никто вообще не брал читать. Кроме того, только самых известных Александров Дюма было двое (рекомендую книгу А.Моруа "Три Дюма). У Пушкина, кстати, его дядя Александр тоже занимался литературным трудом, хотя его наверняка можно не учитывать.

Ну и, наконец, мало ли что есть в библиотеке. Пока все данные не введены в какой-то текстовый файл, Паскалю делать нечего. Это задача на базы данных. Да и потом формулируются такие запросы к базе данных на основании не Паскаля, а имеющегося в программном обеспечении БД специального языка запросов. Однако, как всегда с задачами типа "летели три тюленя..." - от нас ждут какую-то программу. Что ж, каков вопрос, таков ответ. Хотя все равно для проверки программы надо будет заполнить несколько записей читателями, книгами, датами... фу ;)

const n=3;bd:array[1..n]of record name,bookauthor,bookname:string[40];date:string[8] end=((name:'Иванов';bookauthor:'Александр Сергеевич Грибоедов';bookname:'Горе от ума';date:'21.04.90'),(name:'Петров';bookauthor:'Александр Сергеевич Пушкин';bookname:'Царь Никита и сорок его дочерей';date:'01.01.01'),(name:'Сидоров';bookauthor:'Иван Антонович Ефремов';bookname:'Таис Афинская';date:'15.05.90'));var m,man:word;beginbeginfor man:=1 to n do with bd[man] do if (bookname='Таис Афинская')and(date='15.05.90')  then WriteLn ('Таис Афинская ','15.05.90 : ', name); WriteLn;m:=0; for man:=1 to n do with bd[man] do if bookauthor='Александр Сергеевич Пушкин'  then inc(m); WriteLn('Александр Сергеевич Пушкин',' : ', m); WriteLn;m:=0; for man:=1 to n do with bd[man] do if bookauthor='Александр Дюма'   then begin WriteLn(bookauthor,' ',name); inc(m) end; WriteLn('Все Дюма: ',m); WriteLn;for man:=1 to n do with bd[man] do if date='21.04.90'  then WriteLn(date,' : ',name,', ',bookauthor,' , ',bookname);end; Readlnend.

Заполнять массив записей читателями и книгами мне было лень, три записи я сделал, остальные, сколько нужно, чтобы выдачи результатов не были пустыми, легко самому дописать. В начале программы надо будет тогда подкорректировать еще значение n - это число записей.

P.S. Не заметил в программе лишний begin в начале и парный к нему end перед ReadLn в конце программы. Не мешают, но абсолютно излишни, выкинь их...

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Недавно заметил, когда пишу консольные приложения в C++.net компилятор всё время выдаёт предупреждение (но не ошибку), когда я использую оператор getch() в конце программы. Я перед этим подключаю хедер conio.h, т.е. всё, как и в C++ Builder'е. Однако компилятор пишет, что в соответствии с требованиями ISO рекомендуется использовать оператор _getch() вместо getch(). Так вот вопрос: в чём отличие _getch() от getch() (и вообще, у многих операторов видал знак подчёркивания вначале, хотелось бы узнать, что он означает), и какой правильнее было бы использовать.

Ссылка на комментарий
Поделиться на другие сайты

Shadow TH:

Вопрос запутанный и упирается в совместимость со старыми стандартами, поэтому на полную точность ответа не претендую. По старым стандартам некоторые функции в C/C++ должны были иметь в начале имени знак подчеркивания, который означал, что это имя зарезервировано компилятором (например, используется как макроопределение) и не может переопределяться программистом. Потом это использовалось, чтобы параллельно старой функции ввести похожую с другой реализацией, по имени отличающуюся отсутствием подчеркивания, поддержка которой не гарантировалась в библиотеках других компиляторов (во всяком случае, по старым стандартам). Похоже на то, как это было, например, сделано с хедерами iostream.h и iostream.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте. Помогите с задачой, плиз! ;)

Ввести последовательность из 8 символов. Если символ - русская гласная буква, то заменить в нем младший бит единицей, иначе - заменить 2-й и 3-й биты нулями. Вывести исходную и преобразованную последовательности в символьной форме и в восьмеричных кодах.

Язык: С++ for Dos

P.S. Я не тороплю, конечно, но чем скорее, тем лучше. :)

Ссылка на комментарий
Поделиться на другие сайты

Nata6enka:

Интересно, что за специальность требует работы с машинным представлением данных? С обработкой на уровне отдельных битов работают при программировании микроконтроллеров и т.п.

#include <stdio.h>main(){int i,j,k; char s[8],g[]="аеёиоуыэюя";scanf("%8c",s); for(i=0;i<8;i++)printf("   %c",s[i]); printf("\n"); for(i=0;i<8;i++)printf(" %o",s[i]); printf("\n");for(i=0;i<8;i++){for(k=j=0;j<10;j++)if(s[i]==g[j])k=1;s[i]=k?s[i]|1:s[i]&0371;}for(i=0;i<8;i++)printf("   %c",s[i]); printf("\n"); for(i=0;i<8;i++)printf(" %o",s[i]); printf("\n");getchar(); getchar();}

P.S. "й" я гласной буквой не считал. Я считаю ее полугласной. Пусть жалуется, если хочет. Кроме того, я игнорировал заглавные буквы. Если хочется это изменить, их надо добавить в строку с гласными буквами, и заменить число 10 в середине программы на новое число букв в этой строке.

P.P.S. Немного изменил строку с заменой битов, иначе при некоторых наборах символов программа могла неправильно заменить бит.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

#include <iostream> //библиотека ввода-вывода данных

#include <math.h> //библиотека математических функций

float fun(float x, float *y)

{

x=round(x*100)/100;

if (x == 0)

return *y=pow(x+0.5, 0.5);

else if (x > 0)

return *y=log(x+2);

else if (x < 0)

return *y=1/x+0.2*x;

}

main()

{

float y=0.0, y0, (*p_fun)(float x, float *y)=fun;

printf("%3c %3c\n", 'x', 'y');

for (float x=-0.5; x<=1; x+=0.1)

printf("%5.2f %5.2f\n", x, (*p_fun)(x, &y0), y+=y0);

printf("SUMMA(y) = %5.2f\n", y);

system("PAUSE");

}

Вот программка функции для вычисления выражения при x принадлежит [-0.5;1]/

Я не совсем разобралась в этом

{

float y=0.0, y0, (*p_fun)(float x, float *y)=fun;

printf("%3c %3c\n", 'x', 'y');

for (float x=-0.5; x<=1; x+=0.1)

printf("%5.2f %5.2f\n", x, (*p_fun)(x, &y0), y+=y0);

printf("SUMMA(y) = %5.2f\n", y);

system("PAUSE");

}

куске программы. Некоторые бозначения мне не знакомы, например, %3c . Объясните пожалуйста.

p.s. Я не блондинка, я просто учусь:)

Ссылка на комментарий
Поделиться на другие сайты

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

"%3c" - спецификатор формата вывода символа. Сооответствующая этому спецификатору выводимая величина из списка параметров функции printf рассматривается как код символа и этот символ выводится в поле из трех позиций в крайней правой позиции, в двух левых ставятся пробелы.

printf("%3c %3c\n", 'x', 'y'); выведет

  x   y

Перед y будет три пробела, так как между полями вывода x и y вставится еще пробел, который был написан в строке спецификаторов формата между спецификаторами вывода символов.

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

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Есть несколько вопросов:

#include <stdio.h>main(){int i,j,k; char s[8],g[]="аеёиоуыэюя";scanf("%8c",s);for(i=0;i<8;i++)printf("   %c",s[i]); printf("\n");for(i=0;i<8;i++)printf(" %o",s[i]); printf("\n");for(i=0;i<8;i++){for(k=j=0;j<10;j++)if(s[i]==g[j])k=1;s[i]=k?s[i]|1:s[i]&0371;}for(i=0;i<8;i++)printf("   %c",s[i]); printf("\n");for(i=0;i<8;i++)printf(" %o",s[i]); printf("\n");getchar(); getchar();}

А зачам здесь getchar(); getchar();?

#include <iostream> //библиотека ввода-вывода данных

#include <math.h> //библиотека математических функций

...

printf("%3c %3c\n", 'x', 'y');

...

<iostream> кроме <iostream.h> содержит и функции описание в <stdio.h>, или как?

Ссылка на комментарий
Поделиться на другие сайты

А зачам здесь getchar(); getchar();?
Аналог system("PAUSE"); у Nata6enka - чтобы задержать вывод на экране до нажатия какой-нибудь клавиши. Есть разные способы сделать это.
<iostream> кроме <iostream.h> содержит и функции описание в <stdio.h>, или как?
Вероятно, косвенно да, так как работает :) Можешь посмотреть сам iostream, он содержит в основном комментарии и ссылки на другие заголовочные файлы.

P.S. Я уже писал, C - для любителей тайных знаний и тонкостей. Чего стоит только хотя бы то, что 0371 в цитированной программе (и вообще в C) - совсем не 371, ноль впереди числа меняет его значение.

Ссылка на комментарий
Поделиться на другие сайты

;))

Немного тяжеловато было разобрать Вашу строчку:

for(i=0;i<8;i++){for(k=j=0;j<10;j++)if(s[i]==g[j])k=1;s[i]=k?s[i]|1:s[i]&0371;

Но я догадывался, что значит 0371, и путем несложных действий убедился в этом.

Как то мне легче воспринять 0хF9 - так хоть сразу видно что старшая половина битов равна 1...

Еще лутше било бы представить это число в двоичном представлении (1111 1001), но я к сожалению не нашел как правильно записать, чтобы компилятор понял...?

Ссылка на комментарий
Поделиться на другие сайты

Еще лутше било бы представить это число в двоичном представлении (1111 1001), но я к сожалению не нашел как правильно записать, чтобы компилятор понял...?
Да, писать самому легче, чем разбирать чужое...

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

Стало немного стыдно... :)

... пошел учить шетнадцатеричные и восьмеричные числа...

Возник вопрос:

А что еще должен уметь преобразовывать в уме программист???

Десятеринчые в... биты или байты? И сколько порядков?

P.S.: пока учил шетнадцатеричные цифры, задумался, почему люди изначально не пользовались этой или восьмеричной системой...? Откуда взялась десятеричная система? почему 10, а не 6, 7, или 12???

Немного порозмыслив, я пришел к выводу, что всему виной десять пальцев на руках :)))

Ссылка на комментарий
Поделиться на другие сайты

core:

Список создается из структур, каждая из которых содержит поле данных Data и два указателя Prev и Next на предыдущую и последующую структуры. Чтобы работать со списком, мы используем четыре указателя: begin - указатель на первую структуру в списке, end - на последнюю, cur (от current) - на текущую, с которой работаем, tmp - на структуру, которую создаем, но пока еще не настроили в ней указатели - когда включим ее в список, присвоим значение указателя tmp указателю cur.

Еще в программе есть переменные для цикла ввода чисел для проверки работы списка: d - введенного числа, n - количества вводимых чисел, i - счетчика цикла ввода чисел, они прямого отношения к списку не имеют. Вот и все переменные.

А по самой программе объяснять особенно нечего: вводим число, создаем структуру для его хранения, помещаем число в структуру, связываем ее с соседней структурой взаимными ссылками. Первое создание структуры несколько отличается от последующих, так как первую структуру не надо связывать с предыдущей, поэтому в первый раз мы структура создается отдельной строкой команд, а остальные - в цикле. Можно было, конечно, и создание первой структуры включить в цикл, но тогда пришлось бы каждый раз проверять, надо ли связывать структуру с предыдущей.

P.S. Кстати, заметил у себя там ошибку: в одном из операторов для проверки работы списка должно было вместо i стоять d. Подправил и дал там соответствующее примечание.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Привет. Нужен какой-нить исходник калькулятора на С++ Builder. Чтоб были только стандартные операции + любая - синус, например, чтоб по примеру уже можно было дабвить функции, необходимые для инженерного калькулятора. Ну и структуру реализации в класах. и еще одно - можно отдельно - пример реализации в етой же среде обратной польской нотации для исчесления выражений методом рекурсивного спуска :D Просто если у кого есть или ссылка или на компе исходники - киньте. Заранее спасибо

Ссылка на комментарий
Поделиться на другие сайты

Подскажите плизь? Прога, представляет собой цельный exeшник весом 268 кило. Содержит настройки для спутника. Меня не устраивают умолчания. Как их поменять не на языковом уровне? И с помощью чего? Возможно ли это вообще? Заранее спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Крэйзи Юзер:

Может быть, а может и не быть - зависит от внутреннего устройства программы, можно откорректировать ее настройки с помощью редактора ресурсов, например, Restorator или прямым изменением кода в редакторе кодов (HEX-редакторе). В любом случае желательно знакомство с программированием.

P.S. Иногда у таких программ есть возможность задания настроек при запуске с помощью дополнительного ini-файла или параметров в строке запуска программы, но это надо смотреть руководство.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Крэйзи Юзер,

а что за екзешник? И какой спутник? Может мне тоже пригодится... :no:

Виложите, пожалуйста зсилку на прогу, или закиньте на мыло: Lion.HC@gmail.com

Крэйзи Юзер,

а что за екзешник? И какой спутник? Может мне тоже пригодится... :D

Виложите, пожалуйста зсилку на прогу, или закиньте на мыло: Lion.HC@gmail.com

Ссылка на комментарий
Поделиться на другие сайты

core:

Набери в Яндексе "исходник калькулятора на С++ Builder", и ссылки найдутся. Насколько те калькуляторы будут соответствовать желаемому, конечно, сказать трудно.

Ссылка на комментарий
Поделиться на другие сайты

Здравствуте

Помогите с небольшой программой на Паскале:

0100

* 1010

-----

0000

+0100

+0000

+0100

---------

00101000 <------ вот это значение нужно вывести

Заранее спасибо...

Здравствуте

Помогите с небольшой программой на Паскале:

0100

* 1010

-----

0000

+0100

+0000

+0100

---------

00101000 <------ вот это значение нужно вывести

Заранее спасибо...

Здравствуте

Помогите с небольшой программой на Паскале:

0100

* 1010

-----

0000

+0100

+0000

+0100

---------

00101000 <------ вот это значение нужно вывести

Заранее спасибо...

ИЗВИНИТЕ это не флуд... просто у меня что то с интернетом...(((

Ссылка на комментарий
Поделиться на другие сайты

Ну еще исходник какой-нить можно найти. но пример решения задания методом обратной польской записи видел только за деньги. Мне нужен алгоритм перевода выражения в польскую обратную запись а потом вывод результата. Например:

2-5+6*(8-7). В обратной польской записи ето будет выглядит как:

87-6*5-2+

Ну еще исходник какой-нить можно найти. но пример решения задания методом обратной польской записи видел только за деньги. Мне нужен алгоритм перевода выражения в польскую обратную запись а потом вывод результата. Например:

2-5+6*(8-7). В обратной польской записи ето будет выглядит как:

87-6*5-2+

Ссылка на комментарий
Поделиться на другие сайты

Ну еще исходник какой-нить можно найти. но пример решения задания методом обратной польской записи видел только за деньги. Мне нужен алгоритм перевода выражения в польскую обратную запись а потом вывод результата. Например:

2-5+6*(8-7). В обратной польской записи ето будет выглядит как:

87-6*5-2+

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...