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

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

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

    moneytuz New Member

    Joined:
    29 May 2010
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    Ребят, помогите, пожалуйста ,1 курс, лаба на C:
    Назовем симметричный байт, в котором нулевой бит имеет такое же значение, что и седьмой, а первый - такое же, что и шестой. Изменить порядок следования симметричных байтов в числе на обратный.
     
  2. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    Code:
    #if _MSC_VER >= 1400
    #
    # if !defined(_CRT_NONSTDC_NO_WARNINGS)
    #  define _CRT_NONSTDC_NO_WARNINGS 
    # endif 
    #
    # if !defined(_CRT_SECURE_NO_WARNINGS)
    #  define _CRT_SECURE_NO_WARNINGS 
    # endif 
    #
    #endif 
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	char *bin = "the bin string";
    	char *hex = "the hex string";
    
    	char buf[9];
    
    	while (*bin)
    	{
    		itoa(*bin++ & 0xff, buf, 2);
    		printf(buf);
    	}
    
    	putchar('\n');
    	
    	while (*hex)
    	{
    		itoa(*hex++ & 0xff, buf, 16);
    		printf(buf);
    	}
    	
    	putchar('\n');
    }
    
    
    
    
    Code:
    111010011010001100101100000110001011010011101110100000111001111101001110010110100111011101100111
    7468652068657820737472696e67
    
     
  3. GRRRL Power

    GRRRL Power Moderator

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Но greki_hoy без разницы, хотя автор вопроса просит именно Си++. А еще надо было обязательно выбрать itoa, которой, насколько я помню, даже в gcc нет. А в бинарном виде у него все байты аски-кодов букв, старшие биты которых оказались равными нулю, порезаны, поэтому перевод в двоичный вид тупо неправильный. Вот на C++ с правильными преобразованиями в бинарный вид:

    PHP:
    #include <iostream>
    #include <bitset>
    #include <iomanip>

    int main()
    {
        
    std::string binsym "the bin string";
        
    std::string hexsym "the hex string";

        
    std::cout << "Bin: ";
        {
            
    std::bitset<8bits;
            for(
    std::string::const_iterator it binsym.begin(); it != binsym.end(); it++)
            {
                
    bits = *it;
                
    std::cout << bits.to_string();
            }
        }

        
    std::cout << std::endl << "Hex: ";
        for(
    std::string::const_iterator it hexsym.begin(); it != hexsym.end(); it++)
            
    std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast<unsigned int>(*it);

        
    std::cout << std::endl;

        return 
    0;
    }
     
    _________________________
    #3523 GRRRL Power, 17 Jun 2011
    Last edited: 17 Jun 2011
  4. Crazy Script

    Crazy Script New Member

    Joined:
    15 Jun 2011
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    Люди, помогите пожалуйста решить задачу.

    Есть многомерный массив, размерностью 20 на 20, заполняется только 5 на 5, рандомно.

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

    Я сделал заполнение, вывод, поиск нуля, но вот строку добавить с нулями, ну никак не получается:( Получается, что меняются 2 крайних правых столбца.

    Code:
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
    int main()
    
    {
        int nums[20][20];
        int a, b, t,t2, leftIndex,rightIndex;
        int size;
        
        size = 5;
        
        for (t=0; t<size; t++)
        {
           for (t2=0; t2<size; t2++) 
        nums[t][t2]=rand()%41-20;
    }
        cout << "Исходный массив: \n";
        
        for (t=0; t<size; t++)
        {
        for (t2=0; t2<size; t2++)
        cout << nums[t][t2] << ' ';
        cout << '\n';
    }
    
    
    {
    for (t=0; t<size; t++)
    
        {
        for (t2=0; t2<size; t2++) 
        if (nums [t][t2] ==0)            // ищем 0  
        
        {
          leftIndex = t;
    		rightIndex = t2;       
                 
                 
       for (t=leftIndex; t<5; t++)        // меняем на нули
          {
     for (int t2=rightIndex; t2<5; t2++)    
           nums[t][t2]=0;
           }
           }
           
           for (t=0; t<size; t++)        // выводим массив
        {
        for (t2=0; t2<size; t2++)
        cout << nums[t][t2] << ' ';
        cout << '\n';
    }       
    }
    
    return 0;
    }
    }
    Заранее спасибо!
     
  5. KL1CK3R

    KL1CK3R New Member

    Joined:
    16 Jun 2011
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Помогите с программой на лиспе (LISP (MULISP87)) найти произведение чисел из строки с буквами и числами.
    вот текст программы для нахождения суммы (один символ цифры воспринимается как одно число, тоесть рядом стоящие 4 и 5 это не 45(сорок пять),а 4 и 5).
    Подскажите как сделать для нахождения произведения!Пробовал менять плюсы на умножение,не помогло, в результате пишет ноль. Помню както надо результату единицу присвоить, тогда,возможно, нуля не будет. Кто знает решение проблемы отпишитеть!
     
  6. hatabi4

    hatabi4 New Member

    Joined:
    16 Jun 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Добрый вечер всем.
    Прошу помощи у знающих людей. По предмету вычислительная математика дали задание, которое никак не получается. Конец сессии нужно срочно сдать. суть вот в чем:
    Нужно провести интерполяцию функции F=x*x+4*x+3, используя интерполяционную формулу Ньютона(метод разделенных разностей) на интервале [-10..10] взяв количество узлов интерполяции равных 3. Построить графики исходной функции и интерполирующей функции, а так же график погрешности интерполяции.
    Сделать нужно, используя вот эти формулы:
    [​IMG]
    В моем случае уравнение получается вида:
    Pn(x)=f(x[0])+f(x,x[i+1])*(x-x[0])+f(x,x[i+1],x[i+2])*(x-x[0])*(x-x[1]).

    Написал функцию, но работать она не хочет:
    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Math;
    
    type
      TForm1 = class(TForm)
        Chart1: TChart;
        Chart2: TChart;
        Series1: TLineSeries;
        Series2: TLineSeries;
        Series3: TLineSeries;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    const
      xmin=-10;
      xmax=10;
      n=3;
    
    var
      Form1: TForm1;
      i,j: integer;
      x1,x2,x3,h: real;
      x,fx: array [1..3] of real;
    
    implementation
    
    {$R *.dfm}
    
    function yf(x:real):real;
    begin
      yf:=x*x+4*x+3;
    end;
    
    
    Function Newton(n: integer; d:real; x,y :array of real):real;
    var
      l:real;
      j,i,k:integer;
      p,p2: real;
      y1,y2: array of real;
    begin
    L:=fx[1];
    P:=1;
    p2:=1;
    for j:=1 to n do
    begin
      P:=P*(D-X[j-1]);
        for i:=0 to (n-j) do // <- ПЕРВАЯ РАЗНОСТЬ
        begin
          Y[i]:=(y[i+1]-y[i])/(x[i+j]-x[i]);  
        end;
      p2:=p2*(d-x[j-1])*(d-x[j]); 
        for k := 1 to (n-j) do    // <- ВТОРАЯ РАЗНОСТЬ, ЗДЕСЬ ВСЯ "СОЛЬ" 
          begin
            y[k]:=(((y[k+2]-y[k+1])/(x[k+j]-x[k]))-y1[k])/(x[k+2]-x[k]);  
          end;
      L:=L+P*y[i]+p2*y[k];
    end;
      Newton:=-l;
    end;
    
    
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    
      x1:=xmin;
      while x1<=xmax do
      begin
        Series1.AddXY(x1,yf(x1));
        x1:=x1+1;
      end;
    
      x2:=-1;
      for i:=1 to n do
      begin
        x[i]:=x2;
        fx[i]:=yf(x[i]);
        x2:=x2+1;
      end;
    
    
      x3:=xmin;
      while x3<=xmax do
      begin
        for i:=1 to 10 do
        begin
        Series2.AddXY(x3,Newton(n,x3,x,fx));
        Series3.AddXY(x3, abs (yf(x3)-Newton(n,x3,x,fx)) );
        x3:=x3+0.01;
        end;
      end;
    
    end;
    
    end.
    
    Помогите пожалуйста с функцией, дальше думаю разберусь.
     
  7. Glok

    Glok New Member

    Joined:
    12 May 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Программа с использованием компонентов Standart и Adition в Delphi.
    Организуйте ввод размерности и элементов массива с клавиатуры или заполнение случайным образом по выбору пользователя. Для представления массивов на экране используйте компоненты StringGrid. Обеспечьте контроль вводимых данных, удобный пользовательский интерфейс, подсказки, возможность прочесть вариант задания (через Memo, ShowMessage или на новой форме).

    Дан числовой массив А, состоящий из n натуральных чисел. Определите количество элементов массива, которые больше заданного числа.
     
    #3527 Glok, 28 Jun 2011
    Last edited: 28 Jun 2011
  8. AGIMgal

    AGIMgal New Member

    Joined:
    9 Jun 2010
    Messages:
    66
    Likes Received:
    0
    Reputations:
    0
    вообщем помогите со школьной задачкой.
    дана матрица, забита 1 и 0(ну или тру\фолс).
    вот так. [​IMG]
    нужно проверить можно ли "пройти по белым полям от входа к выходу".
    вроде всё понятно проверять все соседние клетки, и если они белые вызывать рекурсию. Но способ работает только для лабирнтав виде дерева шириной в одну клетку, причём не циклического. Как на картинке. А вот если так
    [​IMG]
    то зацикливает и не работает :(

    помогите решить проблемку.
     
  9. Иван8

    Иван8 Elder - Старейшина

    Joined:
    21 Aug 2008
    Messages:
    71
    Likes Received:
    11
    Reputations:
    6
    Покажи свой алгоритм проверки! И на чем надо сделать то? Вход и выход всегда в одном месте?
     
    #3529 Иван8, 11 Jul 2011
    Last edited: 11 Jul 2011
  10. BrainDeaD

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

    Joined:
    9 Jun 2005
    Messages:
    780
    Likes Received:
    293
    Reputations:
    214
    указывай условие, что если соседей больше одного, бери всегда тот, который правей/левей, тогда будет пробегать покругу.
     
  11. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    AGIMgal закрашиваете ту на которой стоите, если получилось (клетка все еще белая) - вызываете рекурсивно функцию (но лучше рекурсию заменить на очередь обхода) для всех соседних белых, если не получилось - выходите. Если стоите на финише - устанавливаете флаг, что закончили и дошли.
     
    _________________________
  12. daniel_1024

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

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    Я наверно опоздал :D
    Вообщем моя реализация на C++: http://pastebin.com/ZhrtCUEQ
    Входные данные: в input.txt в первой строке задаются два числа n и m, далее карта размером n на m.
    В ней:
    1 - есть препятствие
    0 - пустая клетка
    # - обозначает вход
    @ - обозначает выход.

    Пример:
    Code:
    5 5
    1@111
    00100
    00110
    11000
    #0011
    
    Результат:
    Code:
    NO
     
    #3532 daniel_1024, 14 Jul 2011
    Last edited: 14 Jul 2011
  13. AGIMgal

    AGIMgal New Member

    Joined:
    9 Jun 2010
    Messages:
    66
    Likes Received:
    0
    Reputations:
    0
    так мне нужно то наоборот


    daniel_1024, мне это украинская грамота, вроде похоже , но толком понять нечего немогу.


    сначало тоже об этом подумал, потом мне отчегото показалость что тогда невыйдет откат(если в тупик зайду). Щас обдумал получше наверно должно выйти,СПС.

    зы. когда увидел впервые эту задачу тоже подумал что надо циклом на каждую клетку соседние смотреть...но рекурсия проще.
     
  14. SerpentRider

    SerpentRider New Member

    Joined:
    3 May 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Вот самый стандартный алгоритм

    Вот самый стандартный алгоритм:

    [​IMG]

    1) Сначала от входа до всех возможных стен заполняешь всё рекурсивно возрастающей последовательностью.
    Это означает, что каждый квадрат, имеющий число надо окружить квадратами с числом на единицу большим.

    После этого у тебя должно получиться заполнение как на приаттаченном рисунке.

    2) Далее если надо найти путь, то идем с конца, подыскивая квадрат, с числом меньшим текущего на 1.

    Если просто надо проверить, есть ли путь до выхода, то достаточно проверить, что квадрат с выходом после прохождения алгоритма 1) имеет номер.
     
  15. AnGeI

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

    Joined:
    8 Dec 2008
    Messages:
    396
    Likes Received:
    79
    Reputations:
    16
    В долгу не останусь :)
     
    #3535 AnGeI, 25 Jul 2011
    Last edited: 25 Jul 2011
  16. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    843
    Likes Received:
    170
    Reputations:
    84
    AnGeI, скинул в ЛС множества.
     
  17. MicRaiS

    MicRaiS New Member

    Joined:
    30 Dec 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    помогите рещить задачу по динамическим структурам данных.
    разработать програму каторая создает список L, елементами которого есть целие числа. Для заданих чисел a,b(a<b) печатает в порядке размищения все числа списка L менше от a, потом все числа з диапазона [a,b], и наконец все числа больше b
     
  18. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Вот тебе список, который я недавно писал. Работает для чисел, строк и чего угодно. В кодах даже есть примеры, как его использовать.

    http://dl.dropbox.com/u/12993060/mylist.rar
     
  19. AppS

    AppS Member

    Joined:
    8 Aug 2009
    Messages:
    249
    Likes Received:
    23
    Reputations:
    6
    Кто хочет помочь и не много заработать?;)

    В общем решить надо 3 задачки на ASM.


    1.
    2.
    3.
    Заранее спасибо!
     
  20. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    942
    Likes Received:
    428
    Reputations:
    139
    1.

    Code:
    ;
    ; ONE
    ;
    
    format PE GUI 4.0
    entry start
    include 'C:\fasmw\include\win32a.inc'
    
    section '.data' readable writeable
        result   dd  ?
    
    section '.code' readable writeable
    start:
        mov eax, 2  ; first number
        mov ebx, 7  ; second number
    
        cmp eax, ebx
    
        jg sub_one
        jl sub_two
    
    
        invoke ExitProcess, 0
    
    sub_one:
        sub eax, ebx
        invoke itoa, eax, result, 10, 10d
        jmp exit
    sub_two:
        xchg eax, ebx
        jmp sub_one
    exit:
        invoke MessageBox, 0, result, result, MB_OK
        invoke ExitProcess, 0
    
    
    section '.idata' import data readable writeable
        library kernel32, 'kernel32.dll', user32, 'user32.dll', ntdll, 'ntdll.dll'
    
        import user32, MessageBox, 'MessageBoxA'
        import kernel32, ExitProcess, 'ExitProcess'
        import ntdll, itoa, '_itoa'
    
    остальные мб потом, когда не влом будет.
     
Loading...
Thread Status:
Not open for further replies.