Студентам с лабораторными сюда (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 20 Jun 2007.

Thread Status:
Not open for further replies.
  1. }I{ek

    }I{ek New Member

    Joined:
    8 Feb 2008
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0
    Друзья, помогите плз :
    с++
    Разработать программу, выполняющую операции со структурами данных, реализованными в виде связанных списков. Алгоритмы выполнения каждой операции оформить в виде функции. Программа должна содержать меню, позволяющее протестировать все операции с динамической структурой
    Элементы данных:
    Авторы – 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;
     }
     
    #341 }I{ek, 27 Mar 2008
    Last edited: 27 Mar 2008
  2. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    ????Всмысле упадет?
     
  3. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
  4. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    _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
    Ну это так дополнение:)
     
  5. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Код в студию:)
     
  6. }I{ek

    }I{ek New Member

    Joined:
    8 Feb 2008
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0
    Прошу, коментируем

    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;
    }
     
    1 person likes this.
  7. avton0m

    avton0m Elder - Старейшина

    Joined:
    15 Dec 2007
    Messages:
    35
    Likes Received:
    8
    Reputations:
    -4
    Ищется короткое решение (желательно на C/c++)
    Дана строка, состоящая только из скобок '(' и ')'
    Нужно проверить, является ли она арифметически правильной. Т.е. является ли расп. скобок верным в арифм. выражении
     
  8. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    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;
    }
    
     
    4 people like this.
  9. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    Народ помогите написать програму на "С" !!! задача таковая : С клавиатуры вводитса текст в котором слова разделены пробелом. Пробелов можеть быть как один так и несколько , надо в етом тексте найти симетрические слова(тоесть слова которые одинаково читаютса справа на лево и наоборот) и вывести их на екран .... Кто может помочь выложыте код с меня много плюсов ! )
     
  10. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Могу реализовать на DELPHI, кто нить переведет на C
    Если надо отпишись!
     
    1 person likes this.
  11. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    Давай на делфи .... Попробю перевести на "С"!!!
     
  12. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    На паскале
    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.
    
    На сях сорри, времени нет писать, как-нить сам уж
     
  13. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    2 krypt3r :
    ...спс код понятен..... жалко што на "С" нету функций "copy" "delete" ((( Ниче так попробую !!! еще раз СПС.
     
  14. TOLIA

    TOLIA Elder - Старейшина

    Joined:
    20 Aug 2007
    Messages:
    54
    Likes Received:
    9
    Reputations:
    -11
    помогите с Паскаль

    помогите сделать курсовую работу мне кому не лень:

    Ii.2 Игра «Угадай число»
    Необходимо написать программу, которая :
     приветствует пользователя;
     «загадывает» с пом,
     ощью генератора случайных чисел некоторое число (y);
     реализует диалог с пользователем (см. рис. 1);
     в зависимости от введенного пользователем числа (Х) выводит на экран сообщение «Твое число больше задуманного» или «Твоё число меньше задуманного»;
     если число Y было угадано за 5 и менее попыток, то на экран выводится сообщение «Молодец! Ты угадал число с …-й (№ попытки) попытки!», после чего происходит выход из программы;
     всего 5 попыток угадывания числа Y; если после 5-ой попытки число не угадано, то программа должна вывести на экран сообщение «Увы! Ты не смог угадать число!» и задуманное число Y, после чего происходит выход из программы;
     при выходе из программы на экран должно выводится сообщение «До свидания!» (или «До встречи!» и т. п.);
     интерфейс программы должен иметь вид как показано ниже:


















    <Результат> - это одно из сообщений:
    1) «Твоё число меньше (больше) задуманного»;
    2) «Молодец! Ты угадал число с …-й (№ попытки) попытки!»;
    3) «Увы! Ты не смог угадать число!»;
     желательно, чтобы диалоговые окна и текст в них были разных цветов.
    Iii Консультации по выполнению курсовой работы
    Внимание! Каждая часть курсовой работы на соответствующем этапе выполняется в виде самостоятельной программы, из которых потом компонуется полная программа курсовой ра-боты.
     
  15. TOLIA

    TOLIA Elder - Старейшина

    Joined:
    20 Aug 2007
    Messages:
    54
    Likes Received:
    9
    Reputations:
    -11
    короче полная работа сдесь, там написано как ее сделать http://rapidshare.com/files/103741317/i-1_cw.rar.html
     
  16. dos999

    dos999 Elder - Старейшина

    Joined:
    15 Feb 2008
    Messages:
    137
    Likes Received:
    24
    Reputations:
    0
    Tolia чел ты совсем обленился... хоть бы напечатал сам =)
    тут 2 варианта
    1. начни делать, будут вопросы задавай/спрашивай тут, думаю что многие будут тебе помогать.
    2. если вообще в паскале 0 или просто делать нехочеться, то можно за Wmz кому нить заказать

    Ps. Вряд ли кто то бесплатно тебе всё это сделает... лично я таким интузиазмом не обладаю =)
     
    1 person likes this.
  17. TOLIA

    TOLIA Elder - Старейшина

    Joined:
    20 Aug 2007
    Messages:
    54
    Likes Received:
    9
    Reputations:
    -11
    да... обленился ну щя попробую хоть что нить сделать
     
  18. Ergoproxy

    Ergoproxy Elder - Старейшина

    Joined:
    18 Jan 2008
    Messages:
    248
    Likes Received:
    155
    Reputations:
    45
    Поищи в инете там видел полно таких работ было)
     
    1 person likes this.
  19. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Вот настрогал быстренько(Вероятно код кривой - исправишь если что):
    ++++бонус++++
    :D
    :D

    Вот на 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.
    
     
    #359 De-visible, 31 Mar 2008
    Last edited: 31 Mar 2008
  20. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    Может ктото сможет перевести вышеуказаный КОД на "С" !!! Ато я пробовал и чето у меня с функцыями "copy" и "delete" ниче не выходит. Даи функцыи "pos" тоже нету (
     
Loading...
Thread Status:
Not open for further replies.