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

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


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

Помогите, пожалуйста!

Написать на С++.

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

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

Помогите, пожалуйста! Написать на С++. Разработать программу формирования очереди, содержащей целые числа, и упорядочивания по возрастанию элементов в этой очереди. В процессе упорядочивания элементы очереди перемещаться не должны.

Имеет смысл через ordered map (std::map):

#include <iostream>#include <map>#include <exception>namespace Queue {   class Queue {       private:           std::map<int, int> queue;       public:           Queue& unshift(int const &key) {               std::map<int, int>::iterator value = queue.find(key);               if ( value == queue.end() ) {                   queue.insert(std::pair<int, int>(key, 1));               }               else {                   value->second++;               }               return *this;           }           int shift() {               if ( not queue.empty() ) {                   int value = queue.begin()->first;                   if ( 0 == --(queue.begin()->second)) {                       queue.erase(value);                   }                   return value;               }               else {                   throw excp_queue_is_empty;               }           }           int length() {               return static_cast<int>(queue.size());           }           Queue& operator << (int const &k) { return unshift(k); }           Queue& operator >> (int       &v) { v = shift(); return *this; }       private:           class exceptionQueueIsEmpty: public std::exception {               virtual const char* what() const throw() { return "Queue is empty!"; }           } excp_queue_is_empty;   };   Queue& operator << (int       &v, Queue& queue) { v = queue.shift(); return queue; }   Queue& operator >> (int const &k, Queue& queue) { return queue.unshift(k); }};main () {   Queue::Queue queue;   // ---------------------------------------   // add items to queue    // ---------------------------------------   queue.unshift(10).unshift(10).unshift(1);   queue << 3 << 3 << 777;   (7 >> (2 >> (7 >> queue)));   // ---------------------------------------   // ---------------------------------------   // get items from queue    // ---------------------------------------   int a = queue.shift(), b, c;   queue >> b >> c;   std::cout << a             << std::endl             << b             << std::endl             << c             << std::endl             << queue.shift() << std::endl;   // ---------------------------------------}
Output:1233
Ссылка на комментарий
Поделиться на другие сайты

@Ego Drama,а вас не затруднит эту программу сделать попроще, а то не все понятно что происходит.

Не печальтесь, всё просто. Лишь std::map осилить стоит. Истина в том с STL, значительно проще писать чем без него :) Я бы даже сказал, что писать на C++ без STL и boost джентльмену не порядочно. Девочки любить не будут.

Вот комментарии прочтите:

#include <iostream>#include <map>#include <exception>namespace Queue {   class Queue {       private:           std::map<int, int> queue; // ключ     (1-ый int) --- значение элемента в очереди                                     // значение (2-ой int) --- количество элементов с данным значением в очедери       public:           // метод добавления элемента в очередь            Queue& unshift(int const &key) {               std::map<int, int>::iterator value = queue.find(key); // попытка найти значение (key) в очереди               if ( value == queue.end() ) {                         // значения нет                   queue.insert(std::pair<int, int>(key, 1));        // вставляем в map значение и количество --- 1               }               else {                   value->second++;                                  // если значение есть, то инкрементируем количество               }               return *this;           }           // метод получениен элемента из очереди           int shift() {               if ( not queue.empty() ) {                            // если map НЕ пустой                   int value = queue.begin()->first;                 // запоминаем значение первого элемента                   if ( 0 == --(queue.begin()->second)) {            // декрементируем количество и если 0, то                       queue.erase(value);                           // удаляем значение из map'а                   }                   return value;                                     // возвращаем сохранённое ранее значение               }               else {                   throw excp_queue_is_empty;                        // если map пустой, извлекать нечего ---               }                                                     //     генерируем исключение           }           // перегружаем операции, для записи и чтения из очереди для Queue           // реализация через shift/unshift           Queue& operator << (int const &k) { return unshift(k); }           Queue& operator >> (int       &v) { v = shift(); return *this; }       private:           // определяем исключение, которое бросаем выше           class exceptionQueueIsEmpty: public std::exception {               virtual const char* what() const throw() { return "Queue is empty!"; }           } excp_queue_is_empty;   };   // перегружаем операции, для записи и чтения из очереди для int   // во имя порядка и справедливости   Queue& operator << (int       &v, Queue& queue) { v = queue.shift(); return queue; }   Queue& operator >> (int const &k, Queue& queue) { return queue.unshift(k); }};main () {   Queue::Queue queue;   // ---------------------------------------   // варианты добавления элементов в очередь   // ---------------------------------------   queue.unshift(10).unshift(10).unshift(1);   queue << 3 << 3 << 777;   // раздражаемся, ибо изменять ассациативность операций крестики не умею   (7 >> (2 >> (7 >> queue)));   // ---------------------------------------   // ---------------------------------------   // варианты получения элементов из очереди   // ---------------------------------------   int a = queue.shift(), b, c;   queue >> b >> c;   std::cout << a             << std::endl             << b             << std::endl             << c             << std::endl             << queue.shift() << std::endl;   // ---------------------------------------}

Viam supervadet vadens!

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

Привет всем !!!!

Помогите мне, пожалуйста, сделать программу на си++

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

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

Здравствуйте. Помогите пожалуйста с задачей на C++:

Используя очередь, решить задачу.

TYPE имя = (Анна,..., Яков);

дети = АRRAY[имя, имя] OF BOOLEAN; потомки = FILE OF имя;

Считая заданным имя И и массив Д типа дети (Д [ X, Y ] = TRUE, если человек по имени Y является ребенком человека по имени X), записать в файл П типа потомки имена всех потомков человека с именем И в следующем порядке: сначала - имена всех его детей, затем - всех его внуков, затем - правнуков и т.д.

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

temich5000

#include<iostream>#include<fstream>#include<string>using namespace std;void input(char s[]){string p; cout<<"string? "; getline(cin,p);ofstream ifs(s); ifs<<p; ifs.close();}void output(char s[]){ifstream ifs(s); cout<<"out:"<<endl;while(!ifs.eof()){string p; getline(ifs,p); cout<<p;};cout<<endl; ifs.close();}int main(){char s1[]="input1.txt", s2[]="input2.txt", s3[]="output.txt";input(s1); input(s2);ifstream ifs1(s1), ifs2(s2); ofstream ofs(s3);while(!ifs1.eof()){string p; getline(ifs1,p); ofs<<p;};while(!ifs2.eof()){string p; getline(ifs2,p); ofs<<p;};ifs1.close(); ifs2.close(); ofs.close(); output(s3); cin.get();}

Не совсем ясно, то ли файлы есть, то ли их нет и надо создавать при помощи функции. Так или иначе, программа создает два файла input1.txt и input2.txt с вводимыми с клавиатуры строками при помощи функции input, затем считывает их и объединяет в один файл output.txt переписыванием в него содержимого первого файла и дописыванием к нему содержимого второго файла, после чего выводит содержимое получившегося файла при помощи функции output.

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

NickLid

Разработать программу формирования очереди, содержащей целые числа, и упорядочивания по возрастанию элементов в этой очереди. В процессе упорядочивания элементы очереди перемещаться не должны.
По твоей просьбе - более простой код программы.
#include <iostream>#include <list>using namespace std;int main(){list<int> qu; list<int>::iterator it;int n; cout<<"Number of elements? "; cin>>n; cout<<"Enter values: ";for(int i=0;i<n;i++){int k; cin>>k; qu.push_back(k);} qu.sort();for(it=qu.begin();it!=qu.end();++it)cout<<" "<<*it; cout<<endl; cin.get(); cin.get();}
Ссылка на комментарий
Поделиться на другие сайты

Доброго времени суток.

Прошу помощи. Извиняюсь, если что-то подобное уже писали.

Нужно написать на Си

Задание: Ввести массив вещественных чисел. Вывести все локальные максимумы и глобальный максимум.

Заранее благодарю

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

medvedkotracer

#include <stdio.h>int main(){int n,i; float m,mm,a[100]; printf("Number of elements? "); scanf("%d",&n);printf("Enter values: \n"); for(i=1;i<=n;i++)scanf("%f",&a[i]);printf("Local maximums:\n"); a[0]=a[1]; a[n+1]=a[n]; m=mm=a[0];for(i=1;i<=n;i++)if(a[i]>=a[i-1]&&a[i]>=a[i+1]){m=a[i]; printf("%10.3f",m); if(m>=mm)mm=m;}printf("\nMaximum maximorum:\n%10.3f\n",mm); getchar(); getchar(); return 0;}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

@Тролль,благодарю, всё работает.

можно ещё одно задание попросить сделать?

Опять на C.

Задание такое:

Ввести целое число N. Вывести число, полученное из введенного инверсией каждого 4-го двоичного разряда ( начиная с младших )

Ещё раз благодарю заранее

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

[...]

Опять на C.

Задание такое:

Ввести целое число N. Вывести число, полученное из введенного инверсией каждого 4-го двоичного разряда ( начиная с младших )

Ещё раз благодарю заранее

Побитовый xor же (4 байта инвертирую):

#include <stdio.h>int main(void) {   int a;   scanf("%d", &a);//  scanf("0x%x", &a);   printf("0x%x\n", 0x10101010^a);   return 0;}
Ссылка на комментарий
Поделиться на другие сайты

temich5000

Тут вообще-то и объяснять нечего...

#include<iostream>#include<fstream>#include<string>using namespace std;void input(char s[]){//функция ввода текста в файл с клавиатурыstring p; cout<<"string? "; getline(cin,p);//вводим в строку p текст с клавиатурыofstream ifs(s); ifs<<p; ifs.close();//объявляем поток вывода ifs с файлом с именем из s,//  выводим в него строку и закрываем поток}void output(char s[]){//функция вывода текста из файла на экранifstream ifs(s); cout<<"out:"<<endl;//объявляем поток ввода ifs с файлом с именем из swhile(!ifs.eof()){string p; getline(ifs,p); cout<<p;};// пока не конец файла, построчно выводим текст из потока ifs в строку p//   и выводим эту строку на экранcout<<endl; ifs.close();//переводим строку на экране и закрываем поток}int main(){char s1[]="input1.txt", s2[]="input2.txt", s3[]="output.txt";//строки с именами файловinput(s1); input(s2);//дважды вызвали функцию для создания файлов с текстамиifstream ifs1(s1), ifs2(s2); ofstream ofs(s3);//объявили два потока ввода ifs1 и ifs2 - файлы с именами из строк s1 и s2//  и поток вывода ofs в файл с именем из строки s3while(!ifs1.eof()){string p; getline(ifs1,p); ofs<<p;};// пока не конец файла, построчно вводили текст из потока ifs1 в строку p//   и выводили его в поток ofswhile(!ifs2.eof()){string p; getline(ifs2,p); ofs<<p;};//то же для потоков ifs2 и ofsifs1.close(); ifs2.close(); ofs.close();//закрыли все потоки ввода и выводаoutput(s3);//вызвали функцию вывода на экран из файла с именем из строки s3cin.get();//подождали нажатия Enter для закрытия окна вывода}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Ребят, задание. Светить его здесь не хочется, т.к. препод вполне себе может позволить поискать в интернете свои билеты (=

Очень хорошо, если поможете с заданием в течение недели. Готов обговорить вознаграждение с моей стороны. Пожалуйста, напишите в ЛС кто может помочь. Задание выдадут сегодня вечером, скорее всего по языку C. Это заочка, у меня сейчас большие напряги по работе, поэтому и прошу, я железячник в основном... программирование не совсем моё (=

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

NickLidПо твоей просьбе - более простой код программы.

#include <iostream>#include <list>using namespace std;int main(){list<int> qu; list<int>::iterator it;int n; cout<<"Number of elements? "; cin>>n; cout<<"Enter values: ";for(int i=0;i<n;i++){int k; cin>>k; qu.push_back(k);} qu.sort();for(it=qu.begin();it!=qu.end();++it)cout<<" "<<*it; cout<<endl; cin.get(); cin.get();}

А можете для неё сделать комментарии.

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

NickLid

#include <iostream>#include <list>using namespace std;int main(){list<int> qu; list<int>::iterator it;//объявляем для использования в качестве очереди список qu с элементами//  целого типа и обобщенный указатель (итератор) на его элемент для перебора их в циклеint n; cout<<"Number of elements? "; cin>>n; cout<<"Enter values: ";//вводим количество элементов и выводим подсказку для ввода их значенийfor(int i=0;i<n;i++){int k; cin>>k; qu.push_back(k);}//в цикле вводим с клавиатуры и загружаем в хвост очереди значения элементовqu.sort();//сортируем эти значенияfor(it=qu.begin();it!=qu.end();++it)cout<<" "<<*it; cout<<endl;//перебираем элементы очереди и выводим их на экранcin.get(); cin.get();//задерживаем окно вывода на экране до нажатия Enter}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Всем привет.

Помогите пожалуйста написать Шифр Цезаря на Pascal(Зашифровать в файл, и расшифровать з файла).

Только англ алфавит, пусть пользователю покажет перед началом весь алфавит, потом пусть пользователь сам задает ключ шифровки.

Заранее очень благодарен!

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

Хм, товарищ Верховный Главнокомандующий Цезарь шифровал свои приказы подстановочным кодом с простым сдвигом букв по кольцу. Ключ шифровки в шифре Цезаря - одно число: сдвиг букв в кольце. Если задавать произвольные подстановки букв, то это будет не шифр Цезаря, а просто подстановочный шифр, так что неясно, зачем печатать алфавит. Но просят - напечатаем... Кстати, сам Цезарь использовал всегда ключ 3, поскольку считал, что варвары и так не догадаются, но у нас по заданию пользователь задает свой.

var s,r:string; c:char; i,k:integer; f:text;beginfor c:='A' to 'Z' do write©; writeln;write('Name of the file? '); readln®; assign(f,r);write('Key(number)? '); readln(k);repeat write('Read® or Write(W)? '); readln©; c:=upcase© until c in['W','R'];if c='W' then begin rewrite(f); write('Text? '); readln(s); for i:=1 to length(s) dobeginc:=upcase(s[i]);if c in['A'..'Z'] then c:=chr((ord©+k-13)mod 26+65);write(f,c)end endelse begin reset(f); while not eof(f) dobeginread(f,c);if c in['A'..'Z'] then c:=chr((ord©-k-13)mod 26+65);write©end; writeln; writeln('Press the key "Enter"'); readln end;close(f);end.
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Мужики! Требуется помощь. Я выше уже писал, просто задание выдали только вчера, но и срок теперь до 14 мая.

Фото задания в прикреплённом файле. Все слова вошли, кроме нижнего левого угла, там слово алгоритм не вошло. Я на индивидуалке (т.е. по некоторым предметам мне даже лекции не читают), от такого задания у меня сразу глаза на лоб полезли и там окопались XD

Также преподаватель сказал, чтобы готовый вариант программы был скомпиллирован "вместе с библиотеками" - типа чтобы можно было запускать там, где не установлен С++ или стоит другая версия. Выполнить задание можно на С++ (желательно). Теоретически можно выполнить и на другом языке, но только в том случае, если это будет оптимальней.

Программа, как мне кажется, не из лёгких, т.ч. за помощь я готов вознаградить материально.

25042012131.jpg

post-102463-0-25190600-1335331752_thumb.

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

Доброе времени суток!

Помогите пожалуйста сделать программу на тему Дерево. На С++.

Используя рекурсию, подсчитать число вершин на n-ом уровне непустого дерева Т (корень считать вершиной нулевого уровня).

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

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

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

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

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

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

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

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

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

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

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



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