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

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


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

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;
Изменено пользователем Тролль
  • Upvote 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();}
Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Тролль

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

Ну да, потому что ты по ходу изготовления массива 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.

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

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

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

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

Вариант 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;

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

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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



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