Не могу сделать ввод 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; }
Вот, написал по-быстрому простейший код на уровне первокурсника, надеюсь, разберешься. Вы уже ведь C++0x проходили, шаблоны и контейнеры? PHP: #include <iostream> #include <vector> #include <string> #include <algorithm> template<typename T> void input_group(const std::string& text, T& container) { 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_number, T& container) :current_(0), student_number_(student_number), container_(container) {} bool operator()(const std::string& s) { current_++; if(current_ % student_number_ == 0) { container_.insert(container_.end(), s); return true; } return false; } private: unsigned int student_number_, current_; T& container_; }; int main() { std::vector<std::string> groups[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_number, groups[1])) - groups[0].begin()); std::cout << "Now 1 group is:" << std::endl; std::for_each(groups[0].begin(), groups[0].end(), [] (const std::string& name) {std::cout << name << std::endl; }); std::cout << "Now 2 group is:" << std::endl; std::for_each(groups[1].begin(), groups[1].end(), [] (const std::string& name) {std::cout << name << std::endl; }); return 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; }
Насщянике, ажельме-бежельме, русскама плоха училь! Стандарты си-пласплас изабрёль! Смысл в том, что ты знаешь, из какого неймспейса функция - это раз. А во-вторых, избегаешь потенциального конфликта имен при использовании сразу нескольких библиотек. Код я тебе написал нормальный, если не нравится 0x - перепиши последние несколько строк, они просто массивы выводят. В остальном всё тот же старый с++. Если вы его не учили, то это не мои проблемы, ты требований по использованию библиотек и возможностей языка не озвучивал.
Я не когда не встречал противоречий и ошибок с using namespace std. Ты на таком стандарте си++ как я пишу можешь задачу дописать?Не получается сделать так чтобы не было конфликтов с фамилиями в функциях.
ну хорошо, уговорил. PHP: #include <iostream> #include <vector> #include <string> #include <algorithm> template<typename T> void input_group(const std::string& text, T& container) { 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_number, T& container) :current_(0), student_number_(student_number), container_(container) {} bool operator()(const std::string& s) { current_++; if(current_ % student_number_ == 0) { container_.insert(container_.end(), s); return true; } return false; } private: unsigned int student_number_, current_; T& container_; }; struct printer { void operator()(const std::string& name) { std::cout << name << std::endl; } }; int main() { std::vector<std::string> groups[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_number, groups[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; } Тот же стандарт, на котором пишешь ты!
Факью ты себе будешь показывать! Я не учил таких стандартов и у тебя в коде ошибки. #include <vector> зачем мне вообще библиотека)).
Это тот же стандарт, на котором пишешь ты, как ты и просил. У меня нет ошибок, я тебе пример работы привел, а если ты компилируешь в древнеговнокомпиляторе, чьи это проблемы?
Тогда о чем это говорит? О том, что кривые руки и полное отсутствие знаний и осведомленности в вопросе программирования на C++. Более того, даже текст ошибок отсутствует. Не удивлюсь, если ты не в курсе, что вообще говорит компилятор, ОШИБКИ!!! ведь.
Я не люблю таких людей которые возобнили себе ,что они тут попы гороховые.Если ты не хочешь помочь не нужно писать здесь.Если ты такой умный сиди и программируй молча.То тебе мой русский плох,то еще что то)),я нормально попросил помочь дописать мою программу по моему алгоритму,решить проблемму с фамилиями(занесенными в массив ,а не решать через строковую переменную),а не написать алгоритм не с навыками уже профессионального программиста,который стряппает уже приложения. 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: синтаксическая ошибка: )
Я тебе помог. А если ты не хочешь разобраться - то это не моя задача, учить тебя как нянька. Извини, но это так
Я не пойму вас программисты)все вы учились по методичкам,и утверждаете теперь,когда научились не плохо писать софт ,что они гавно))))