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

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

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

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Code:
      Type
      T = record
      StrRepr:string;
      End;
    
      Type
      TT = record
      One:array[0..9] of T;
      End;
    
      const
      ts=' тысяч';
    
    var
      frmMain: TfrmMain;
      Mass:array[1..7] of TT;
      MassEx:array[10..19] of string;
    implementation
    
    {$R *.dfm}
    
    procedure SpecialRange(Str:string;var intA,intB:integer);
    begin
    if (9 < strtoint(str)) and (strtoint(str)<20) then begin
      if (intB <> 3) then frmMain.lblOut.Caption := MassEx[strtoint(str)]+' '+frmMain.lblOut.Caption
      else
      frmMain.lblOut.Caption:=MassEx[strtoint(str)]+ts+' '+frmMain.lblOut.Caption;
    
    intA:=intA-2;
    intB:=intB+2;
    end;
    end;
    
    procedure TfrmMain.Button1Click(Sender: TObject);
    var
    intA,intB:integer;
    begin
    //Фильтр на ввод символов в поле ставить не стал(исходники могут скачать не все,
    //а вдруг кому то потребуется), поэтому
    try
    if (strtoint(edtIn.text)-1)<0 then begin
    showmessage('Введите число в диапазоне от 1(одного) до 1000000(миллиона)');
    exit;
    end;
    except
    showmessage('Введите число в диапазоне от 1(одного) до 1000000(миллиона)');
    exit;
    end; 
    
    //Не больше миллиона!
    if strtoint(edtIn.text) > 1000000 then begin
    showmessage('Не больше миллиона!');
    edtIn.Text := '1000000';
    edtIn.SetFocus;
    exit;
    end;
    
    lblOut.Caption := '';
    //intA счетчик
    //В intB текущий разряд
    intB:=1;
    intA:=length(edtIn.Text);
    
    //Последние 2 цифры в переделе от 9 - 19?
    SpecialRange(copy(edtIn.Text,length(edtIn.Text)-1,2),intA,intB);
    
    while intA > 0 do begin
      //Если строка не пустая
      if (Mass[intB].One[strtoint(copy(edtIn.Text,intA,1))].StrRepr <> '') then lblOut.Caption :=  Mass[intB].One[strtoint(copy(edtIn.Text,intA,1))].StrRepr+' '+lblOut.Caption;
      if (intA = 1) and (intB= 6) and (pos(ts,lblOut.Caption)=0) then lblOut.Caption:=lblOut.Caption+ts;
    
      // 9< Десятки тысяч и тысячи < 19
      if (length(edtIn.text) > 4) and (intB=3) then SpecialRange(copy(edtIn.Text,length(edtIn.Text)-4,2),intA,intB);
      
    inc(intB);
    dec(intA);
    end;
    
    //Только одна буква большая
    if not(chkUp.Checked) then lblOut.Caption:=copy(lblOut.Caption,1,1)+ AnsiLowerCase(copy(lblOut.Caption,2,length(lblOut.Caption)-1));
    edtIn.SetFocus;
    end;
    
    procedure TfrmMain.FormCreate(Sender: TObject);
    begin
    //Единицы
    Mass[1].One[0].StrRepr := '';
    Mass[1].One[1].StrRepr := 'Один';
    Mass[1].One[2].StrRepr := 'Два';
    Mass[1].One[3].StrRepr := 'Три';
    Mass[1].One[4].StrRepr := 'Четыре';
    Mass[1].One[5].StrRepr := 'Пять';
    Mass[1].One[6].StrRepr := 'Шесть';
    Mass[1].One[7].StrRepr := 'Семь';
    Mass[1].One[8].StrRepr := 'Восемь';
    Mass[1].One[9].StrRepr := 'Девять';
    //10-19  Специальные
    MassEx[10]:='Десять';
    MassEx[11]:='Одиннадцать';
    MassEx[12]:='Двенадцать';
    MassEx[13]:='Тринадцать';
    MassEx[14]:='Четырнадцать';
    MassEx[15]:='Пятнадцать';
    MassEx[16]:='Шестнадцать';
    MassEx[17]:='Семнадцать';
    MassEx[18]:='Восемнадцать';
    MassEx[19]:='Девятнадцать';
    //Десятки
    Mass[2].One[0].StrRepr := '';
    Mass[2].One[2].StrRepr := 'Двадцать';
    Mass[2].One[3].StrRepr := 'Тридцать';
    Mass[2].One[4].StrRepr := 'Сорок';
    Mass[2].One[5].StrRepr := 'Пятьдесят';
    Mass[2].One[6].StrRepr := 'Шестьдесят';
    Mass[2].One[7].StrRepr := 'Семьдесят';
    Mass[2].One[8].StrRepr := 'Восемьдесят';
    Mass[2].One[9].StrRepr := 'Девяносто';
    //Сотни
    Mass[3].One[0].StrRepr := '';
    Mass[3].One[1].StrRepr := 'Сто';
    Mass[3].One[2].StrRepr := 'Двести';
    Mass[3].One[3].StrRepr := 'Триста';
    Mass[3].One[4].StrRepr := 'Четыреста';
    Mass[3].One[5].StrRepr := 'Пятьсот';
    Mass[3].One[6].StrRepr := 'Шестьсот';
    Mass[3].One[7].StrRepr := 'Семьсот';
    Mass[3].One[8].StrRepr := 'Восемьсот';
    Mass[3].One[9].StrRepr := 'Девятьсот';
    //Тысячи
    Mass[4].One[0].StrRepr := '';
    Mass[4].One[1].StrRepr := 'Одна тысяча';
    Mass[4].One[2].StrRepr := 'Две тысячи';
    Mass[4].One[3].StrRepr := 'Три тысячи';
    Mass[4].One[4].StrRepr := 'Четыре тысячи';
    Mass[4].One[5].StrRepr := 'Пять тысяч';
    Mass[4].One[6].StrRepr := 'Шесть тысяч';
    Mass[4].One[7].StrRepr := 'Семь тысяч';
    Mass[4].One[8].StrRepr := 'Восемь тысяч';
    Mass[4].One[9].StrRepr := 'Девять тысяч';
    //Десятки тысяч
    Mass[5].One[0].StrRepr := '';
    Mass[5].One[2].StrRepr := 'Двадцать';
    Mass[5].One[3].StrRepr := 'Тридцать';
    Mass[5].One[4].StrRepr := 'Сорок';
    Mass[5].One[5].StrRepr := 'Пятьдесят';
    Mass[5].One[6].StrRepr := 'Шестьдесят';
    Mass[5].One[7].StrRepr := 'Семьдесят';
    Mass[5].One[8].StrRepr := 'Восемьдесят';
    Mass[5].One[9].StrRepr := 'Девяносто';
    //Сотни тысяч
    Mass[6].One[0].StrRepr := '';
    Mass[6].One[1].StrRepr := 'Сто';
    Mass[6].One[2].StrRepr := 'Двести';
    Mass[6].One[3].StrRepr := 'Триста';
    Mass[6].One[4].StrRepr := 'Четыреста';
    Mass[6].One[5].StrRepr := 'Пятьсот';
    Mass[6].One[6].StrRepr := 'Шестьсот';
    Mass[6].One[7].StrRepr := 'Семьсот';
    Mass[6].One[8].StrRepr := 'Восемьсот';
    Mass[6].One[9].StrRepr := 'Девятьсот';
    //Миллион ;D
    Mass[7].One[1].StrRepr := 'Один Миллион';
    end;
    
    Исходники и скомпилированный .exe
    pass: antichat.ru
     
    #2301 Dosia, 11 Feb 2010
    Last edited: 15 Feb 2010
  2. DimkO

    DimkO Banned

    Joined:
    16 Nov 2008
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    to Dosia: с десятитысячными не пашет
     
  3. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Дробями? Еще бы программа работала с дробями, если учесть, что на основании примеров просящего я такой возможности не предусмотрел, только целые числа (1- 1 000 000)

    UPD: Время 12.02.2010, 00:37
    Глаза уже подводят, показалось что десятичными, бывает.

    Пофиксил прогу теперь все нормально со всеми числами (1- 1 000 000), целыми естественно.
     
    #2303 Dosia, 12 Feb 2010
    Last edited: 15 Feb 2010
  4. DimkO

    DimkO Banned

    Joined:
    16 Nov 2008
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    не тупи,есть еще такое понятие как разряд,и я имел ввиду разряд десятитысячных,как видишь,он входит в условие программы....все работает только при вводе чисел <10 000
     
    #2304 DimkO, 12 Feb 2010
    Last edited: 12 Feb 2010
  5. oldsys

    oldsys Member

    Joined:
    4 Jan 2010
    Messages:
    31
    Likes Received:
    5
    Reputations:
    0
    За ранее прошу извинение если не по теме !
    Возможно ли сделать на языке batch\.bat ?
    1. Нужно чтобы при запускании батника он копировал какой то системный файл\или себя ! До тех пор пока не закончится память на Жестком диске !
    2. Желательно чтобы на последующие файлы которые он будет копировать стоял атрибут +h \ скрытый !
    3. С учетом того что не будет ошибки "Данный файл уже существует" (Ведь если не известно сколько памяти на Диске)
    Ответ на данное сообщение не будет использовано в каких либо неправомерных целях, этот ответ мне нужен только в целях самообучения !
     
  6. n1ghtstalker

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

    Joined:
    28 Sep 2008
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    в батниках нет цикла
     
  7. expee

    expee New Member

    Joined:
    2 Feb 2010
    Messages:
    23
    Likes Received:
    1
    Reputations:
    0
    есть метки и goto, с помощью которых и организуются циклы.
     
  8. _GOMER_

    _GOMER_ New Member

    Joined:
    21 Jan 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    извиняюсь чуть чуть перепутал
    вот помогите написать программу на делфи вычесляющу площадь S:

    Площадь S [​IMG] под кривой [​IMG] над отрезком [B, D], где z1,z2,z3 ― решение системы уравнений [​IMG] , В ― точка локального минимума функции φ(x) = [​IMG] ,
    D ― точка ее локального максимума.
    контрольный ответ S = 6,71 при С=5
     
  9. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Через интеграл посчитай
     
  10. KrabKN

    KrabKN New Member

    Joined:
    21 Jan 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    с помещу указателя на массиве получить доступ к этому элементу и уменьщыть его элемент в массиве

    на СИ
     
  11. SHARA

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

    Joined:
    26 May 2007
    Messages:
    69
    Likes Received:
    7
    Reputations:
    0
    то есть, если в массиве n элементов, то после обращения к массиву, их становится n-1, я правильно понял, или нет?
     
  12. nec

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

    Joined:
    6 Jul 2005
    Messages:
    98
    Likes Received:
    20
    Reputations:
    1
    Обработать двухмерный числовой массив. Выполнить обмен данными с процедурой через параметр-переменную, параметр-значение.При одном обращении к процедуре передать одну строку или столбец матрицы.Подсчитать количество нулевых элементов в каждой непарной строке матрицы Е(6,6). Вывести количество нулевых элементов и номера соответствующих строк.

    надо на паскале это сделать....это вообще как делать то? мож подкиньте идеи
     
  13. KrabKN

    KrabKN New Member

    Joined:
    21 Jan 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    вот смотри
    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - массив из элементов
    я хочу поменять элемент 4 а замисть него написать 10
    и так изменять лубое элемент
     
  14. KrabKN

    KrabKN New Member

    Joined:
    21 Jan 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    можеш обяснить всю программу
    а зачкм здесь new_value и что оно дает?
     
  15. SHARA

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

    Joined:
    26 May 2007
    Messages:
    69
    Likes Received:
    7
    Reputations:
    0
    Ты забыл про пространство имен, компилятор не поймет что такое cout и cin
    так что после заголовка, который подключает подсистему ввода\вывода С++ <iostream> надо написать
    using namespace std;
    Обьявляется массив, содержащий 10 элементов целочисленного типа:
    Code:
      int a[] = {0,1,2,3,4,5,6,7,8,9}; 
    затем обявляется указатель на это массив(указателю присваиваться адресс первого элемента массива):
    Code:
        int *p = a; 
    определяются две переменные
    переменная pos определяет поцизую элемента в массиве. подлежащего замене
    new_value - это переменая которая заменяет значение индекса pos, Например если мы хотим обменять индексы 5 и 6 то 5 это переменная pos, а 6 это new_value
    Code:
    cin >> pos >> new_value;
    
    -воодим то что хотим поменять
    Code:
    *(p+pos) = new_value;
    осуществляем замену
    Code:
     for (int i =0; i< 10; i++){
            cout <<  a[i];
    -осуществляем отображения измененного массива
    Code:
     return 0;
    - сообщаем вызыающему процессу(операционной системе) что программа завершается корректно, без ошибок
    Вроде все :)
     
  16. SHARA

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

    Joined:
    26 May 2007
    Messages:
    69
    Likes Received:
    7
    Reputations:
    0
    пока писал, уже обьяснили :)
     
  17. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Code:
    program Obmen_dannimi;
    
    var
    intA,intB:integer;
    Mass:array[1..6,1..6] of integer;
    Param_zn:array[1..6] of integer;
    Para:byte;
    
    procedure Parametr_Znachenie(Param:array of integer);
    var
    intC:integer;
    kolichestvo_nulevih_elementov:byte;
    begin
    kolichestvo_nulevih_elementov:=0;
    inc(Para);
    if Para mod 2 = 0 then begin
    for intC:= 0 to 5 do
    if Param[intC]=0 then inc(kolichestvo_nulevih_elementov);
    writeln('stroka nomer ',Para,' soderzhit ',kolichestvo_nulevih_elementov,' nulevih(oi) elementa(ov)');
    end;
    end;
    
    procedure Parametr_Peremennaia(var Param:array of integer);
    var
    intC:integer;
    kolichestvo_nulevih_elementov:byte;
    begin
    kolichestvo_nulevih_elementov:=0;
    inc(Para);
    if Para mod 2 = 0 then begin
    for intC:= 0 to 5 do
    if Param[intC]=0 then inc(kolichestvo_nulevih_elementov);
    writeln('stroka nomer ',Para,' soderzhit ',kolichestvo_nulevih_elementov,' nulevih(oi) elementa(ov)');
    end;
    end;
    
    begin
    Para:=0;
    writeln('Zapolniaiu massiv');
    randomize;
    for intA:=1 to 6 do begin
    for intB:=1 to 6 do begin
    Mass[intA,intB]:=random(2);
    write(Mass[intA,intB],' ');
    end;
    write(#13#10);
    end;
    writeln;
    writeln('Ispolzuiu parametr - znachenie');
    for intA:=1 to 6 do begin
    for intB:=1 to 6 do begin
    Param_Zn[intB]:=Mass[intA,intB];
    end;
    Parametr_Znachenie(Param_Zn);
    end;
    Para:=0;
    writeln;
    writeln('Ispolzuiu parametr - peremennuiu');
    for intA:=1 to 6 do begin
    for intB:=1 to 6 do begin
    Param_Zn[intB]:=Mass[intA,intB];
    end;
    Parametr_Peremennaia(Param_zn);
    end;
    
    readln;
    end.
    
    Результат работы:
    Code:
    Zapolniaiu massiv
    0 0 0 1 1 0
    0 0 0 1 1 1
    0 0 1 1 0 0
    1 1 1 0 1 1
    1 1 1 0 1 1
    0 0 1 0 1 1
    
    Ispolzuiu parametr - znachenie
    stroka nomer 2 soderzhit 3 nulevih(oi) elementa(ov)
    stroka nomer 4 soderzhit 1 nulevih(oi) elementa(ov)
    stroka nomer 6 soderzhit 3 nulevih(oi) elementa(ov)
    
    Ispolzuiu parametr - peremennuiu
    stroka nomer 2 soderzhit 3 nulevih(oi) elementa(ov)
    stroka nomer 4 soderzhit 1 nulevih(oi) elementa(ov)
    stroka nomer 6 soderzhit 3 nulevih(oi) elementa(ov)
    
     
    1 person likes this.
  18. SHARA

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

    Joined:
    26 May 2007
    Messages:
    69
    Likes Received:
    7
    Reputations:
    0
    просто я не думаю, что у KrabKN настроен таким образом компилятор
    поэтому я и написал про простанство имен
     
  19. InterLife

    InterLife New Member

    Joined:
    18 May 2008
    Messages:
    11
    Likes Received:
    2
    Reputations:
    0
    1) Ученики футбольной академии перед началом каждого учебного года группами проходят обследование в медицинском кабинете, одним из результатов которого является измерение размера обуви каждого ученика в группе. Необходимо найти минимальный размер обуви ученика в группе, превосходящий удвоенное значение среднего арифметического всех размеров обуви для учеников из этой группы. Если такого нет, то вывести -1. Известно, что хотя бы у двух учеников из группы разный размер обуви.
    Формат входных данных

    Файл input.txt содержит k (1<=k<=25) вещественных чисел — сведения о размере обуви каждого ученика в группе, записанные через пробел (перед первым числом пробела нет).
    Формат выходных данных

    Выведите в файл output.txt одно число без пробелов — искомый размер обуви ученика.

    2) Есть несколько (не меньше трех) акробатов одинакового телосложения, которые выстраиваются в «живую» пирамиду. Каждый следующий уровень пирамиды, состоит из меньшего на единицу количества акробатов, нежели предыдущий. Если общее количество акробатов не позволяет построить правильную пирамиду с одним акробатом в самом верхнем ряду — берется максимально возможное число из доступных акробатов, а остальные не учитываются. Ноги акробатов находятся либо на полу, либо на плечах других акробатов. Так как при этом ноги должны быть на ширине плеч, то высота от ног до макушки головы каждого акробата (включая стоящих в самом нижнем ряду) становится на 4% меньше.
    Формат входных данных

    В файле input.txt находятся: количество акробатов n (3<=n<=100), рост акробата h (150<=h<=200) и расстояние от его плеч до макушки s (25<=s<=40) — целые числа, подаются на вход в консоли.
    Формат выходных данных

    Выведите в файл output.txt одно число без пробелов — высоту получившейся пирамиды, округленную до целого вниз.

    Простите, может быть я неудачливая бесхребетная скотина, но мне нужно выучить до 25 числа c++ (я знаю php, так что это еще не ездец, но сложно, как секс с аллигатором) и решить две задачи. Буду признателен тому, кто напишет решения. Необязательно подробно пояснять ход решения и комментить, разберусь. Спасибо большое.
     
    1 person likes this.
  20. InterLife

    InterLife New Member

    Joined:
    18 May 2008
    Messages:
    11
    Likes Received:
    2
    Reputations:
    0
    Спасибо, попробую разобраться
     
Thread Status:
Not open for further replies.