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

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

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

    A1exx New Member

    Joined:
    8 Feb 2009
    Messages:
    24
    Likes Received:
    4
    Reputations:
    0
    hello all!Помогите решить простенькую задачу на паскале....
    9. Задано множество символов. Перечислить все его подмно-
    жества. Выполнить генерацию случайного подмножества.
     
  2. criptic

    criptic Member

    Joined:
    24 Mar 2009
    Messages:
    51
    Likes Received:
    5
    Reputations:
    0
    Прошу помощи по математической статистике.

    Тема : Теория индексов.
    В принципе, знаком. теоретически.
    Но нужно показать как работают эти индексы в exel

    Какие брать индексы ? Индивидуальные ? Сложные? Какой пример можно сделать наглядный проще всего?


    Заранее спасибо.
     
  3. funbuff

    funbuff New Member

    Joined:
    26 Oct 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    TASM (Ввод-вывод. операции над числами)

    Задача: Вводим число в десятичной системе счисления. На экран вывести его шестнадцатеричное значение. Подскажите пожалуйста как реализуется, и если можно, кусок кода с этим процессом.
     
  4. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Code:
            .model    tiny
            .code
            .286                    ; для команды shr al,4
            org       100h          ; начало СОМ-файла
    start:
            mov       dx,offset message1
            mov       ah,9
            int       21h           ; вывести приглашение ко вводу message1
            mov       dx,offset buffer
            mov       ah,0Ah
            int       21h           ; считать строку символов в буфер
            mov       dx,offset crlf
            mov       ah,9
            int       21h           ; перевод строки
    
    ; перевод числа в ASCII-формате из буфера в бинарное число в АХ
            xor       di,di         ; DI = 0 - номер байта в буфере
            xor       ax,ax         ; АХ = 0 - текущее значение результата
            mov       cl,blength
            xor       ch,ch
            xor       bx,bx
            mov       si,cx         ; SI - длина буфера
            mov       cl,10         ; CL = 10, множитель для MUL
    asc2hex:
            mov       bl,byte ptr bcontents[di]
            sub       bl,'0'        ; цифра = код цифры - код символа "0",
            jb        asc_error     ; если код символа был меньше, чем код "0",
            cmp       bl,9          ; или больше, чем "9",
            ja        asc_error     ; выйти из программы с сообщением об ошибке,
            mul       cx            ; иначе: умножить текущий результат на 10,
            add       ax,bx         ; добавить к нему новую цифру,
            inc       di            ; увеличить счетчик
            cmp       di,si         ; если счетчик+1 меньше числа символов -
            jb        asc2hex       ; продолжить (счетчик считается от 0)
    
    ; вывод на экран строки message2
            push      ax            ; сохранить результат преобразования
            mov       ah,9
            mov       dx,offset message2
            int       21h
            pop       ax
    
    ; вывод на экран числа из регистра АХ
            push      ax
            xchg      ah,al         ; поместить в AL старший байт
            call      print_al      ; вывести его на экран
            pop       ax            ; восстановить в AL младший байт
            call      print_al      ; вывести его на экран
    
            ret                     ; завершение СОМ-файла
    
    asc_error:
            mov       dx,offset err_msg
            mov       ah,9
            int       21h           ; вывести сообщение об ошибке
            ret                     ; и завершить программу
    
    ; Процедура print_al
    ; выводит на экран число в регистре AL
    ; в шестнадцатеричном формате,
    ; модифицирует значения регистров АХ и DX
    
    print_al:
            mov       dh,al
            and       dh,0Fh        ; DH - младшие 4 бита
            shr       al,4          ; AL - старшие
            call      print_nibble  ; вывести старшую цифру
            mov       al,dh         ; теперь AL содержит младшие 4 бита
    print_nibble:                   ; процедура вывода 4 бит (шестнадцатеричной цифры)
            cmp       al,10         ; три команды, переводящие цифру в AL
            sbb       al,69h        ; в соответствующий ASCII-код
            das                     ; (см. описание команды DAS)
            mov       dl,al         ; код символа в DL
            mov       ah,2          ; номер функции DOS в АН
            int       21h           ; вывод символа
            ret                     ; этот RET работает два раза - один раз
                                    ; для возврата из процедуры print_nibble,
                                    ; вызванной для старшей цифры,
                                    ; и второй раз - для возврата из print_al
    
    message1 db       "Десятичное число: $"
    message2 db       "Шестнадцатеричное число: $"
    err_msg  db       "Ошибка ввода"
    crlf     db       0Dh,0Ah,'$'
    buffer   db       6             ; максимальный размер буфера ввода
    blength  db       ?             ; размер буфера после считывания
    bcontents:                      ; содержимое буфера располагается за
                                    ; концом СОМ-файла
            end       start
     
  5. Брюнетка

    Брюнетка New Member

    Joined:
    9 Nov 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    буду очень благодарен если кто нибудь поможет написать аналог функции strrok)
     
  6. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    а что она должна делать?
     
  7. Брюнетка

    Брюнетка New Member

    Joined:
    9 Nov 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    всё тоже самое что и strtok (делить предложения на лексемы)
     
  8. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Code:
    char * strtok (char * string, const char * control)
    {
        unsigned char *str;
        const unsigned char *ctrl = control;
        unsigned char map[32];
        int count;
        static char *nextoken;
        
        for (count = 0; count < 32; count++) map[count] = 0;
        do
        {
            map[*ctrl >> 3] |= (1 << (*ctrl & 7));
        } while (*ctrl++);
    
        if (string) str = string;
        else str = nextoken;
    
        while ( (map[*str >> 3] & (1 << (*str & 7))) && *str ) str++;
    
        string = str;
        
        for (;*str;str++)
            if ( map[*str >> 3] & (1 << (*str & 7)) )
            {
                *str++ = '\0';
                break;
            }
    
        nextoken = str;
    
        if ( string == str ) return NULL;
        else return string;
    }
     
    1 person likes this.
  9. AdReNa1!Ne

    AdReNa1!Ne Elder - Старейшина

    Joined:
    24 May 2007
    Messages:
    70
    Likes Received:
    105
    Reputations:
    14
    Добрый день всем!

    Хотел бы попросить помочь решить несколько задач на borland C.

    1. Дано 2 одномерных массива целых чисел A и B. Создать одномерный массив C, содержащий элементы в единственном экземпляре, которые меньше заданного числа и присутствуют в нескольких экземплярах либо в A, либо в B.
    2. В заданном одномерном массиве поменять местами два первых положительных.
    3. В заданной матрице поменять местами строки, содержащие два первых отрицательных элемента среди элементов выше главной диагонали.
    4. В заданной матрице удалить методом сдвига столбцы, содержащие максимальный и третий нулевой элементы.
    5.1 Дано: текст, содержащий символьные строки (ввод осуществляется до тех пор, пока не будет введена пустая строка). Создать новый массив подстрок, выделив из каждой строки подстроки, разделенные одной или несколькими цифрами. Массив подстрок вывести на экран, каждую подстроку с новой строки. Пустые подстроки не выделять и не печатать.
    5.2 Среди выделенных подстрок найти подстроку, содержащую наибольшее число пробелов.
    5.3 Преобразовать строку, которой принадлежит найденная подстрока: заменить '***' на один пробел.

    P.S. использование указателей обязательно.
    P.P.S. Заранее огромное спасибо :)
     
  10. AniChe42

    AniChe42 New Member

    Joined:
    24 Jan 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, помогите написать программу на Borland C++

    Условие:
    Ввести последовательность 7 целых чисел и поменять местами ее первый элемент с пятым элементом.

    Нужно написать с подпрограммой и без подпрограммы. Хотя бы помогите написать один вариант.

    Заранее Благодарен.
     
  11. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Если я всё верно понял, то самый простой вариант такой:
    Code:
    #include <stdio.h>
    /*
    void change(int *arr)
    {
        int tmp;
        tmp = arr[0];
        arr[0] = arr[4];
        arr[4] = tmp;
    }
    */
    int main()
    {
        int i, arr[7];
    
        for(i=0; i<7; i++) scanf("%d", &arr[i]);
        
    //    change(arr);
    
        i = arr[0];
        arr[0] = arr[4];
        arr[4] = i;
    
        for(i=0; i<7; i++) printf("%d",arr[i]);
    
        return 0;
    }
     
    #3091 becensed, 27 Nov 2010
    Last edited: 27 Nov 2010
  12. AniChe42

    AniChe42 New Member

    Joined:
    24 Jan 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    becensed
    Спасибо, за помощь
    Но как то не совсем то что нужно)

    Я так понял, что нужно это сделать с помощью Memo1 и Memo2. Тоесть в Мемо1 ввести 7 целых чисел, с помощью Button1 ввывести в Мemo2 результат уже с тойже последовательностью но только уже чтобы первый элемент поменялся с пятым.

    тип такого:
    [​IMG]
     
  13. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    С этого надо было начинать. К счастью (для тебя - к сожалению) я никогда в жизни не использовал Memo и не знаю что это такое.
    Но принцип такой же. Если это что-то вроде листбокса, то поменяь местами элементы проще простого (есть винапи).
     
  14. AdReNa1!Ne

    AdReNa1!Ne Elder - Старейшина

    Joined:
    24 May 2007
    Messages:
    70
    Likes Received:
    105
    Reputations:
    14
    Помогите решить хотя бы первых 2 задания... Пожалуйста...
     
  15. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Code:
    /*
        2. В заданном одномерном массиве поменять 
           местами два первых положительных.
    */
    
    #include <stdio.h>
    
    int main()
    {
        int A[] = {1,2,-6,-11,1,-9,12,-11,-2,9,8},
            *B=A;
        int size = sizeof(A)/sizeof(A[0]),
            i, tmp;
    
        for (i=0; i<size; i++) printf("%d ",*(B+i));
    
        for (i=0; i<size; i++)
        {
            if(*(B+i)>0 && *(B+i+1)>0)
            {
                tmp = *(B+i);
                *(B+i) = *(B+i+1);
                *(B+i+1) = tmp;
                break;
            }
        }
    
        printf("\n");
        for (i=0; i<size; i++) printf("%d ",*(B+i));
    
        return 0;
    }
     
  16. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Не знаю, насколько это верно, но на ночь глядя получилось такое:
    Code:
    /*
        1. Дано 2 одномерных массива целых чисел A и B. 
           Создать одномерный массив C, содержащий элементы 
           в единственном экземпляре, которые меньше заданного числа и 
           присутствуют в нескольких экземплярах либо в A, либо в B.
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int check_arr(int *, int, int);
    
    int main()
    {
        int A[] = {1,2,3,4,5,6,7,8,9,0,9,7,5,1,0},
            B[] = {0,9,8,7,6,5,4,3,2,1,1,3,4,8,9};
    
        int *C;
        int i,j,t=0,
            n=5,    // Заданное число
            size = sizeof(A)/sizeof(A[0]);
    
        C = (int *)malloc(size*sizeof(int));
    
        // Ищем элементы
        for(i=0;i<size;i++)
        {
            for(int j=i+1;j<size;j++)
            {
                if(A[j]==A[i] && A[j]<n) 
                {
                    C[t] = A[j];
                    t++;
                }
    
                if(B[j]==B[i] && B[j]<n) 
                {
                    C[t] = B[j];
                    t++;
                }
            }
        }
    
        // Удаляем повторения из результата.
        for(i=0;i<t;i++)
        {
            for(int j=i+1;j<t;j++)
            {
                if(C[j]==C[i])
                {
                    C[j]=C[t-1];
                    t--;
                }
            }
        }
        
        for(i=0;i<t;i++) printf("%d ", C[i]);
    
        free(C);        
        return 0;
    }
    Что здесь происходит:
    - В циклах бегаем по массивам А и В в поисках одинаковых элементов, которые меньше n. Если такие находим (или в А или в В), то пишем их в С.
    - Берем массив С, идем по нему и удаляем дубликаты, если такие будут.

    Массивы А и В должны быть одинакового размера, иначе надо переделывать:)

    Если там обязательно указатели юзать, то напихай их сам:)
     
    #3096 becensed, 28 Nov 2010
    Last edited: 28 Nov 2010
  17. JoeBlanc

    JoeBlanc New Member

    Joined:
    29 Oct 2010
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Помогите пожалуйста решить на языке С, с использованием функции.

    Дана послідовність n натуральних чисел. Для кожного числа обчислити кількість його цифр та суму цих цифр. Вивести на екран кожне число, кількість його цифр ти їх суму. Використати процедуру для обчислення кількості цифр числа та їх суми.

    Данная последовательность n натуральных чисел. Для каждого числа вычислить количество его цифр и сумму этих цифр. Вывести на экран каждое число, количество его цифр ты их сумму. Использовать процедуру для вычисления количества цифр числа и их суммы.
     
  18. HenryL

    HenryL New Member

    Joined:
    6 Jun 2010
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    Всем привет! Нужно переделать следующую программу, которая реализованна с помощью структуры так, чтобы она основывалась на классе.
    Код:
    Code:
    #include <stdio.h>
    #include <string>
    #include "stdafx.h"
    #include "fstream"
    #include "conio.h"
    #include "math.h"
    #include "iostream" 
    
    using namespace std;
    
    int main() 
    {
    setlocale(LC_ALL,"russian_russia");// подключение русского языка
    struct aeroflot// описание структуры "Аэрофлот"
    	{
    		char dest[10];// массив для пункта назначения
    		int numb;// переменная для новеров рейсов
    		char type[10];// массив для типа самолета
    	};
    aeroflot reys[7];// кол-во записей о рейсах
    int kol=7;
    int i=0;
    cout << "Введите данные: " << endl;
    cout << "" <<endl;
    for (i=0; i<kol; i++)// цикл для ввода данных о рейсе
    {
    	for (int o=0; o<kol; o++)
    		{
    			{
    			cout << i+1 <<"-й маршрут." << endl;
    			cout << "Пункт назначения (не более 10 симв.): ";
    			cin >> reys[i].dest;
    			cout << "Номер рейса: ";
    			cin >> reys[i].numb;
    			cout << "Тип самолета (не более 10 симв.): ";
    			cin >> reys[i].type;
    			}
    	cout << "" <<endl;
    	break;
    		}
    }
    
    int temp = i;
    for (i = 0; i < temp - 1; i++)// цикл сортировки по возрастанию
    	{
    		int imin = i;// принимаем за наименьший первый из рассматриваемых элементов
    		for (int j = i + 1; j < temp; j++)// поиск номера минимального элемента из неупорядоченных
    		if (reys[j].numb < reys[imin].numb)
    		imin = j;
    		aeroflot a = reys[i];// обмен двух элементов массива структур
    		reys[i] = reys[imin]; 
    		reys[imin] = a; 
    	}
    cout << "Маршруты по возрастанию номера рейса: " << endl;
    cout << " " << endl;
    for (i = 0; i < temp ; i++) 
    	{
    		cout << reys[i].dest <<"   " << reys[i].numb << "   " << reys[i].type << endl; 
    	}
    while (true)
    { 
    	char inp [10];
    	cout << endl << "Ввведите пункт назначения: ";  
    	cin >> inp; 
    	cout << endl;
    	bool f = false;// флаг (найдено ли хотя бы одно)
    	for (i=0; i<kol; i++)
    	{	
    		if (strcmp (reys[i].dest, inp)==0)//сравнение введенной строки с массивом пунктов назначения
    			{
    				cout << "Найдено!" << endl;
    				cout << "Номер рейса: " <<' '<< reys[i].numb<<' '<< "Тип самолета: " <<' '<< reys[i].type << ' '<<endl; 
    				f = true; 
    			}
    	}
    		if (!f) cout << "Нет такого пункта назначения!"; 
    		_getch();
    return 0;
    
    }
    }
    
    Помогите пожалуйста! Что-то никак не соображу, как переделать, к примеру эту запись из структуры
    Code:
    aeroflot reys[7];// кол-во записей о рейсах
    чтобы можно было обращаться вот так же:
    Code:
    reys[i].type
    Не знаю, может непонятно изложил, но я вообще запутался... Нужно все операции сделать функциями (ввод, сортировка, поиск), поэтому у меня еще и не получается передавать данные в функции.

    ____

    Хотя... может мне не надо ничего переделовать, а сделать класс, включающий эту структуру. Так ведь можно?
     
    #3098 HenryL, 28 Nov 2010
    Last edited: 28 Nov 2010
  19. JohnnyBGoode

    JohnnyBGoode Member

    Joined:
    5 Oct 2010
    Messages:
    48
    Likes Received:
    11
    Reputations:
    5
    Ну тогда просто измени слово struct на слово class,а данные объяви с описателем public и будет тебе класс
     
  20. HenryL

    HenryL New Member

    Joined:
    6 Jun 2010
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    тогда у меня функции не получаются... reys перед членами класса выдает ошибку - необъявленный идентификатор...
     
Thread Status:
Not open for further replies.