Помогите си++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Tofy, 17 Apr 2011.

  1. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Не могу сделать ввод 2 списков.как сделать что из струкуры видел массив фамилий.
    Полная задача.
    Даны 2 списка бсодержащие фамилии студентов 2-ч групп.
    Перевести L студнтов из 1-й группы во вторую.Число пересчета K (т.е каждый K-й студент из 1-й группы переводится во 2-ю)

    Code:
    #include <iostream>
    struct Student;
    typedef Student* PNode;
    using namespace std;
    struct Student
    {
    int nomer;
    char FIO[20];
    PNode Next;
    };
    void AddFirst(PNode& First,int nomer)
    {
    PNode p= new Student;
    p->nomer=nomer;
    p->Next = First;
    First=p;
    }
    void InputList1(PNode& First,Student arr[])
    {
    int n,nomer;
    cout<<"Ведите колличество студентов: ";
    cin>>n;
    for (int i=1;i<=n;i++){
    cout<<"Введите элемент ";
    	cin>>nomer;
       for (int i=1;i<=n;i++)
    {
    struct Student;
    cin.getline(arr[i].FIO,20);
    AddFirst(First,nomer);
       }
       }
    }
    void PrintList1(PNode First){
    PNode p= First;
    while (p)
    {
    cout<<p->nomer<<' ';
    p=p->Next;
    }
    cout<<endl;
    }
    void InputList2(PNode& Second,Student arr[])
    {
    int n,nomer;
    cout<<"Ведите колличество студентов: ";
    cin>>n;
    for (int i=1;i<=n;i++){
    cout<<"Введите элемент ";
    	cin>>nomer;
       for (int i=1;i<=n;i++)
    {
    
    cin.getline(arr[i].FIO,20);
    AddFirst(Second,nomer);
       }
       }
    }
    void main()
    {
     PNode First = NULL;
     InputList1(First);
     PrintList1(First);
     cout<<"Введите значение для втавки :";
     int nomer;
     cin>>nomer;
     
     PNode Second = NULL;
     InputList2(Second);
     PrintList2(Second);
    cout<<"Введите значение для втавки :";
     cin>>nomer;
    }
    
     
    #1 Tofy, 17 Apr 2011
    Last edited: 17 Apr 2011
  2. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Вот, написал по-быстрому простейший код на уровне первокурсника, надеюсь, разберешься. Вы уже ведь C++0x проходили, шаблоны и контейнеры?
    PHP:
    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>

    template<typename T>
    void input_group(const std::stringtextTcontainer)
    {
        
    std::string name;
        
    std::cout << text << std::endl;

        while(
    true)
        {
            
    std::cin >> name;
            if(
    name == "x" || name == "X")
                break;

            
    container.insert(container.end(), name);
        }
    }

    template<typename T>
    class 
    mover
    {
    public:
        
    mover(unsigned int student_numberTcontainer)
            :
    current_(0), student_number_(student_number), container_(container)
        {}

        
    bool operator()(const std::strings)
        {
            
    current_++;

            if(
    current_ student_number_ == 0)
            {
                
    container_.insert(container_.end(), s);
                return 
    true;
            }

            return 
    false;
        }

    private:
        
    unsigned int student_number_current_;
        
    Tcontainer_;
    };

    int main()
    {
        
    std::vector<std::stringgroups[2];
        
    input_group("Input 1 group family names, input 'x' when finished:"groups[0]);
        
    input_group("Input 2 group family names, input 'x' when finished:"groups[1]);

        
    std::cout << "Input K: " << std::endl;
        
    unsigned int student_number;
        
    std::cin >> student_number;

        if(!
    student_number)
        {
            
    std::cout << "illy1993 fuck you!" << std::endl;
            return 
    0;
        }

        
    groups[0].resize(std::remove_if(groups[0].begin(), groups[0].end(), mover<std::vector<std::string>>(student_numbergroups[1])) - groups[0].begin());

        
    std::cout << "Now 1 group is:" << std::endl;
        
    std::for_each(groups[0].begin(), groups[0].end(), [] (const std::stringname) {std::cout << name << std::endl; });
        
    std::cout << "Now 2 group is:" << std::endl;
        
    std::for_each(groups[1].begin(), groups[1].end(), [] (const std::stringname) {std::cout << name << std::endl; });
        return 
    0;
    }
    Пример: переносим из первой группы во вторую каждого второго студента:
    [​IMG]
     
    2 people like this.
  3. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    Разве такое проходят? C99, 98, нет?
     
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Не слышал о том, что существует стандарт C98 :)
    А C++0x конечно проходят, берут книжки и изучают.
     
  5. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    нет не проходил шаблоны следущая тема динамические массивы тоже плохо понял))

    Твой код вообще не понимаю))))))))))он не на уровне методички.
     
  6. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    скажите, что шагнули в перед и изучили самостоятельно. ведь все заинтересованные студенты так делают ;)
     
  7. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Вот мой стандартты.Не могу доделать задачку,мешает массив с фамилий)) Я не понимаю вообще твоего кода что то))) смысл везде писать std если можно 1раз написать using namespace std?
    #include <iostream>
    #include <string.h>
    #include <conio.h>
    #include <windows.h>
    struct Student;
    typedef Student* PNode;
    using namespace std;
    struct Student
    {
    int nomer;
    char FIO[60];
    PNode Next;
    };
    void AddFirst(PNode& First,int nomer,char Fio[20])
    {
    PNode p= new Student;
    p->nomer=nomer;
    strcpy(p->FIO, Fio);
    p->Next = First;
    First=p;
    }
    void InputList1(PNode& First)
    {
    int n;
    char Fio[60];
    cout<<"Ведите колличество студентов: ";
    cin>>n;
    for (int i=1;i<=n;i++)
    {
    cout<<"Ввдите фио " << i << " студента: ";
    cin >> Fio;
    AddFirst(First,i,Fio);

    }
    }
    void PrintList1(PNode First)
    {
    PNode p= First;
    while (p)
    {
    cout<< p->nomer << ' ' << p->FIO <<endl;
    p=p->Next;
    }
    cout<<endl;
    }
    void InputList2(PNode& First,PNode Second)
    {
    int K;
    cout << "Введите число пересчета К: ";
    cin >> K;
    PNode p = First;
    while (p)
    {
    if (p->nomer%K==0) {
    PNode p1,p2=First;
    while (p2->Next!=NULL)
    p2=p2->Next;
    p1=new Student;
    p1->nomer=nomer;
    p1->Fio=Fio;
    p2->Next=p1;
    p1->Next=NULL;}
    cout<< p->nomer << ' ' << p->FIO <<endl;
    p=p->Next;
    }
    for (int i=1;i<=n;i++)
    {
    cout<<"Ввдите фио " << i << " студента: ";
    cin >> Fio;
    AddFirst(First,i,Fio);

    }
    }
    void main()
    {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    PNode First = NULL;
    InputList1(First);
    PrintList1(First);
    PNode Second = NULL;

    getch();
    //cout<<"Введите значение для втавки :";
    //int nomer;
    //cin>>nomer;

    //PNode Second = NULL;
    //InputList2(Second);
    //PrintList2(Second);
    //cout<<"Введите значение для втавки :";
    //cin>>nomer;
    }
     
    #7 Tofy, 18 Apr 2011
    Last edited: 18 Apr 2011
  8. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Насщянике, ажельме-бежельме, русскама плоха училь! Стандарты си-пласплас изабрёль!

    Смысл в том, что ты знаешь, из какого неймспейса функция - это раз. А во-вторых, избегаешь потенциального конфликта имен при использовании сразу нескольких библиотек.

    Код я тебе написал нормальный, если не нравится 0x - перепиши последние несколько строк, они просто массивы выводят. В остальном всё тот же старый с++. Если вы его не учили, то это не мои проблемы, ты требований по использованию библиотек и возможностей языка не озвучивал.
     
    #8 GRRRL Power, 18 Apr 2011
    Last edited: 18 Apr 2011
  9. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Я не когда не встречал противоречий и ошибок с using namespace std.
    Ты на таком стандарте си++ как я пишу можешь задачу дописать?Не получается сделать так чтобы не было конфликтов с фамилиями в функциях.
     
  10. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    ну хорошо, уговорил.

    PHP:
    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>

    template<typename T>
    void input_group(const std::stringtextTcontainer)
    {
        
    std::string name;
        
    std::cout << text << std::endl;

        while(
    true)
        {
            
    std::cin >> name;
            if(
    name == "x" || name == "X")
                break;

            
    container.insert(container.end(), name);
        }
    }

    template<typename T>
    class 
    mover
    {
    public:
        
    mover(unsigned int student_numberTcontainer)
            :
    current_(0), student_number_(student_number), container_(container)
        {}

        
    bool operator()(const std::strings)
        {
            
    current_++;

            if(
    current_ student_number_ == 0)
            {
                
    container_.insert(container_.end(), s);
                return 
    true;
            }

            return 
    false;
        }

    private:
        
    unsigned int student_number_current_;
        
    Tcontainer_;
    };

    struct printer
    {
        
    void operator()(const std::stringname)
        {
            
    std::cout << name << std::endl;
        }
    };

    int main()
    {
        
    std::vector<std::stringgroups[2];
        
    input_group("Input 1 group family names, input 'x' when finished:"groups[0]);
        
    input_group("Input 2 group family names, input 'x' when finished:"groups[1]);

        
    std::cout << "Input K: " << std::endl;
        
    unsigned int student_number;
        
    std::cin >> student_number;

        if(!
    student_number)
        {
            
    std::cout << "illy1993 fuck you!" << std::endl;
            return 
    0;
        }

        
    groups[0].resize(std::remove_if(groups[0].begin(), groups[0].end(), mover<std::vector<std::string>>(student_numbergroups[1])) - groups[0].begin());

        
    std::cout << "Now 1 group is:" << std::endl;
        
    std::for_each(groups[0].begin(), groups[0].end(), printer());
        
    std::cout << "Now 2 group is:" << std::endl;
        
    std::for_each(groups[1].begin(), groups[1].end(), printer());
        return 
    0;
    }
    Тот же стандарт, на котором пишешь ты!
     
  11. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Факью ты себе будешь показывать! Я не учил таких стандартов и у тебя в коде ошибки.
    #include <vector> зачем мне вообще библиотека)).
     
    #11 Tofy, 18 Apr 2011
    Last edited: 18 Apr 2011
  12. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Это тот же стандарт, на котором пишешь ты, как ты и просил. У меня нет ошибок, я тебе пример работы привел, а если ты компилируешь в древнеговнокомпиляторе, чьи это проблемы?
     
  13. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Древним)) ага Visual 2010 старье))
     
  14. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Тогда о чем это говорит? О том, что кривые руки и полное отсутствие знаний и осведомленности в вопросе программирования на C++. Более того, даже текст ошибок отсутствует. Не удивлюсь, если ты не в курсе, что вообще говорит компилятор, ОШИБКИ!!! ведь.
     
  15. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Я не люблю таких людей которые возобнили себе ,что они тут попы гороховые.Если ты не хочешь помочь не нужно писать здесь.Если ты такой умный сиди и программируй молча.То тебе мой русский плох,то еще что то)),я нормально попросил помочь дописать мою программу по моему алгоритму,решить проблемму с фамилиями(занесенными в массив ,а не решать через строковую переменную),а не написать алгоритм не с навыками уже профессионального программиста,который стряппает уже приложения.
    1>3лабораторная.cpp
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(67) : error C2059: синтаксическая ошибка: [
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(67) : error C2143: синтаксическая ошибка: отсутствие ")" перед "{"
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(67) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(67) : error C2065: name: необъявленный идентификатор
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(67) : error C2059: синтаксическая ошибка: )
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(69) : error C2059: синтаксическая ошибка: [
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(69) : error C2143: синтаксическая ошибка: отсутствие ")" перед "{"
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(69) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(69) : error C2065: name: необъявленный идентификатор
    1>c:\users\илья\documents\visual studio 2010\projects\3лабораторная\3лабораторная\3лабораторная.cpp(69) : error C2059: синтаксическая ошибка: )
     
  16. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    Ох нет, теперь это "плиз, напишите говнокод в моем стиле"-тред. Все в машину!
     
  17. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Я тебе помог. А если ты не хочешь разобраться - то это не моя задача, учить тебя как нянька.
    Извини, но это так
     
  18. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    В чем мой код гавно,если в методички стандарт которому я придерживаюсь.
     
  19. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    мeтодa гуaн, обычноe дeло. юзaйтe прaвильныe доки.
     
  20. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Я не пойму вас программисты)все вы учились по методичкам,и утверждаете теперь,когда научились не плохо писать софт ,что они гавно))))