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

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


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

vampir4eg

Как вывести уже отсортированый массив в десятичном исчислении??
Отсортирован массив b, а не a. А нужно вывести отсортированный по b массив a. Надо одновременно сортировать оба массива, то есть вместо
for(int i=0;i<n;i++)for(int i=0;i<n-1;i++)    if(b[i]>b[i+1]){int r=b[i]; b[i]=b[i+1]; b[i+1]=r;}

надо сделать

for(int i=0;i<n;i++)for(int i=0;i<n-1;i++)   if(b[i]>b[i+1]){int r=b[i]; b[i]=b[i+1]; b[i+1]=r; r=a[i]; a[i]=a[i+1]; a[i+1]=r;} 
что ознаечает if (a & 1 ) count++; и a = a >> 1;
// если в последнем разряде a[i] единица, увеличиваем count на 1if (a[i] & 1 ) count++; // сдвигаем представление a[i] в двоичном коде вправо на один разрядa[i] = a[i] >> 1;
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Shatkovskiy

 #include <iostream>#include <fstream> #include <iomanip>#include <list>#include <time.h> using namespace std;template<class T> void addL1(T& L1, T& L2, T& L)   {class T::iterator it;  for(it=L1.begin(); it!=L1.end(); it++)L.push_back(*it);  for(it=L2.begin(); it!=L2.end(); it++)L.push_back(*it);}template<class T> void addL2(T& L1, T& L2){L1.merge(L2);}template<class T> void sort1(T& list) {list.sort();}int main(){srand(time(NULL)); const int n=5; double i1[n], i2[n];for(int i=0;i<n;i++){i1[i]=rand()%100; i2[i]=rand()%100;}list<double> L1(i1,i1+n), L2(i2,i2+n), L; list<double>::iterator it;cout<<"L1: "<<endl; for(it=L1.begin(); it!=L1.end(); it++)cout<<setw(4)<<*it; cout<<endl;cout<<"L2: "<<endl; for(it=L2.begin(); it!=L2.end(); it++)cout<<setw(4)<<*it; cout<<endl;addL1 <list<double> >(L1,L2,L);cout<<"L as L1 and L2 by elements: "<<endl;   for(it=L.begin(); it!=L.end(); it++)cout<<setw(4)<<*it; cout<<endl; addL2 <list<double> >(L1,L2);cout<<"L1 as the union of L1 and L2: "<<endl;   for(it=L1.begin(); it!=L1.end(); it++)cout<<setw(4)<<*it; cout<<endl;sort1 <list<double> >(L1); cout<<"L1 as sorted L1: "<<endl;   for(it=L1.begin(); it!=L1.end(); it++)cout<<setw(4)<<*it; cout<<endl;ofstream os("text.txt"); for(it=L1.begin(); it!=L1.end(); it++)os<<setw(4)<<*it; cout<<endl;os.close(); getchar();}

Для проверки генерируются два списка со случайными числами, затем они соединяются в один новый список, затем первый список удлиняется на второй список, затем объединенный список сортируется. Результаты операций выводятся на экран. Потом отсортированный объединенный список записывается в файл text.txt.

P.S. То же с несколько более красивым выводом:

 #include <iostream>#include <fstream> #include <iomanip>#include <list>#include <time.h>#define ld list<double>#define fd setw(6)<<fixed<<setprecision(1)using namespace std;template<class T> void addL1(T& L1, T& L2, T& L)   {class T::iterator it;  for(it=L1.begin(); it!=L1.end(); it++)L.push_back(*it);  for(it=L2.begin(); it!=L2.end(); it++)L.push_back(*it);}template<class T> void addL2(T& L1, T& L2){L1.merge(L2);}template<class T> void sort1(T& list) {list.sort();}int main(){const int n=5; double i1[n], i2[n]; srand(time(NULL)); for(int i=0;i<n;i++){i1[i]=rand()%1000/10.; i2[i]=rand()%1000/10.;};ld L1(i1,i1+n), L2(i2,i2+n), L; ld::iterator it;cout<<"L1: "<<endl; for(it=L1.begin(); it!=L1.end(); it++)cout<<fd<<*it; cout<<endl;cout<<"L2: "<<endl; for(it=L2.begin(); it!=L2.end(); it++)cout<<fd<<*it; cout<<endl;addL1 <ld >(L1,L2,L);cout<<"L as L1 and L2 by elements: "<<endl;   for(it=L.begin(); it!=L.end(); it++)cout<<fd<<*it; cout<<endl; addL2 <ld >(L1,L2);cout<<"L1 as the union of L1 and L2: "<<endl;   for(it=L1.begin(); it!=L1.end(); it++)cout<<fd<<*it; cout<<endl;sort1 <ld >(L1);cout<<"L1 as sorted L1: "<<endl;   for(it=L1.begin(); it!=L1.end(); it++)cout<<fd<<*it; cout<<endl;ofstream os("text.txt"); for(it=L1.begin(); it!=L1.end(); it++)os<<fd<<*it; cout<<endl;os.close(); getchar();}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Тролль

Ну я заменил и когда я вывожу массив А то выводит нули, а если В то ничего не меняется

Ну да, потому что ты по ходу изготовления массива b запортил массив a. Значит, это надо обойти, хотя бы так: вместо
while(a[i]!=0){if(a[i] & 1)count++; a[i]=a[i]>>1; b[i]=count;}

сделать

int k=a[i]; while(k!=0){if(k & 1)count++; k=k>>1; b[i]=count;}
Ссылка на комментарий
Поделиться на другие сайты

Как сделать для русского?
Надо заменить функцию upcase на свою, например,
function upcase(c:char):char;  begin if c in['a'..'z','а'..'я'] then upcase:=chr(ord©-32) else upcase:=c end;

Это надо вставить перед var

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

Спасибо большое!

Но смотри...

Когда компилирую первый вариант кода, выбивает ошибки:

1>------ Построение начато: проект: Lab8_2, Конфигурация: Debug Win32 ------1>Компиляция...1>Lab8_2.cpp1>c:\users\administrator\documents\visual studio 2008\projects\lab8_2\lab8_2\lab8_2.cpp(18) : warning C4244: аргумент: преобразование 'time_t' в 'unsigned int', возможна потеря данных1>c:\users\administrator\documents\visual studio 2008\projects\lab8_2\lab8_2\lab8_2.cpp(9) : error C2242: имя typedef не может следовать за классом, структурой или объединением1>        c:\users\administrator\documents\visual studio 2008\projects\lab8_2\lab8_2\lab8_2.cpp(25): см. ссылку на создание экземпляров функции шаблон при компиляции "void addL1<std::list<_Ty>>(T &,T &,T &)"1>        with1>        [1>            _Ty=double,1>            T=std::list<double>1>        ]1>Журнал построения был сохранен в "file://c:\Users\Administrator\Documents\Visual Studio 2008\Projects\Lab8_2\Lab8_2\Debug\BuildLog.htm"1>Lab8_2 - ошибок 1, предупреждений 1========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Пробовал колупаться сам, но у меня ничего не получается...(

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

Тролль

спасибо, есть ещё пару вопросов

Написать программу, позволяющую ввести последовательность натуральных чисел и создать из нее дек. Длина последовательности n. Обеспечить вычисление суммы и произведения вида x1*xn + x2*xn-1 + ... + xn*x1;

Создал дек ,ввёл последовательность чисел, но не могу посчитать сумму и произведение.

Как это сделать??

Type    Tinf=integer;    List=^Tlist;    Tlist = record    next:list; //указатель на первый элемент    prev:list;// на последний элемент    data:Tinf;// даные которое вводим    end;
Ссылка на комментарий
Поделиться на другие сайты

Shatkovskiy

Хм, VS у меня не установлена. На Dev-C++ все нормально. Попробуй добавить к заголовочным файлам #include "stdafx.h" и заменить main на _tmain

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

Shatkovskiy

Хм, VS у меня не установлена. На Dev-C++ все нормально. Попробуй добавить к заголовочным файлам #include "stdafx.h" и заменить main на _tmain

#include "stdafx.h" я всегда прописываю, неглядя даже)

Всё равно, спасибо огромное... Буду сидеть, мож получится допилить)

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

vampir4eg

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

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

где тут ошибка? смотреть пункт 3

 uses crt;Type    Tinf=integer;    List=^Tlist;    Tlist = record    next:list;     prev:list;    data:Tinf;     end;Var    first,last,tmp1:list;procedure AddUp(var first,last:list;znach1:integer);var tmp:list;beginbeginnew(tmp); tmp^.data:=znach1;tmp^.next:=first;tmp^.prev:=NIL;if (first<>NIL) then	first^.prev:=tmpelse	last:=tmp;first:=tmp;end;end;procedure DelUp(var first,last:list);var tmp:list;beginif (first<>NIL) then	begin		tmp:=first;		first:=first^.next;		if (first=NIL) then			last:=NIL		else			first^.prev:=NIL;		dispose(tmp);		writeln('Udaleno');	end ;end;procedure clear_dec(var first,last:list);var tmp:list;beginclrscr;repeat delup(first,last); until first=nil;end;procedure Print(first:List);begin if first=nil then begin   writeln('ïóñòo');   exit; end; while first<>nil do begin   Write(first^.data, ' ');   first:=first^.next end;end;var Stk, tmpl:List; i,znach:Tinf; ch,x,x1,sum,proiz,n:integer;begin   Writeln('1)dobavit vverh');   Writeln('2)pokazat');   Writeln('3)summa i proizvedinie');   writeln; Stk:=nil; ch:=0; repeat  read(ch);   clrscr;   Writeln('1)dobavit vverh');   Writeln('2)pokazat');   Writeln('3)summa i proizvedinie');   writeln;   case ch of     1:begin           write('Vvedite dlinu posledovatelnosti: ');           readln(n);           for i:=1 to n do           begin           writeln (i,' ','element:');           read (znach);           AddUp(first,last,znach);           end;           clrscr;            Writeln('1)dobavit vverh');            Writeln('2)pokazat');            Writeln('3)summa i proizvedinie');         end;         2:begin         print(first);         readkey;         end;         3:begin                 // здесь я пытаюсь вычислить сумму и произведения вида x1*xn + x2*xn-1 + ... + xn*x1;          while first <> nil do          begin          x:=first^.data;          first:=first^.next;          end;          while first <> nil do          begin          x1:=first^.data;          first:=first^.prev;          end;          proiz:=x*x1;          sum:=sum+proiz;          writeln(proiz);         readkey;         end;  end;          until ch=4;end.
Изменено пользователем vampir4eg
Ссылка на комментарий
Поделиться на другие сайты

Надо заменить функцию upcase на свою, например,

function upcase(c:char):char;  begin if c in['a'..'z','а'..'я'] then upcase:=chr(ord©-32) else upcase:=c end;

Это надо вставить перед var

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

Получилась такая программка:

function upcase(c:char):char;begin if c in ['a'..'z','а'..'я'] then upcase:=chr(ord©-32) else upcase:=c end;varS:string;i:integer;beginwrite('Введите строку : '); readln(S);for i:=1 to Length(S) do S[i]:=upcase(S[i]);write('Результат ',S);readlnend.

Как работает программа:

1.JPG

post-110959-0-81886100-1323169335_thumb.

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

vampir4eg

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

Во-вторых, когда у тебя будет реализована распечатка в обратном напрвлении, для вычисления суммы произведений надо ОДНОВРЕМЕННО перебирать дек вниз и вверх в одном цикле, чтобы номера ОБОИХ элементов корректировались каждый раз.

AntonyDed

Это что-то с русификацией Windows, похоже. Попробуй распечатать все символы в твоей кодовой таблице по их номерам, скажем,

var i:integer; begin for i:=32 to 255 do write(chr(i):4); writeln; readln end.

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

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

AntonyDed

Это что-то с русификацией Windows, похоже. Попробуй распечатать все символы в твоей кодовой таблице по их номерам, скажем,

var i:integer; begin for i:=32 to 255 do write(chr(i):4); writeln; readln end.

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

Правда не на месте.

Просто главное, чтобы эта программа работала не у меня дома, а на рабочем компе, на котором будет все проверяться (

По сути-то все правильно

2.JPG

post-110959-0-73045100-1323180971_thumb.

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

AntonyDed

Ну так сделай

function upcase(c:char):char; begin upcase:=c; if c in['a'..'z','а'..'п'] then upcase:=chr(ord©-32); if c in['р'..'я'] then upcase:=chr(ord©-80); end;

Скорее всего, раз на твоем компе будет работать, то и на рабочем компе будет работать.

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

Здравствуйте. Помогите пожалуйста.

Такая задача C++:

Приближенное вычисление интегралов методом Newton-Cotes : 3 открытых узел

Спасибо

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

Может есть у кого АВЛ-дерево?? особенно надо процедура удаления всех листьев указанного диапазона. PASCAL ABC.

в интернете не могу найти нормальный код АВЛ дерева, а тем более удаления листьев:(

P.S сор если не в тот раздел написал

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

vampir4eg

Maikl Korleone выкладывал код в этом посте, правда, на С++. Конечно, перевести на Pascal требует времени, но работа рутинная.

P.S. Тут есть на Delphi, который ближе к PascalABC, но это не Майкл писал, поэтому работоспособность не гарантируется...

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

Здравствуйте. Помогите пожалуйста

1. Разработайте программу, которая считывает с клавиатуры строку текста и шифрует его, выводя сначала все четные символы, а затем нечетные в обратном порядке. Шифрограмма не только выводится на экран, но и записывается в файл

2. Разработайте программу, которая считывает шифрограмму (задание 1) расшифровывает ее, выводит на экран и записывает в файл.

Все в паскале

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

anton-dida1

1

var i,k:integer; p,s:string; fi:text;beginreadln(s); p:=s; k:=length(s);for i:=1 to k do if odd(i) then p[k-i div 2]:=s[i] else p[i div 2]:=s[i]; writeln(p); assign(fi,'cipher.txt'); rewrite(fi); writeln(fi,p); close(fi); readlnend.

2

var i,k:integer; p,s:string; fi:text;beginassign(fi,'cipher.txt'); reset(fi); readln(fi,p); close(fi); s:=p; k:=length(p);for i:=1 to k do if odd(i) then s[i]:=p[k-i div 2] else s[i]:=p[i div 2]; writeln(s);assign(fi,'text.txt'); rewrite(fi); writeln(fi,s); close(fi); readlnend.

Первая программа шифрует введенную строку, выводит шифровку на экран и записывает ее в файл cipher.txt, вторая считывает этот файл, выводит расшифрованную строку на экран и записывает ее в файл text.txt

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

По информатике задали вот такое

Вариант 8. Учет потребности в деталях на план выпуска

1. Создать таблицы:

Таблица 1. Справочник изделий

Структура таблицы: Код изделия, Наименование изделия, Стоимость сборки

Таблица 2. Справочник деталей

Структура таблицы: Код детали, Наименование детали, Цена

Таблица 3. План выпуска

Структура таблицы: Код изделия, Количество изделий

Таблица 4. Состав изделия

Структура таблицы: Код изделия, Код детали, Количество деталей в изделии

2. Ввести в таблицу 1 сведения о пяти изделиях, в таблицу 2 - данные о 10-ти деталях, которые используются при сборке изделий, в таблицу 3 – данные о плане выпуска пяти изделий (код изделия должен выбираться из поля со списком).

3. Создать форму «Состав изделия» типа главная/подчиненная для просмотра и ввода данных в таблицу 4. Каждое изделие должно содержать не менее трех деталей. Главная форма должна содержать поля: Код изделия, Наименование изделия. Подчиненная форма должна иметь табличный вид и содержать строки с полями: Код детали, Количество деталей в изделии. Значение поля Код детали должно выби-раться из поля со списком.

4. Создать форму «Потребность в детали на план выпуска изделий». Код детали должен выбираться из списка. Форма должна иметь табличный вид и содержать графы: Код изделия, Наименование изделия, Количество изделий, Потребность в детали на план выпуска изделия. В форме должно вычисляться общую потребность в детали на весь план выпуска.

5. Создать итоговый отчет «План выпуска в стоимостном выражении». Отчет должен содержать графы: Код изделия, Наименование изделия, Количество изделий, Стоимость деталей, Стоимость сборки, Стоимость всего. Отчет должен содержать итоговые стоимости деталей, сборки и всего на весь план выпуска.

Буду признателен, если сделаете

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

вообщем добавление и вывод в авл дерево я смог сделать,но процедуру которое удаляет все листья АВЛ–дерева, попадающие в заданный диапазон значений не как не выходит. Помогите пожайлусто доделать её.

uses crt;type TKey = integer; TBalance = -1..1; AVLTree = ^AVLNode; AVLNode = record   left, right: AVLTree;   key: TKey;    { Поле определяющее сбалансированность вершины }   balance: TBalance; end;var tree: avltree; i, n, akey: integer; flag: boolean;procedure InsertNode(var Tree: AVLTree; const akey: TKey; var flag: Boolean);var Node1, Node2: AVLTree;begin if Tree = nil then begin   New(Tree);   flag := true;   with Tree^ do   begin     key := akey;     left := nil;     right := nil;     balance := 0;   end; end else if Tree^.key > akey then begin   InsertNode(Tree^.left, akey, flag);   if flag then     case Tree^.balance of       1: begin Tree^.balance := 0; flag := false; end;       0: Tree^.balance := -1;       -1: { Balance }         begin           Node1 := Tree^.left;           if Node1^.balance = -1 then           { LL }           begin             Tree^.left := Node1^.right;             Node1^.right := Tree;             Tree^.balance := 0;             Tree := Node1;           end           else           {LR}           begin             Node2 := Node1^.right;             Node1^.right := Node2^.left;             Node2^.left := Node1;             Tree^.left := Node2^.right;             Node2^.right := Tree;             if Node2^.balance = -1 then Tree^.balance := 1 else Tree^.balance := 0;             if Node2^.balance = 1 then Node1^.balance := -1 else Node1^.balance := 0;             Tree := Node2;           end;           Tree^.balance := 0;           flag := false         end     end end else if Tree^.key < akey then begin   InsertNode(Tree^.right, akey, flag);   if flag then     case Tree^.balance of       -1: begin Tree^.balance := 0; flag := false; end;       0: Tree^.balance := 1;       1: { Balance }         begin           Node1 := Tree^.right;           if Node1^.balance = 1 then           { RR }           begin             Tree^.right := Node1^.left;             Node1^.left := Tree;             Tree^.balance := 0;             Tree := Node1;           end           else           {RL}           begin             Node2 := Node1^.left;             Node1^.left := Node2^.right;             Node2^.right := Node1;             Tree^.right := Node2^.left;             Node2^.left := Tree;             if Node2^.balance = 1 then Tree^.balance := -1 else Tree^.balance := 0;             if Node2^.balance = -1 then Node1^.balance := 1 else Node1^.balance := 0;             Tree := Node2;           end;           Tree^.balance := 0;           flag := false         end     end endend;procedure Lkp(Tree: AvLTree);begin if Tree = nil then   exit; Lkp(Tree^.left); write('  ', Tree^.key); Lkp(Tree^.right);end;begin writeln('кол-во элементов'); readln(n); for i := 1 to n do begin   writeln('Введите',' ',i,'-e',' ','число');   readln(akey);   InsertNode(Tree, akey, flag); end; writeln(''); lkp(tree);end.

И помогите доделать вторую задачку :Алгоритм лексикографической сортировки последовательности цепочек одинаковой длины

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

0c3c9939b1c987093fd84c91065f016f.jpeg

и вот моя очередь

Program Stek;uses crt;type Tinf=integer; List=^TList; TList=record   data:TInf;   next:List; end;var beginO,endO :list;    count:integer;    n:integer;    znach:Tinf;Procedure writeO(Var BeginO, EndO :list; znach1: integer);Var tmp:list;Begin new(tmp); tmp^.Data := znach1; tmp^.Next := Nil; if BeginO = Nil {проверяем, пуста ли очередь}   then     BeginO := tmp {ставим указатель начала очереди на первый созданный элемент}   else     EndO^.Next :=tmp; {ставим созданный элемент в конец очереди}     count:=count+1; EndO :=tmp; {переносим указатель конца очереди на последний элемент}End;Procedure readO(Var BeginO :list; Var znach1 : integer);Var tmp:list;Function FreeO(x1 :list): boolean;Begin FreeO := (x1 = Nil);End;Begin if FreeO(BeginO)   then     writeln('Очередь пуста')   else     begin       znach1:= BeginO^.Data; {считываем искомое значение в переменную с}       tmp:= BeginO; {ставим промежуточный указатель на первый элемент очереди}       BeginO := BeginO^.Next;{указатель начала переносим на следующий элемент}       count:=count-1;       dispose(tmp); {освобождаем память, занятую уже ненужным первым элементом}       writeln('udaleno')     end;End;procedure Print(BeginO:List);begin if BeginO=nil then begin   writeln('пустo');   exit; end; while BeginO<>nil do begin   Write(BeginO^.data, ' ');   BeginO:=BeginO^.next end;end;

Очень нужна ваша помощь. Заранее спасибо!

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

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

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

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

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

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

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

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

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

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

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



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