Друзья, помогите плз : с++ Разработать программу, выполняющую операции со структурами данных, реализованными в виде связанных списков. Алгоритмы выполнения каждой операции оформить в виде функции. Программа должна содержать меню, позволяющее протестировать все операции с динамической структурой Элементы данных: Авторы – 20 символов, название - 20 символов, год издания – целое число Структуры данных: Дек с ограниченным входом Добавление элемента слева, проверка дека на отсутствие в нем элементов, удаление элемента справа, удаление элемента слева, получение значения левого элемента, удаление всех элементов, сравнение двух деков, вывод дека Реализовать ввиде Связанного двунаправленного линейного списка я часть написал но не уверен((( Code: #include <iostream.h> #include <conio.h> #include <string.h> #include <stdlib.h> string rus(char s[ ]); struct book { char avtor[20]; char name[20]; int year; }; struct element { book info; element *next; element *prev; }; void add_l(element *&list,element *&list2); // 1 bool empty(element *&list); // 2 void del_r(element *&list,element *&list2); // 3 void del_l(element *&list,element *&list2); // 4 void output_l(element *&list,element *&list2); // 5 void del(element *&list,element *&list2); // 6 bool compayer(element *&list,element *&list2); // 7 void output(element *list); // 8 void menu(); int main() { int i; element *in=NULL; element *inout=NULL; while(true) { menu(); cin>>i; clrscr(); switch(i) { case 1: add_l(in,inout); break; case 2: empty(in); break; case 3: del_r(inout,in); break; case 4: del_l(in,inout); break; case 5: output_l(in,inout); break; case 6: del(in,inout); break; case 7: compayer(in,inout); break; case 8: output(inout); break; default: cout<<rus("\nневерный номер.\n"); case 0: return 0; } } } void add_l(element *&list,element *&list2) { element *t; t=new element; cout<<rus("введите автора: ")<<endl; cin.get(); cin.getline(t->info.avtor,20); cout<<rus("введите название: ")<<endl; cin.getline(t->info.name,20); cout<<rus("веедите год: ")<<endl; cin>>t->info.year; if(list==NULL) { list2=list=t; t->next=0; t->prev=0; } else { list->prev=t; t->prev=0; t->next=list; list=t; } } bool empty(element *&list) { if(list==0) {cout<<rus("дук пуст."); return true;} {return false;} } void del_r(element *&list2,element *&list) { element *p; if(!empty(list)) if(list==list2) { p=list2; list=list2=0; delete p; } else { p=list2; list2=list2->prev; list2->next=0; delete p; } } void del_l(element *&list2,element *&list) {} void output_l(element *&list,element *&list2) { if(!empty(list)) { cout<<rus("автор: ")<<list->info.avtor<<endl; cout<<rus("название: ")<<list->info.name<<endl; cout<<rus("год: ")<<list->info.year<<endl; cout<<"---------------------------------------------"<<endl; cout<<"--------------------OK-----------------------"; } } void del(element *&list2,element *&list) { while(!empty(list)) del_r(list2,list); del_l(list2,list); } bool compayer(element *&list,element *&list2) {} void output(element *list) { if(!empty(list)) { element *t; t=list; while(t!=0) { cout<<rus("Автор: ")<<t->info.avtor<<endl; cout<<rus("название: ")<<t->info.name<<endl; cout<<rus("год: ")<<t->info.year<<endl; cout<<"*********************************************"<<endl; t=t->next; } cout<<"---------------------------------------------"<<endl; cout<<"--------------------OK-----------------------"; } } void menu() { cout<<rus("\n Выберите:\n"); cout<<rus("\n1. Добавление элемента слева."); cout<<rus("\n2. проверка дека на отсутствие в нем элементов"); cout<<rus("\n3. удаление элемента справа."); cout<<rus("\n4. удаление элемента слева."); cout<<rus("\n5. получение значения левого элемента."); cout<<rus("\n6. удаление всех элементов."); cout<<rus("\n7. сравнение двух деков."); cout<<rus("\n8. вывод дека."); cout<<rus("\n0. завершение проги."); cout<<rus("\n\n выберите:"); } string rus(char s[ ]) // Перевод кодировки из Windows в Dos { string t; int i=0; t=s; while (t[i]!=0) { if(t[i]>='A'&& t[i]<='п' ) t[i]-=64; if(t[i]>='p'&& t[i]<='я' ) t[i]-=16; i++; } return t; }
_http://www.cyberguru.ru/programming/delphi/delphi-components-part1-page11.html _http://www.delphisources.ru/pages/faq/base/kol_date_time_functions.html _http://wm-help.net/books-online/book/1492/1492-10.html Ну это так дополнение
Прошу, коментируем Code: #include <iostream.h> #include <conio.h> #include <string.h> #include <stdlib.h> string rus(char s[ ]); struct book { char avtor[20]; char name[20]; int year; }; struct element { book info; element *next; element *prev; }; void add_l(element *&list,element *&list2); // 1 bool empty(element *&list); // 2 void del_r(element *&list2,element *&list); // 3 void del_l(element *&list,element *&list2); // 4 void output_l(element *&list,element *&list2); // 5 void del(element *&list,element *&list2); // 6 void output(element *list); // 7 void menu(); int main() { int i; element *in=NULL; element *inout=NULL; while(true) { menu(); cin>>i; clrscr(); switch(i) { case 1: add_l(in,inout); break; case 2: empty(in); break; case 3: del_r(inout,in); break; case 4: del_l(in,inout); break; case 5: output_l(in,inout); break; case 6: del(inout,in); break; case 7: output(in); break; default: cout<<rus("\nневерный номер.\n"); case 0: return 0; } } } void add_l(element *&list,element *&list2) { element *t; t=new element; cout<<rus("введите автора: ")<<endl; cin.get(); cin.getline(t->info.avtor,20); cout<<rus("введите название: ")<<endl; cin.getline(t->info.name,20); cout<<rus("веедите год: ")<<endl; cin>>t->info.year; if(list==NULL) { list2=list=t; t->next=0; t->prev=0; } else { list->prev=t; t->prev=0; t->next=list; list=t; } } bool empty(element *&list) { if(list==0) {cout<<rus("дек пуст."); return true;} else {return false;} } void del_r(element *&list2,element *&list) { element *p; if(!empty(list)) if(list==list2) { p=list2; list=list2=0; delete p; } else { p=list2; list2=list2->prev; list2->next=0; delete p; } } void del_l(element *&list,element *&list2) { element *p; if(!empty(list)) if(list==list2) { p=list; list=list2=0; delete p; } else { p=list; list=list->next; list->prev=0; delete p; } } void output_l(element *&list,element *&list2) { if(!empty(list)) { cout<<rus("автор: ")<<list->info.avtor<<endl; cout<<rus("название: ")<<list->info.name<<endl; cout<<rus("год: ")<<list->info.year<<endl; cout<<"---------------------------------------------"<<endl; cout<<"--------------------OK-----------------------"; } } void del(element *&list2,element *&list) { while(!empty(list)) del_r(list2,list); } void output(element *list) { if(!empty(list)) { element *t; t=list; while(t!=0) { cout<<rus("Автор: ")<<t->info.avtor<<endl; cout<<rus("Название: ")<<t->info.name<<endl; cout<<rus("Год издания: ")<<t->info.year<<endl; cout<<"*********************************************"<<endl; t=t->next; } } } void menu() { cout<<rus("\n Выберите:\n"); cout<<rus("\n1. Добавление элемента слева."); cout<<rus("\n2. проверка дека на отсутствие в нем элементов"); cout<<rus("\n3. удаление элемента справа."); cout<<rus("\n4. удаление элемента слева."); cout<<rus("\n5. получение значения левого элемента."); cout<<rus("\n6. удаление всех элементов."); cout<<rus("\n7. вывод дека."); cout<<rus("\n0. завершение проги."); cout<<rus("\n\n выберите:"); } string rus(char s[ ]) // Перевод кодировки из Windows в Dos { string t; int i=0; t=s; while (t[i]!=0) { if (t[i]>='А' && t[i]<='п') t[i]-=64; if (t[i]>='р' && t[i]<='я') t[i]-=16; i++; } return t; }
Ищется короткое решение (желательно на C/c++) Дана строка, состоящая только из скобок '(' и ')' Нужно проверить, является ли она арифметически правильной. Т.е. является ли расп. скобок верным в арифм. выражении
Code: bool check_str(char *str) { int cnt=0; for(int i=0;*(str+i)!=0;i++) if(*(str+i)=='(') { cnt++; } else if(*(str+i)==')') { if(cnt>0) cnt--; else return false; } if(cnt==0) return true; else return false; }
Народ помогите написать програму на "С" !!! задача таковая : С клавиатуры вводитса текст в котором слова разделены пробелом. Пробелов можеть быть как один так и несколько , надо в етом тексте найти симетрические слова(тоесть слова которые одинаково читаютса справа на лево и наоборот) и вывести их на екран .... Кто может помочь выложыте код с меня много плюсов ! )
На паскале Code: program palindrom; function ReverseStr (s : string) : string; var i, j, len : integer; s2 : string; begin s2 := s; len := length (s); i := 1; j := len; while i <= len do begin s2 [i] := s [j]; i := i + 1; j := j - 1; end; ReverseStr := s2; end; var s, s1, s2 : string; len, i, j, p : integer; begin writeln ('Vvedite stroku, razdelennuyu probelami:'); readln (s); repeat p := pos (' ', s); if p <> 0 then begin s1 := Copy (s, 1, p - 1); delete (s, 1, p); write (s1, ' - '); s2 := ReverseStr (s1); if (s1 = s2) then writeln ('Palindrom') else writeln ('Ne-a, ne palindrom'); end; until p = 0; end. На сях сорри, времени нет писать, как-нить сам уж
2 krypt3r : ...спс код понятен..... жалко што на "С" нету функций "copy" "delete" ((( Ниче так попробую !!! еще раз СПС.
помогите с Паскаль помогите сделать курсовую работу мне кому не лень: Ii.2 Игра «Угадай число» Необходимо написать программу, которая : приветствует пользователя; «загадывает» с пом, ощью генератора случайных чисел некоторое число (y); реализует диалог с пользователем (см. рис. 1); в зависимости от введенного пользователем числа (Х) выводит на экран сообщение «Твое число больше задуманного» или «Твоё число меньше задуманного»; если число Y было угадано за 5 и менее попыток, то на экран выводится сообщение «Молодец! Ты угадал число с …-й (№ попытки) попытки!», после чего происходит выход из программы; всего 5 попыток угадывания числа Y; если после 5-ой попытки число не угадано, то программа должна вывести на экран сообщение «Увы! Ты не смог угадать число!» и задуманное число Y, после чего происходит выход из программы; при выходе из программы на экран должно выводится сообщение «До свидания!» (или «До встречи!» и т. п.); интерфейс программы должен иметь вид как показано ниже: <Результат> - это одно из сообщений: 1) «Твоё число меньше (больше) задуманного»; 2) «Молодец! Ты угадал число с …-й (№ попытки) попытки!»; 3) «Увы! Ты не смог угадать число!»; желательно, чтобы диалоговые окна и текст в них были разных цветов. Iii Консультации по выполнению курсовой работы Внимание! Каждая часть курсовой работы на соответствующем этапе выполняется в виде самостоятельной программы, из которых потом компонуется полная программа курсовой ра-боты.
короче полная работа сдесь, там написано как ее сделать http://rapidshare.com/files/103741317/i-1_cw.rar.html
Tolia чел ты совсем обленился... хоть бы напечатал сам =) тут 2 варианта 1. начни делать, будут вопросы задавай/спрашивай тут, думаю что многие будут тебе помогать. 2. если вообще в паскале 0 или просто делать нехочеться, то можно за Wmz кому нить заказать Ps. Вряд ли кто то бесплатно тебе всё это сделает... лично я таким интузиазмом не обладаю =)
Вот настрогал быстренько(Вероятно код кривой - исправишь если что): ++++бонус++++ Вот на Delphi накарякал Code: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var comp,chel:integer; i:integer; procedure TForm1.Button1Click(Sender: TObject); begin Randomize; comp:=random(10); i:=0; end; procedure TForm1.Button2Click(Sender: TObject); begin i:=i+1; chel:=StrToInt(edit1.Text); If chel>comp then Begin ShowMessage('Попытка номер '+IntToStr(i)+#10+'Это число меньше '+Edit1.Text); end; If chel<comp then Begin ShowMessage('Попытка номер '+IntToStr(i)+#10+'Это число больше '+Edit1.Text); end; If chel=comp then Begin ShowMessage('Попытка номер '+IntToStr(i)+#10+'Ты угадал это число! '+Edit1.Text); ShowMessage('Выходим'); Form1.Close; end; end; end.
Может ктото сможет перевести вышеуказаный КОД на "С" !!! Ато я пробовал и чето у меня с функцыями "copy" и "delete" ниче не выходит. Даи функцыи "pos" тоже нету (