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

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

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

    warkk Member

    Joined:
    20 Feb 2009
    Messages:
    139
    Likes Received:
    23
    Reputations:
    0
    Эм.. Точно, чет затупил, сори) Но проблема актуальна, как определить длину упорядоченной части массива?
     
  2. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16






    я бы делал примерно так.

    :rolleyes:
     
  3. G4bR1eL

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

    Joined:
    25 Mar 2008
    Messages:
    70
    Likes Received:
    3
    Reputations:
    0
    Кто поможет, не пожалею WMZ. :)
     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    warkk
    Code:
    t:=0;
    for i:=0 to n-1 do
    begin
    	if m[i]<m[i+1] then k:=k+1
    	else k:=1;
    	if t<k then t:=k;
    end;
     
    _________________________
    1 person likes this.
  5. >>serhio<<

    >>serhio<< New Member

    Joined:
    10 Feb 2009
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    Turbo Pascal Дан массив размера N.Осуществить циклический сдвиг элементов массива вправо на одну позицию с запоминанием первого элемента исправте что неправильно.
    var
    a:array [1..100] of integer;
    i,n,temp:integer;
    begin
    writeln('Vvedite n=');
    readln(n);
    writeln('Vvedite massiv');
    for i:=1 to n do
    readln (a);
    for i:=n downto 2 do
    a:=a[i-1];
    for i:=1 to n do
    i:=1;
    temp:=a[i+1];
    a[i+1]:=a;
    temp:=a[n];
    a[1]:=a[n];
    writeln (a);
    readln;
    end.
     
  6. Roston

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

    Joined:
    31 Jul 2008
    Messages:
    337
    Likes Received:
    104
    Reputations:
    8
    тобишь что бы можна было вызвать первый елемент старого масива?


    а что собно не получается?
     
  7. >>serhio<<

    >>serhio<< New Member

    Joined:
    10 Feb 2009
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    проверь в паскале там программа неправильно работает
     
  8. Roston

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

    Joined:
    31 Jul 2008
    Messages:
    337
    Likes Received:
    104
    Reputations:
    8
    сорри паскаль не стоит... в голове компилю
     
  9. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    G4bR1eL
    подсичтывать результат надо так
     
  10. warkk

    warkk Member

    Joined:
    20 Feb 2009
    Messages:
    139
    Likes Received:
    23
    Reputations:
    0
    2 >>serhio<<
    Ну сдесь

    В цикле у тебя выполнятеся только i:=1 тобишь после
    for i:=1 to n do нужен begin end;
    И я не пойму зачем ты в цикле каждый раз присваиваешь переменной i значение одиницы?
    И что ты пытаешся сделать в этой чати?
     
    #1870 warkk, 21 Nov 2009
    Last edited: 21 Nov 2009
  11. GL_Loney

    GL_Loney New Member

    Joined:
    19 Jun 2009
    Messages:
    54
    Likes Received:
    1
    Reputations:
    -10
    Дана строка s, содержащая от 2 до 25 слов, в каждом из которых от 1 до 8
    строчных латинских букв. Между соседними словами стоит не менее одного
    пробела, за последним словом - точка. Напечатайте слова строки, которые
    отличны от последнего слова и первая буква слова входит в него еще раз.

    Нужно написать на СИ. Спасибо заранее.
     
  12. nevert

    nevert New Member

    Joined:
    27 Jul 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Всем привет! У меня 5 лабараторных! Они сделаны только криво работают, очень прошу посмотрите что не так в коде!:


     
  13. Muxa1L

    Muxa1L New Member

    Joined:
    9 Apr 2007
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    В лабе 8 по-хорошему должно быть так:
    Code:
    Program PR8;
    Uses Crt;
    Const n=15;
    Var
    D:array [1..n] of integer;
    b,i:integer;
    begin
      TextAttr:=$4B; // зачем это вообще не знаю...
      ClrScr;  
      randomize; 
      for i:=1 to n do
      begin
        D[i]:=random(20)-10;
        write(D[i]:4);
      end;
      writeln;
      for i:=1 to n do
      begin
        IF D[i]>5 then D[i]:=D[i] div 3 // так как у нас массив интежеров.
          else D[i]:=D[i]+4;
       writeln (D[i]:4:2);
      end;
      writeln;
      readln;
    end. 
    В лабе 9 вместо того, чтоб искать произведение отрицательных элементов - ищет положительные.

    Code:
    Лаба 12
    Задание
    Дан массив O(15,3) Найти произведение отрицательных элементов массива и подсчитать их количество.
    
    Решение:
    
    Program PR12;
    Uses Crt;
    Const n=5;m=3; //тут указывается, что матрица у тебя 5 на 3 а не 15 на 3.
    Var
      O:array [1..n, 1..m] of integer;
      i,j,p,k:integer;
    begin
      TextAttr:=$4B;ClrScr;
      randomize;
      for i:=1 to n do
      begin        // здесь не было for по j
        for j:=1 to m do
        begin
          O[i,j]:=random(20)-10;
          write(O[i,j]:4);
        end;
        writeln;
      end;
    
    p:=1;
    k:=0;
    for i:=1 to n do
    for j:=1 to m do
    begin
    IF O[i,j]<0 then p:=p*O[i,j];
    K:=K+1; // это можно заменить на inc(K);
    end;
    
    writeln ('p=',p:5);
    writeln ('k=',k);
    readln;
    end.
    А остальное вроде правильно.

    Помог бы кто мне с моей лабой... В которой нужно разработать компилятор языка похожего на пхп... Скорее даже не компилятор, а транслятор в ассемблерный код.
     
    #1873 Muxa1L, 22 Nov 2009
    Last edited: 22 Nov 2009
  14. D=P=CH= MOD=

    D=P=CH= MOD= Elder - Старейшина

    Joined:
    15 Aug 2006
    Messages:
    249
    Likes Received:
    195
    Reputations:
    15
    Помогите пожалуйста сделать работу. Язык Си. Буду очень благодарен помощи.

    Задачка:
    Создать оконное приложение. В клиентской области осуществить вывод графика предложенной вам функции. График функции должен быть дополнен координатными осями с указанием единичных отрезков. Создать диалоговое окно, позволяющее производить выбор диапазона вывода значений функции и осуществлять подписи на осях графика. Создать диалоговое окно, позволяющее производить масштабирование графика. Создать диалоговое окно, позволяющее производить смещение центра координат графика. Создать диалоговое окно, позволяющее изменять задаваемые параметры функции. Создать диалоговое окно в котором можно будет задавать цвета графика и координатных осей, и стиль линий для координатных осей.
    Рисунок варианта:
    http://img130.imageshack.us/img130/9003/clipimage002f.gif
     
  15. Syntaxys

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

    Joined:
    2 Sep 2007
    Messages:
    61
    Likes Received:
    10
    Reputations:
    0
    Матрицу K(m,n) заполнить слудующим образом. Элементам, находящимся на периферии (по периметру матрицы), присвоить значение периметру оставшейся матрицы - значение 2 и т.д. до заполнения матрицы.

    Это как я понял должно быть что-то вроде:


    0 0 0 0 0 0 0 0 0 0
    0 1 1 1 1 1 1 1 1 0
    0 1 9 9 9 9 9 9 1 0
    0 1 9 3 3 3 3 9 1 0
    0 1 9 3 2 2 3 9 1 0
    0 1 9 3 2 2 3 9 1 0
    0 1 9 3 3 3 3 9 1 0
    0 1 9 9 9 9 9 9 1 0
    0 1 1 1 1 1 1 1 1 0
    0 0 0 0 0 0 0 0 0 0


    Собственно, это сделал.

    Дальше:

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

    То есть если было


    10 0 0 0 0 0 0 0 0 0
    10 2 1 1 1 1 1 1 1 0
    10 1 3 9 9 9 9 9 1 0
    10 1 9 4 3 3 3 9 1 0
    10 1 9 3 5 2 3 9 1 0
    10 1 9 3 2 2 3 9 1 0
    10 1 9 3 3 3 3 9 1 0
    10 1 9 9 9 9 9 9 1 0
    10 1 1 1 1 1 1 1 1 0
    10 0 0 0 0 0 0 0 0 0


    Должно стать:


    10 10 0 0 0 0 0 0 0 0
    10 1 2 1 1 1 1 1 1 0
    10 1 9 3 9 9 9 9 1 0
    10 1 9 3 4 3 3 9 1 0
    10 1 9 3 2 5 3 9 1 0
    10 1 9 3 2 2 3 9 1 0
    10 1 9 3 3 3 3 9 1 0
    10 1 9 9 9 9 9 9 1 0
    10 1 1 1 1 1 1 1 1 0
    0 0 0 0 0 0 0 0 0 0


    Вот что получилось:

    Code:
    Program Neprogram;
    type K=array [0..10,0..10] of integer;
    Procedure zapolnenie(var x:K);
       Var m,n,gran,znach,i:integer;
           Begin
              randomize;
              gran:=0;
                 for i:=1 to 10 do
                   begin
                   znach:=trunc((10-1)*random+1);
                   gran:=gran+1;
                     for m:=1+gran to 10-gran do
                         for n:=1+gran to 10-gran do
                              x[m,n]:=znach;
                   end;
                  end;
    Procedure povorot(var x:K);        [COLOR="#ff0000"]//процедура поворота[/COLOR]
       Var m,n,gran,i,buff,a:integer;
         Begin
           x[1,1]:=A;                         //Это чтоб проверить 
           x[2,1]:=A;                                 поворачивает или нет.
           x[3,1]:=A;
           x[4,1]:=A;
           x[5,1]:=A;
           x[6,1]:=A;
           x[7,1]:=A;
           x[8,1]:=A;
           x[9,1]:=A;
           x[10,1]:=A;
           gran:=0;                          //Изначально грань = 0
               for i:=1 to 5 do            //выполняем для x/2 слоев,
                 begin                             в нашем случае для 5
                      buff:=x[n+gran,m+gran]; //сохраняем верхнее левое значение
                     [COLOR="YellowGreen"]//считаем левую границу периферии[/COLOR]
                     n:=1+gran;
                         for m:=1+gran to 9-gran do
                             x[m,n]:=x[m+1,n];
    [COLOR="YellowGreen"]//нижнюю[/COLOR]
                      m:=10-gran;
                         for n:=1+gran to 9-gran do
                             x[m,n]:=x[m,n+1];
     [COLOR="YellowGreen"]//правую[/COLOR]
                      n:=10-gran;
                         for m:=10-gran downto 2+gran do
                             x[m,n]:=x[m-1,n];
     [COLOR="YellowGreen"]//верхнюю[/COLOR]
                      m:=1+gran;
                         for n:=10-gran downto 3+gran do
                             x[m,n]:=x[m,n-1];
                      x[n+gran+1,m+gran]:=buff;//возвращаем утерянное значение
                      gran:=gran+1; //увеличиваем грань
                 end;
          end;
    Var x:K;
        m,n:integer;
    
    Begin
    zapolnenie(x);
    for m:=1 to 10 do
     begin
      writeln(' ');
       for n:=1 to 10 do
           write(x[m,n],' ');
      end;
      writeln(' ');
      povorot(x);
      writeln(' ');
      for m:=1 to 10 do
     begin
      writeln(' ');
       for n:=1 to 10 do
           write(x[m,n],' ');
      end;
      writeln(' ');
    end.
    
    Пишет ошибку на 35 строке:

    Code:
    buff:=x[n+gran,m+gran];
    Code:
    »22098432 - выход за границы диапозона изменения  индекса 0..10
    Не могу сообразить почему :hmm:
     
  16. Filosof_77

    Filosof_77 New Member

    Joined:
    6 Aug 2009
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    привет момогите с задачками на С++
    =)

    1.Создать класс студент, который имеет имя, курс и идентификационный номер. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - студент-дипломник, который содержит тему диплома. Определить конструкторы за умалчиванием и с разным числом параметров, деструкторы, функцию печати. Определить функции переназначения названия диплома и идентификационного номера.

    2. Создать класс комната, которая имеет площадь. Определить конструктор и метод доступа. Создать класс однокомнатная квартира, которая содержит комнату и кухню (ее площадь), этаж (комната содержится в классе однокомнатная квартира). Определить конструкторы, методы доступа. Определить public-производный класс однокомнатных квартир разных городов (дополнительный параметр - название города). Определить конструкторы, деструктор и функцию печати.

    буду очень благодарен!!
     
  17. Xcontrol212

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

    Joined:
    13 Feb 2008
    Messages:
    253
    Likes Received:
    110
    Reputations:
    7
    Задача по С++!

    Определить класс квадратная матрица. В класс включить два конструктора для определения матрицы по количеству элементов и путем копирования другой матрицы. Предусмотреть функцию нахождения седловой точки матрицы и функцию, меняющую местами элементы матрицы, симметричные относительно побочной диагонали.

    Определить класс вектор. В класс включить два конструктора для определения вектора по его размеру и путем копирования другого вектора. При задании вектора по его размеру предусмотреть его заполнение случайными числами.
    Определить операции над векторами:
    | формирование нового вектора так, что каждый элемент нового вектора определяется следующим образом: c=(a>b)?b:a;
    -- определить наименьший элемент вектора.

    Описать параметризованный класс массив с двумя аргументами. Предусмотреть выполнение функций формирования массива, поиска заданного значения в массиве.
     
  18. M.W.N.N.

    M.W.N.N. Member

    Joined:
    5 Jan 2009
    Messages:
    173
    Likes Received:
    78
    Reputations:
    6
    как реализовать данное в консольном приложении на С?
    Вводим действие допустим 4*6+3.
    Поскольку только недавно начал изучать С я думал так:
    Объявить строковую переменную в которой занесется 4*6+3,
    потом через функцию преобразования строковых переменных в числовые atoi()
    занести в числовую переменную (при объявлении переменной числовой a=4*3+2 считает нормально)
    и она посчитает, но так не получается. Выводит только первый символ.
    То что я пробовал:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    char a[255];
    int b;
    printf("vvedite deistvie: \n");
    gets(a);
    b=atoi(a);
    printf("Ravno: %d",b);
    }
    
    В голову пришла мысль: записывать все содержимое в txt файл искать сперва
    символы * и слева и справа от найденного знака числа и перемножать их и.т.д.
    далее перейти к поиску делений, суммирования. Но как это реализовать?
     
  19. 0ldbi4

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

    Joined:
    14 Apr 2008
    Messages:
    264
    Likes Received:
    51
    Reputations:
    10
    M.W.N.N. Си не учил, но по аналогии с делфи просто перебираешь строку читаешь каждый символ до первого действия, записываешь в массив, после записываешь какое действие там было, ищешь дальше и тп до конца строки.
    Также нужны функции или процедуры на сложение вычитание умн и дел, после того как прошол строку берешь первое действие в строке и стравниваешь его с "заготовкой" например если это сложение вызваешь функцию сложения с аргументами первыми элементами массива, ответ записываешь в индекс второго эллемента и продолжаешь..

    Но тут не будет превильной последовательности выполнения действий типо сначало умножение а потом сложение, но это не сложно реализовать.

    ЗЫ надеюсь помог
     
    1 person likes this.
  20. tester8

    tester8 New Member

    Joined:
    25 Oct 2009
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    мне никто так и не помог..(
     
Thread Status:
Not open for further replies.