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

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

Thread Status:
Not open for further replies.
  1. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    т.к я в асме ну почти что 0
    надо помочь
     
  2. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    2 NeOz

    через строку символов решается тривиально
    ... примерно так:
    Code:
    unsigned char str[100];
    unsigned char tempbuf[800];
    unsigned char buf[10];
    unsigned char rezult[100];
    int i,j,k;
    unsigned long l;
    
    strcpy(str,"Bugtrack for guru!!!!");
    for(i=0;*(str+i)!=0;i++)
    {
        itoa(*(str+i),buf,2);
        for(j=0;j<8-strlen(buf);j++)
          strcat(tempbuf,"0");
        strcat(tempbuf,buf);
    }
    for(i=0,j=0,buf[7]=0;*(tempbuf+i)!=0;i+=7,j++)
    {
         memmove(buf,tempbuf+i,7);
         rez[j]=(unsigned char )strtoul(buf,0,2);
    }
    
    код не проверял! Проверь!
     
    #582 Delimiter, 2 Jun 2008
    Last edited: 3 Jun 2008
  3. CrazyStudentS_Mi}{

    CrazyStudentS_Mi}{ Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    424
    Likes Received:
    296
    Reputations:
    92
    "вывести упорядоченное бинарное дерево послойно, начиная с корня, сначала исходное, а затем - после удаления указанного слоя" прошу помочь исходниками или мануалами чтобы самому разобраться, если есть что дельного предложить то стучите в асю на аватарке
     
  4. Karapuziko

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

    Joined:
    20 Jan 2008
    Messages:
    32
    Likes Received:
    14
    Reputations:
    3
    Здравствуйте уважаемые!Помогите решить:

    [​IMG]
    ----------------------------------------
    [​IMG]
    ----------------------------------------
    [​IMG]
    Заранее очень благодарен!
    Язык программирования ПАСКАЛЬ!
     
    1 person likes this.
  5. Serios

    Serios New Member

    Joined:
    20 Apr 2008
    Messages:
    2
    Likes Received:
    2
    Reputations:
    0
    в универе дали задание, для допуска к экзамену.
    Создать виндоуз-приложение "Учет автотранспортных перевозок по заказчику"
    предусмотреть:
    1. Создание входного файла
    Справочник марок автомобилей (код марки автомобиля, марка автомобиля, стоимость перевозки одного ткм)
    Автомобили (инвентарный номер, код марки автомобиля)
    Заказчики (код заказчика, Наименование заказчика, адрес, телефон)
    2. На основе данных входных файлов и заданного в форме кода заказчика, инвентарного номера авто и введенных в форме Массы груза и Расстояния, номера заказа и тады заказа получение выходного файла Заказы (номер заказа, дата заказа, код заказчика, инвентарный номер авто, масса груза в т, расстояние км)
    3. Выводим стоимость заказа по заданному коду заказчика
    4. Создание меню для выполнения всех указанных в задании пунктов.

    делать нужно в байсике. кому не трудно =)
     
    #585 Serios, 3 Jun 2008
    Last edited: 3 Jun 2008
  6. A2GIL

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

    Joined:
    31 Aug 2007
    Messages:
    84
    Likes Received:
    59
    Reputations:
    -3
    2 CrazyStudentS_Mi}{

    Здесь я писал бинарные деревья. Есть необходимые тебе функции (Delphi)

    Скачать (~36kb)

    P.S. Призываю нуждающихся в помощи указывать язык прогроммирования!

    2 Karapuziko

    Code:
    uses
      Crt;
    
    const
     a=20.3;
      var
       f,x:real;
       res_sin,arg_sin:real;
    
    function Log(x, b: Real): Real;
     begin
       Result := ln(x) / ln(b);
     end;
    
    function Rus(mes:string):string;
     var
       i:integer;
    begin
       for i:=1 to length(mes) do
         case mes[i] of
           'А'..'п': mes[i]:=Chr(Ord(mes[i])-64);
           'р'..'я': mes[i]:=Chr(Ord(mes[i])-16);
         end;
      rus:=mes;
    end;
    
    begin
    {Первая задача}
     writeln('=======================================================');
     write(rus('Введите значение аргумента : '));readln(x);
      if x>1 then f:=log((x+1),10)
     else
      f:=sqr(sin(sqrt(abs(a*x))));
      write(rus('Значение функции : '));writeln(f);
    {Вторая задача}
     arg_sin:=0.1;
     res_sin:=(1+sin(arg_sin));
      while arg_sin<9.9 do
       begin
       arg_sin:=arg_sin+0.1;
       res_sin:=res_sin*(1+sin(arg_sin));
       end;
     writeln('=======================================================');
     write(rus('Вычисление прогресии : ')); Write(rus('Ответ : ')); Writeln(res_sin);
     writeln('=======================================================');
      readln;
    end.
    
    В Паскале не писал, но должно быть так :)
     
    #586 A2GIL, 3 Jun 2008
    Last edited: 3 Jun 2008
    2 people like this.
  7. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Почти так

    Code:
    function Log(x, b: Real): Real;
     begin
       Log := ln(x) / ln(b);
     end;
    
    =========

    De-visible: просто он видимо на DELPHI кодить привык...
     
    #587 0verbreaK, 4 Jun 2008
    Last edited by a moderator: 4 Jun 2008
  8. plat

    plat New Member

    Joined:
    4 Jun 2008
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Помогите пожалуйста написать программу на С++,срочно...
    Надо решить головоломку
    Send
    +more
    ---------
    Money, здесь каждой букве соответствует какое-то 1 число..надо найти соответствие..
    Заранее спасибо...(есть уже некоторые известные M=1, S=8, О=0)...
     
    1 person likes this.
  9. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    2 plat

    1000*s+100*e+10*n+d+1000*m+100*o+10*r+e=10000*m+1000*o+100*n+10*e+y
    индексируем переменные
    s-> a[0]
    e-> a[1]
    n-> a[2]
    d-> a[3]
    m-> a[4]
    o-> a[5]
    r-> a[6]
    y-> a[7]

    далее простая рекурсия с глубиной 8 шагов
    Code:
    int a[8];
    void step(int cur)
    {
       int i,j,fl;
      if(cur<8)
      {
       for(i=0;i<10;i++)
       {
          for(j=0,fl=0;j<cur && fl==0;j++)
           if(a[j]==i)
             fl=1;
           if(fl==0)
           {
              a[cur]=i;
              step(cur+1);
           }
       }
      }
      else
      {
        if(1000*a[0]+100*a[1]+10*a[2]+a[3]+1000*a[4]+100*a[5]+10*a[6]+a[1]==10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7])
        {
           // тут вываливай результат ... он в массиве
        }
      }
    }
    
     
    #589 Delimiter, 5 Jun 2008
    Last edited: 5 Jun 2008
    1 person likes this.
  10. plat

    plat New Member

    Joined:
    4 Jun 2008
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    спасибо большое!!! а можно чуть чуть поподробнее про программу...нам пытались дать весь С++ за 3 мес. и многое пока непонятно
     
  11. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    Код дан в рамках Си (Керниган и Ритчи)
    Code:
    #include "stdio.h"
    
    int a[8]; // массив в котором подбираем цифры (хотя они в виде чисел)
    void step(int cur)
    {
       int i,j,fl;
      if(cur<8) // проверяю не пора ли заканчивать
      {
       for(i=0;i<10;i++) // подбираю цифру
       {
          for(j=0,fl=0;j<cur && fl==0;j++) // проверяю не было ли такх цифр
           if(a[j]==i)
             fl=1;
           if(fl==0)
           {
              a[cur]=i;
              step(cur+1); // ухожу в глубь
           }
       }
      }
      else
      {  // тут самое важное! Проверяю соответствуют ли цифры основному условию
        if((1000*a[0]+100*a[1]+10*a[2]+a[3]+1000*a[4]+100*a[5]+10*a[6]+a[1])==(10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7]))
        {
           printf("\r\nРезультат:\r\n");
           printf("s->%d\r\n",a[0]);
           printf("e->%d\r\n", a[1]);
           printf("n->%d\r\n", a[2]);
           printf("d->%d\r\n", a[3]);
           printf("m->%d\r\n", a[4]);
           printf("o->%d\r\n", a[5]);
           printf("r->%d\r\n", a[6]);
           printf("y->%d\r\n", a[7]);
        }
      }
    }
    void main()
    {
      step(0);
    }
    
     
    #591 Delimiter, 5 Jun 2008
    Last edited: 5 Jun 2008
  12. plat

    plat New Member

    Joined:
    4 Jun 2008
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Огромнейшее спасибо!!!!
     
  13. plat

    plat New Member

    Joined:
    4 Jun 2008
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Помогите пожалуйста написать еще одну программу на С++...для меня она совсем неподъемная...
    надо решить следующую задачу:
    есть некая прямоугольная площадь...она разделена на 6 квадратов..5 из них заняты мебелью,а шестая свободна. надо переставить мебель так, чтобы шкаф и кресло поменялись местами,при этом никакие 2 предмета не могут стоять на 1 квадрате...
    расположение мебели следующее:
    _____________
    стол|стул|шкаф|
    _____________
    стул| |кресло|

    надо чтобы программа сама находила решение...т.е. искала как должна двигаться мебель...и чтобы движения выводились в какой-нибудь файл...и эту программу необходимо сделать обязательно используя классы..
     
  14. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    хммм .... классы тут как-то боком!
    их придется впихивать совсем без их преимуществ


    давай набросаю суть а ты ее засунешь хоть в классы , хоть в мусорку!

    будем обозначать символами
    a-кресло(arm chair)
    c-стул(chair)
    t-стол(table)
    s-шкаф(shelves)

    Code:
    #defane MAX_STEPS 50
    char a[3][3]; //третий ряд забит нулями
    char steps[MAX_STEPS][7];
    char rez[3][3];
    
    int abs(int numb)   // просто извращаюсь...
    {
       if(numb<0)
         return numb*(-1);
       else
        return numb;
    }
    void step(int step,int pusto_x,int pusto_y)
    {                 // step -текущая глубина рекурси
                      // pusto_x - координата пустого места
                     // pusto_y - координата пустого места
       int i,j,k;
       if(steps<MAX_STEPS-1)
       {
          for(i=0;i<2;i++)
             for(j=0;j<3;j++)
               if(i!=pusto_y || j!=pusto_x) // проверяю чтоб счетчики
                                                           // не совпадали с пустой клеткой
                 if(i==pusto_y || j==pusto_x)     // проверяю на условие движения
                  if(abs(pusto_x-j)==1)               // через клетку не прыгать              
                  {
                     // могем менять местами
                     a[pusto_y][pusto_x]=a[i][j];
                     a[i][j]=' ';                              // передвигаю чегото
                     for(k=0,fl=0;k<MAX_STEPS && k<step && fl==0;k++)
                     if(strcmp(a,rez)==0)            // проверяю не встречалось ли
                        fl=1;                                 // данное расположение
                     if(strcmp(a,rez)==0)           // проверяю не получили ли мы то что 
                     {                                        // нужно достичь
                         // вываливай весь steps
                         // хоть в файл хоть на печать 
                         fl=1;
                     }
                     if(fl==0)
                     {
                       strcpy((char *)&steps[step][0],a); // записываю ход
                       step(step+1,j,i);                       // уход в глубь
                       // стирать ход не нужно поскольку ПЕРЕЗАПИСЬ
                     }
                     a[i][j]=a[pusto_y][pusto_x]; // востанавливаю предыдущее
                     a[pusto_y][pusto_x]=' ';       // состояние
                  } 
      }
       else
         return ; // возврат если перебор по глубине
    }
    
    void main()
    {
      int i,j;
      // подготавливаем массивы
      for(i=0;i<MAX_STEPS;i++)
        strcpy((char *)&steps[i][0],"");
      a[0][0]='t'; // исходный массив
      a[0][1]='c';
      a[0][2]='s';
      a[1][0]='c';
      a[1][1]=' ';
      a[1][2]='a';
      a[2][0]=0;  // забиваем нулями для того чтобы
      a[2][1]=0;  // сформировалась идентифицирующая строка
      a[2][2]=0;
       rez[0][0]='t'; // массив который нужно получить
       rez[0][1]='c';
       rez[0][2]='a';
       rez[1][0]='c';
       rez[1][1]=' ';
       rez[1][2]='s';
       rez[2][0]=0;  // забиваем нулями с целью как и
       rez[2][1]=0;  // для массива a
       rez[2][2]=0;
      steps(0,1,1);
    }
    
    КОД НЕ ПРОВЕРЯЛ!!! БИЛ ПРЯМО В ОКНО СООБЩЕНИЙ!

    ну мне простительно у меня репутация маленькая :D
    да и решение таких задач тут дешево стоит!
     
    #594 Delimiter, 5 Jun 2008
    Last edited: 6 Jun 2008
    1 person likes this.
  15. Catsy

    Catsy New Member

    Joined:
    26 Apr 2008
    Messages:
    14
    Likes Received:
    1
    Reputations:
    0
    помогите пожалуйста
    (паскаль)

    1) сумма с точностью
    Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
    [​IMG]

    2) рекурсия
    Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
    [​IMG]
    Вычисление выражения под знаком суммы выполнить через рекурсию.
     
  16. 043nKRuT0y

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

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    Народ помогите решить проблему ! Вообщем приведенная ниже программа должна сортировать массив рандомных чисел ПИРАМИДАЛЬНЫМ методом.... Вообщем она и сортирует вот только чаще всего выбивает STACK OVERFLOV.... я там уже и функцию проверки на сортировку кинул штобы не вращалось слишком много и всеравно облом .... Вообщем код ниже кто сможет подправить укажите ошибку исправленным кодом !!!

    Code:
    {-$S}
    Program Piramida;
    
    Uses CRT;
    
    Const
         max = 100;
    
    Type myArray = array[0..max] of Integer;
    
    Var dimension, i : Integer;
        arr, sortArray : myArray;
    {***********************************\
                                          \**************************************}
    Procedure Sift( Var arr : myArray; L, R : Integer );
    Var i, j : Integer;
        item : Integer;
    Begin
         i := L;
         j := 2*L;
         item := arr[L];
         If ( j < R ) And ( arr[j] < arr[j + 1] ) Then Begin
                                                            j := j + 1;
                                                       End;
         While ( j <= R ) And ( item < arr[j] ) do
          Begin
               arr[i] := arr[j];
               i := j;
               j := 2*j;
               If ( j < R ) And ( arr[j] < arr[j + 1] ) Then Begin
                                                                  j := j + 1;
                                                             End;
          End;
         arr[i] := item;
    End;
    {***********************************\
                                          \**************************************}
    Function Anti_Overflow( mas : myArray; rozmir : Integer) : Boolean;
    Var
       i , j: Integer;
       max : Integer;
    Begin
         For j := 0 To rozmir Do
         Begin
              max := mas[j];
              For i := 1 To rozmir+1 Do
              Begin
                   If max > mas[i] Then Anti_Overflow := False
              End;
         End;
    End;
    {***********************************\
                                          \**************************************}
    Procedure HeapSort( arr : myArray; size : Integer );
    Var i, L, R : Integer;
        item : Integer;
    Begin
         L := ( size div 2 );
         R := size - 1 ;
         While L > 0 do
         Begin
               L := L - 1;
               Sift( arr, L, R );
         End;
             While R > 0 do
             Begin
                  item := arr[0];
                  arr[0] := arr[R];
                  arr[R] := item;
                  R := R - 1;
                  Sift( arr, L, R );
             End;
         If Anti_Overflow(arr,size) = False Then HeapSort (arr,size)
         Else Begin
                   Write('Sorting array: ');
                   For i := 0 To size-1 do
                   Begin
                        Write( Arr[i] );
                        Write(' ');
                   End;
              End;
    End;
    {***********************************\
                                          \**************************************}
    Begin
         ClrScr;
         Write('Rozmirnist Masivu : ');
              ReadLn( dimension );
         Write('Enter ');Write( dimension );Write(' elements: ');
         Randomize;
         For i := 0 To dimension Do Begin
                                         arr[i] := Random(50);
                                         WriteLn(arr[i]);
                                    End;
                                    HeapSort( arr , dimension );
         WriteLn;
         WriteLn('Press "Enter" to continue...');
         ReadKey;
    End.
     
  17. plat

    plat New Member

    Joined:
    4 Jun 2008
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Спасибо большущее!!!...но все же...пожалуйста...можно и эту программу тоже поподробнее..нам давали только теорию практически...примеров совсем мало...на классы дали только пример класса комплексного числа...я сам понимаю, что в принципе там классы ни к чему...но надо чтобы прога была обязательно с ними...
    я с классами совсем пока не дружу...а задачу надо в понедельник сдать...
    Заранее спасибо!
     
  18. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    извини .... но тут ПОМОГАЮТ а не занимаются ВМЕСТО!

    .... ЭТУ МАЛОСТЬ ЗАСУНУТЬ КОД В КЛАССЫ ТЫ ДОЛЖЕН СДЕЛАТЬ САМ!!!!!

    .... ведь весь смысл этой ветки не поддерживать ХАЛЯВУ, а давать возможность посмотреть алгоритмы обсудить их.... помочь основной идеей, чтоб человек ВЫРОС в своих и чужых глазах.

    ТВОИ ЗАДАЧКИ БЫЛИ ИНТЕРЕСНЫМИ ПОЭТОМУ Я И ПОМОГ ТЕБЕ.... а была бы лажа прошел мимо!
     
    #598 Delimiter, 6 Jun 2008
    Last edited: 6 Jun 2008
  19. plat

    plat New Member

    Joined:
    4 Jun 2008
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    Спасибо большое и на этом!!!!
     
  20. A2GIL

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

    Joined:
    31 Aug 2007
    Messages:
    84
    Likes Received:
    59
    Reputations:
    -3
    У тебя ошибка на ошибке. Вот смотри, зачем делать HeapSort процедурой? Ведь ей нужно передавать массив! Поэтому она должна быть функцией. И не зачем было делать Anti_Overflow. То есть:

    //переделываем на функцию
    Code:
    [COLOR=RoyalBlue]function[/COLOR] HeapSort( arr : myArray; size : Integer ):[COLOR=RoyalBlue]myArray[/COLOR];
    Var i, L, R : Integer;
        item : Integer;
    Begin
         L := ( size div 2 );
         R := size - 1 ;
         While L > 0 do
         Begin
               L := L - 1;
               Sift( arr, L, R );
         End;
             While R > 0 do
             Begin
                  item := arr[0];
                  arr[0] := arr[R];
                  arr[R] := item;
                  R := R - 1;
                  Sift( arr, L, R );
             End;
       [COLOR=RoyalBlue] heapsort:=arr;[/COLOR]
    End;
    // и рендомное заполнение массива переделай:
    Code:
     ClrScr;
         Write('Vvedite rozmirnist'' massiva : ');
         ReadLn( dimension );
         writeln;
         writeln('************************************************');
         Write('Ishodnii massiv iz ');Write( dimension );Write(' elementov: ');
         Randomize;
         For i := 0 To dimension-1 Do
          Begin
           arr[i] := Random(50);
           Write(arr[i]);write(' ');
          End;
          writeln;
         writeln('************************************************');
         SortArray:=HeapSort( arr , dimension );
         write('Otsortirovanii massiv : ');
           for i := 0 to dimension-1 do begin
             write( sortArray[i] ); write(' '); end;
         writeln;
         writeln('************************************************');
         writeln;
         WriteLn('Press "Enter" to continue...');
         Readln; 
         Readln;
    P.s. МаССив пишется с двумя с ... Надо увОжать русский язык :)
     
    #600 A2GIL, 6 Jun 2008
    Last edited: 6 Jun 2008
Thread Status:
Not open for further replies.