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

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

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

    ankden New Member

    Joined:
    28 Apr 2008
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    описался извините тройки чисел
    те например вводится цыфры 123187456 вывод должен быть 123 456
    187 выводиться не должно така как 7>8
    Помогите плиз очень надо
     
  2. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Ок, накрапаю от нечего делать
     
  3. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    источник: http://www.intuit.ru/department/se/pbmsu/8/6.html
    +
    http://www.firststeps.ru/html/js/r.php?3
    Это не я придумал ;)
     
  4. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Я доверяю проверенным гуру типо Страуструпа, а не преподавателям с интуита.
    Переношу обсуждение в личку.
     
  5. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    язык? формат ввода?
     
    #985 4p3, 8 Jan 2009
    Last edited: 8 Jan 2009
  6. jawbreaker

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

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    4p3
    Всё правильно он говорит, "И" или конъюнкция или логическое умножение, таблица истинности:
    x y x&y
    1 1 1
    1 0 0
    0 1 0
    0 0 0
    умножением называется потому что результат равен 1 только если оба операнда = 1.
    "ИЛИ" или дизъюнкция или логическое сложение, таблица истинности:
    x y x|y
    1 1 1
    1 0 1
    0 1 1
    0 0 0
    я думаю очевидно почему называется сложением =)
    Насколько я понял речь идёт о перемножении 2-х чисел в двоичной системе счислений, в этом случае criz не прав потому что перемножать надо так же как и в случае с десятичными числами, только брать результат по модулю 2.
    C-шный код для работы с двоичной системой:
    PHP:
    Binary arithmatic

    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<math.h>

    void b_to_d(char result[]); //binary to decimal
    void d_to_b(int dec,char binary[]); // decimal to binary

    main()
    {
        
    int ch,n1,n2,i=0,j,k,l,carry,r,x1,x2,x;
        
    char bn1[30],bn2[30],result[30],binary[30];
        
    char multi[30][30];
        
    clrscr();
        do
        {
            
    printf("<1> input first operand \n");
            
    printf("<2> input second operand \n");
            
    printf("<3> binary addition \n");
            
    printf("<4> binary subtraction \n");
            
    printf("<5> binary multiplation \n");
            
    printf("<6> result to decimal \n");
            
    printf("<7> Exit \n\n");
            do
            {
                
    printf("enter your choice ");
                
    scanf("%d",&ch);
            }while(
    ch>|| ch<1);
            switch (
    ch)
            {
                case 
    1:
                    
    printf("\n input first operand ");
                    
    scanf("%d",&n1);
                    
    x1=n1;
                    
    d_to_b(n1,binary);
                    for(
    i=0;binary[i]!='\0';++i)
                        
    bn1[i]=binary[i];
                    
    bn1[i]='\0';
                    break;
                case 
    2:
                    
    printf("\n input second operand ");
                    
    scanf("%d",&n2);
                    
    x2=n2;
                    
    d_to_b(n2,binary);
                    for(
    i=0;binary[i]!='\0';++i)
                        
    bn2[i]=binary[i];
                    
    bn2[i]='\0';
                    break;
                case 
    3:        //addition
                    
    for(i=0;i<30;++i)      //reset result
                        
    result[i]='\0';
                    
    carry=0;
                    if(
    strlen(bn1)<strlen(bn2))
                        
    r=strlen(bn2);
                    else
                        
    r=strlen(bn1);
                    for(
    i=0;i<r;++i)
                    {
                        
    result[i+1]='\0';
                        if(
    carry==0)
                        {
                            if(
    bn1[i]-48+bn2[i]-48+carry==1)
                                
    result[i]=bn1[i]-48+bn2[i]-48+48;
                            else
                                
    result[i]=0+48;
                        }
                        else
                        {
                            if(
    bn1[i]-48+bn2[i]-48+carry==2)
                                
    result[i]=0+48;
                            else
                                
    result[i]=1+48;
                        }
                        if(
    bn1[i]-48+bn2[i]-48+carry>1)
                            
    carry=1;
                        else
                            
    carry=0;
                        if(
    carry==1)
                            
    result[i+1]=carry+48;
                    }
                    
    printf("\n%s\n",strrev(result));
                    break;
                case 
    4:        //subtraction
                    
    for(i=0;i<30;++i)      //reset result
                        
    result[i]='\0';
                    
    carry=0;
                    if(
    strlen(bn1)<strlen(bn2))
                        
    r=strlen(bn2);
                    else
                        
    r=strlen(bn1);
                    for(
    i=0;i<r;++i)
                    {
                        
    result[i+1]='\0';
                        if(
    bn1[i]<bn2[i])
                            
    carry=2,--bn1[i+1];
                        else
                            
    carry=0;
                        if(
    carry+bn1[i]-48-bn2[i]+48==1)
                            
    result[i]=1+48;
                        else
                            if(
    carry+bn1[i]-48-bn2[i]+48==0)
                                
    result[i]=0+48;
                    }
                    
    printf("\n%s\n",strrev(result));
                    break;
                case 
    5:        //binary multiplication complited on 27-03-2004
                    
    for(i=0;i<30;++i)      //reset result
                        
    result[i]='\0';
                    
    strrev(bn2); // reversing second binary operand
                    
    k=0,x=0;
                    for(
    i=0;i<strlen(bn2);++i)  //creating array for addition
                        
    if(bn2[i]=='1')
                        {
                            for(
    j=i+1;bn2[j]!='\0';++j)
                                
    multi[k][x++]='0';
                            for(
    l=0;bn1[l]!='\0';++j,++l)
                                
    multi[k][x++]=bn1[l];
                            for(;
    x<30;++j)
                                
    multi[k][x++]='0';
                        ++
    k,x=0;
                        }
                    
    l=0;
                    for(
    j=0;j<30;++j)  //addition of all columns without carry
                    
    {
                        
    x=0;
                        for(
    i=0;i<k;++i)
                            
    x+=(multi[i][j]-48);
                        
    multi[0][l++]=x;
                    }
                    for(
    i=0;i<30;++i)   //loop for including carry.
                        
    if(multi[0][i]>1)
                            
    multi[0][i+1]+=((multi[0][i]-(multi[0][i]%2))/2);
                    
    printf("\n");
                    for(
    i=29;i>=0;--i)  // excluding first zero's (0's) of array
                        
    if(multi[0][i]!=0)
                            break;
                    
    j=0;
                    for(;
    i>=0;--i)   // final calculations and print
                        
    if(multi[0][i]<48)
                        {
                            
    multi[0][i]%=2;
                            
    result[j++]=multi[0][i]+48;
                               
    //    printf("%d",multi[0][i]);
                        
    }
                    
    printf("\n");
                    
    printf("%s\n",result);
                    break;
                case 
    6:        //result in decimal
                    
    b_to_d(result);
                    
    printf("\n");
                    break;
            }
            
    n1=x1;
            
    d_to_b(n1,binary);
            for(
    i=0;binary[i]!='\0';++i)
                
    bn1[i]=binary[i];
            
    bn1[i]='\0';

            
    n2=x2;
            
    d_to_b(n2,binary);
            for(
    i=0;binary[i]!='\0';++i)
                
    bn2[i]=binary[i];
            
    bn2[i]='\0';

        }while(
    ch!=7);
        
    printf("\n\n i will wait for your mails");
        
    getch();
        return 
    0;
    }

    void b_to_d(char result[]) //binary to decimal
    {
        
    short int i;
        
    long int dec=0;
        
    strrev(result);
        for(
    i=0;i<strlen(result);++i)
            
    dec+=(result[i]-48)*pow(2,i);
        
    printf("result in decimal is %ld\n",dec);
        
    strrev(result);
    }

    void d_to_b(int dec,char binary[]) // decimal to binary
    {
        
    int i=0;
        while(
    dec>0)
        {
            
    binary[i++]=dec%2+48;
            
    binary[i]='\0';
            
    dec-=(dec%2);
            
    dec/=2;
        }
    }

     
    #986 jawbreaker, 8 Jan 2009
    Last edited: 8 Jan 2009
  7. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Совершенно верно. В реквесте было именно арифметическое умножение. Потому & неприменим.
     
    #987 4p3, 8 Jan 2009
    Last edited by a moderator: 9 Jan 2009
  8. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    PHP:

    //---------------------------------------------------------------------------
    #include <iostream>
    #include <cstdlib>
    #include <assert.h>
    #pragma hdrstop

    namespace
    {
            
    using std::cout;
            
    using std::cin;
            
    using std::endl;
            
    using std::system;
    };

    typedef unsigned int uint;
    //---------------------------------------------------------------------------

    #pragma argsused
    int main(int argccharargv[])
    {
            
    uint nNumb  0;
            
    int *pnArray NULL;
            
    cout << "Enter number of digits: ";
            
    cin  >> nNumb;

            if (
    nNumb && nNumb 30)
                    
    pnArray = new int[nNumb];
            else
            {
                    
    cout << "number of digits too smal or too large" << endl;
                    return 
    1;
            }

            
    assert(pnArray != NULL);

            
    cout << "Enter digits: " << endl;
            for (
    uint i 0;nNumb;++i)
                    
    cin >> pnArray[i];

            for (
    uint i 0;nNumb;i++)
            {
                    if (
    i+>= nNumb)
                            break;

                    if (
    pnArray[i] < pnArray[i+1] < pnArray[i+2])
                            
    cout << pnArray[i] << pnArray[i+1] << pnArray[i+2]
                                 << 
    endl;
            }

            
    delete []pnArray;
            
    pnArray NULL;
            
    system("pause");
            return 
    0;
    }
    //---------------------------------------------------------------------------
     
    #988 4p3, 9 Jan 2009
    Last edited: 9 Jan 2009
  9. ankden

    ankden New Member

    Joined:
    28 Apr 2008
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    Enter number of digits ввожу 3
    Enter digits ввожу 123 435 907
    выдает 12435907,а надо было вводить цифры наприсер 123435907
    а выдать должно было 123
     
  10. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Надо вывести первые три(number) числа?
     
  11. ankden

    ankden New Member

    Joined:
    28 Apr 2008
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    нет надо выбрать идущие подряд тройки цифр упорядоченных по возрастаню
    т.е например вводится цыфры 123187456 вывод должен быть 123 456
    187 выводиться не должно така как 7<8
    Помогите плиз очень надо
     
  12. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    2 ankden:
    Code:
    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {                    
            int str[10] = {2,3,3,5,6,7,4,5,6};
            int i;
            int t = 0;
            for(i = 0; i < 10; i++)
            {
                    if((str[i+1] - str[i] == 1))
                    {
                            printf("%d", str[i]);
                            t++;
                    }
                    if(((i+1)%3 == 0) && (t == 2))
                    {
                            printf("%d", str[i]);
                            t = 0;
                    }
            }
            return 0;
    }
    
    так?
     
  13. ankden

    ankden New Member

    Joined:
    28 Apr 2008
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    нет программа выдает 25645
    задача я с клавиатуру ввожу цыфры вывыеси долно тройки чисел упорядоченных по возрастанию
    например 345678098 вывод 345 678
    098 выводить не должно тк цыфры идуть не повозрастанию
     
  14. _antony

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

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    rectangle функцию смотри.
     
  15. Stil Free

    Stil Free New Member

    Joined:
    20 Dec 2008
    Messages:
    28
    Likes Received:
    4
    Reputations:
    2
    Немогу найти действие как завершить процесс на компе при помощи делфи....
     
  16. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    number of digits - количество цифр, которые ты будешь вводить. формат ввода "ц ц ц ц", где количество ц - number of digits.
     
  17. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    А почему вывод именно такой? Ведь 456, 567,678 тоже образуют тройку чисел.
     
  18. WALKMAN

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

    Joined:
    30 Dec 2007
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    Ребята помогите с такой задачей (решать мне ее не надо, просто попытайтесь обяснить что дано и что найти понятнее):

    "Дан текст.
    Найти номер первой по порядку группы цифр (см. задачу 812), которые начинаються цифрой 2"

    Задача 812:

    "Дан текст, каждый символ которого может быть буквой, цифрой или одним из знаков +, -, *. Группой букв будем называть такую совокупность последовательно расположеных букв, которой непосредственно не предшестует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков."

    Собственно из всего етого непонятно такое "...Группой букв будем называть такую совокупность последовательно расположеных букв, которой непосредственно не предшестует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков..."" Вобщем расстолкуйте плиз что надо пожалуйста.
     
  19. AnOcToJI

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

    Joined:
    10 Aug 2008
    Messages:
    45
    Likes Received:
    17
    Reputations:
    0
    как в проге на C++ или Daelphi можно сделать так что бы она автоматически находила на компе IP и выводила сразу в ричэдит или в подобное ?
     
  20. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Дается определение последовательности.
    К примеру "123фвыфыв+-23". Последовательность букв здесь "фвыфвы" так как слева она граничит с 3, а 3 является элементом последовательности цифр, а справа с +, который является элементом последовательности знаков.

    Я думаю надо определить что такое последовательность цифр и знаков.
    Только я ХЗ как это относится к коддингу.
     
Thread Status:
Not open for further replies.