Тролль Опубликовано 29 апреля, 2012 Жалоба Поделиться Опубликовано 29 апреля, 2012 (изменено) sizetooo сортировка Шелла. в самом начале, мы должны указать количество элементов в массиве, а в конце выдать первоначальный массив, заданный случайно, и отсортированный массив, а так же количество перестановок и сравнений. //Shellsort (Shell, Schildt, Ciura)#include<stdio.h>#include<stdlib.h>#include<time.h>int p=0, s=0;void shell(int *it, int ct){int i,j,g,k; int x,a[9]={1750,701,301,132,57,23,10,4,1};for(k=0;k<9;k++){ g=a[k]; for(i=g;i<ct;++i){ x=it[i]; for(j=i-g; s+=2,x<it[j]&&j>=0; j-=g)it[j+g]=it[j]; it[j+g]=x; p++;}}}int main(){int i,n,m[1000]; printf("n? "); scanf("%d",&n);for(i=0;i<n;i++)m[i]=rand()%1000;for(int i=0;i<n;i++)printf("%4d",m[i]); printf("\n");shell(m,n);for(int i=0;i<n;i++)printf("%4d",m[i]); printf("\n");printf("s=%5d\n",s); printf("p=%5d\n",p); getchar(); getchar();} Сделано по реализации Шилдта по ссылке из прежнего сообщения с выбором границ сортируемых сегментов по Циуре (статья по сортировке Шелла в Википедии). Изменено 29 апреля, 2012 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 29 апреля, 2012 Жалоба Поделиться Опубликовано 29 апреля, 2012 NickLid Когда я попытался сделать чтобы рандомно выдавал мне элементы дерева, во-первых он за место чисел везде ставил й, а во-вторых при нахождении элементов на уровне он всегда показывал только единицу, при этом я убирал тестовое дерево???? Можете убрать тестовое дерево и сделать чтобы кол-во элементов задавалось рандомно)Не слишком ясно. Без тестового дерева для проверки не обойтись. Если я все же правильно понял мысль, проще всего сделать несколько разных тестовых деревьев и случайный выбор из них. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 29 апреля, 2012 Жалоба Поделиться Опубликовано 29 апреля, 2012 (изменено) Используя рекурсию, определить максимальную глубину не пустого дерева Т, т.е. число ветвей в самом длинном из путей от корня дерева до листьев. #include <iostream>using namespace std;struct Tree{Tree *L,*R;}; Tree *T=0;int ct(Tree *w) {int k=0,m=0,d=0; if(w->L)k=ct(w->L); if(w->R)m=ct(w->R); if(d<k)d=k; if(d<m)d=m; return ++d;}void sh(Tree *w,int l) {if(w){sh(w->R,l+1); for(int i=0;i<l;i++)cout<<"\t"; cout<<'©'<<endl; sh(w->L,l+1);}}void al(Tree **w){Tree* k; *w=new Tree; k=*w; k->L=0;k->R=0;}int main(){al(&T); al(&T->L); al(&T->R); al(&T->L->L); al(&T->L->L->R); al(&T->L->L->L); al(&T->R->L); al(&T->L->R);sh(T,0); cout<<endl<<"Depth="<<ct(T)-1<<endl; cin.get();} Изменено 29 апреля, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
sizetooo Опубликовано 29 апреля, 2012 Жалоба Поделиться Опубликовано 29 апреля, 2012 Сделано по реализации Шилдта по ссылке из прежнего сообщения с выбором границ сортируемых сегментов по Циуре (статья по сортировке Шелла в Википедии). Cпасибо, Тролль, я с выбором границ ознакомлен, большое спасибо, все отлично работает :))) Ссылка на комментарий Поделиться на другие сайты Поделиться
NickLid Опубликовано 29 апреля, 2012 Жалоба Поделиться Опубликовано 29 апреля, 2012 NickLid Не слишком ясно. Без тестового дерева для проверки не обойтись. Если я все же правильно понял мысль, проще всего сделать несколько разных тестовых деревьев и случайный выбор из них. Я имел в виду то что как вы сделали Simik, т.е. чтобы задавалось рандомное дерево, я выбирал уровень этого дерева и мне показывало сколько там элементов(только число), ну короче все то что вы и сделали, только за место тестового дерева, надо обычное рандомное дерево и чтобы было наглядно. И можно вместе с комментариями))) Ссылка на комментарий Поделиться на другие сайты Поделиться
archangel0804 Опубликовано 29 апреля, 2012 Жалоба Поделиться Опубликовано 29 апреля, 2012 Я имел в виду то что как вы сделали Simik, т.е. чтобы задавалось рандомное дерево, я выбирал уровень этого дерева и мне показывало сколько там элементов(только число), ну короче все то что вы и сделали, только за место тестового дерева, надо обычное рандомное дерево и чтобы было наглядно. И можно вместе с комментариями))) NickLid в нашем случае конкретного примера не надо...так как в задании сказано посчитать кол-во элементов на N-ОМ уровне и не важно что там написано (уровень или конкретные числа)а "й"это уровень замени в void sh(Tree *w,int l) {if(w){sh(w->R,l+1); for(int i=0;i<l;i++)cout<<"\t"; cout<<'©'<<endl; sh(w->L,l+1);}} на void sh(Tree *w,int l) {if(w){sh(w->R,l+1); for(int i=0;i<l;i++)cout<<"\t"; cout<<l<<'©'<<endl; sh(w->L,l+1);}} и все сразу ясно... Тролль спасибо за помощь Ссылка на комментарий Поделиться на другие сайты Поделиться
Sain Опубликовано 29 апреля, 2012 Жалоба Поделиться Опубликовано 29 апреля, 2012 #include <iostream>using namespace std;struct Tree{Tree *L,*R;}; Tree *T=0;int ct(Tree *w) {int k=0,m=0,d=0; if(w->L)k=ct(w->L); if(w->R)m=ct(w->R); if(d<k)d=k; if(d<m)d=m; return ++d;}void sh(Tree *w,int l) {if(w){sh(w->R,l+1); for(int i=0;i<l;i++)cout<<"\t"; cout<<'©'<<endl; sh(w->L,l+1);}}void al(Tree **w){Tree* k; *w=new Tree; k=*w; k->L=0;k->R=0;}int main(){al(&T); al(&T->L); al(&T->R); al(&T->L->L); al(&T->L->L->R); al(&T->L->L->L); al(&T->R->L); al(&T->L->R);sh(T,0); cout<<endl<<"Depth="<<ct(T)-1<<endl; cin.get();} Огромное спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
Sain Опубликовано 30 апреля, 2012 Жалоба Поделиться Опубликовано 30 апреля, 2012 Тролль (30 Апрель 2012 - 00:28) писал:#include <iostream> using namespace std; struct Tree{Tree *L,*R;}; Tree *T=0; int ct(Tree *w) {int k=0,m=0,d=0; if(w->L)k=ct(w->L); if(w->R)m=ct(w->R); if(d<k)d=k; if(d<m)d=m; return ++d;} void sh(Tree *w,int l) {if(w){sh(w->R,l+1); for(int i=0;i<l;i++)cout<<"\t"; cout<<'©'<<endl; sh(w->L,l+1);}} void al(Tree **w){Tree* k; *w=new Tree; k=*w; k->L=0;k->R=0;} int main(){ al(&T); al(&T->L); al(&T->R); al(&T->L->L); al(&T->L->L->R); al(&T->L->L->L); al(&T->R->L); al(&T->L->R); sh(T,0); cout<<endl<<"Depth="<<ct(T)-1<<endl; cin.get();} Огромное спасибо! Напишите комментарии к коду, если вас это не затруднит Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 30 апреля, 2012 Жалоба Поделиться Опубликовано 30 апреля, 2012 (изменено) NickLid ну короче все то что вы и сделали, только за место тестового дерева, надо обычное рандомное дерево и чтобы было наглядно. И можно вместе с комментариями)))Вообще-то в задании о случайных деревьях не было ни слова. Да и "обычных рандомных деревьев" нет - кому нужны случайные деревья, в отличие от случайных чисел... Но сделать, естественно, можно:#include <iostream>#include<stdlib.h>#include<time.h>using namespace std;struct Node{int key; Node *L,*R; int m;}; int n;void sh(Node *w,int k){if(w){sh(w->R,k+1); for(int i=0;i<k;i++)cout<<"\t"; cout<<'©'<<endl; sh(w->L,k+1);}}int ct(Node *w,int k){int d=0; if(w->L)d+=ct(w->L,k+1); if(w->R)d+=ct(w->R,k+1); if(n==k)d++; return d;}void add(Node* &t, int k){if(!t){t=new Node; t->L=0; t->R=0; t->m=k;}else{if(k>=t->m)add(t->R,k); if(k<t->m)add(t->L,k);}}int main(){Node *t=0; srand(time(NULL));cout<<"Enter the number of nodes: "; cin>>n; for(int i=0;i<n;i++)add(t,rand()%1000); cout<<endl; sh(t,0);cout<<endl; cout<<endl<<"niveau: "; cin>>n; cout<<ct(t,0)<<endl; getchar(); getchar();} Комментарии возьми из старой программы. Тут добавилась только функция add вставки в дерево новой ветви, со случайным параметром она и ветвь вставляет случайную :) Sain Напишите комментарии к коду, если вас это не затруднитНу сколько можно писать одни и те же комментарии? Возьми их из старой программы для NickLid, только функция ct у тебя дает не количество элементов на уровне, а глубину дерева. Изменено 30 апреля, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
archangel0804 Опубликовано 30 апреля, 2012 Жалоба Поделиться Опубликовано 30 апреля, 2012 а такой вопрос как реализовать не бинарное дерево в Подсчитать число вершин на n-ом уровне непустого дерева Т (корень считать вершиной нулевого уровня). реализация С++ Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 30 апреля, 2012 Жалоба Поделиться Опубликовано 30 апреля, 2012 (изменено) archangel1804 То же самое, только в узле не два адреса ветвей *L,*R, а больше, скажем, *N1,*N2,*N3,*N4,*N5 - если максимально может быть пять узлов (квинарное дерево). И проверять не две исходящие ветви, а все возможные пять... Точно так же, как две. Вообще простейший путь - если заранее неизвестно, сколько может быть ветвей, создаем заготовку узла дерева с запасом, как поступаем обычно и с массивом - если заранее неизвестно, сколько в нем элементов, тогда просто берем размер массива с запасом. Если ветвей может быть много, вместо простых переменных-указателей *N1,*N2,*N3,*N4,*N5 можно сделать их массив и перебирать ветви в цикле - так текст программы будет короче. Для большей общности можно вместо массива сделать список или массив сделать динамическим (для такого дела в C++ есть специальный шаблон vector), тогда вообще границы числу исходящих из узла ветвей не будет. Можно даже вместо списка сделать в каждом узле дерева внутреннее бинарное дерево указателей для ветвей ;) Но усложнять можно бесконечно. А обычно любое дерево еще при построении делают бинарным - любое дерево можно преобразовать в бинарное :) Вообще в C++ есть стандартная библиотека STL, в которой сложные структуры данных уже реализованы наиболее универсальным образом людьми с высокой квалификацией, остается ими только пользоваться. Например, для дерева есть шаблон set. Изменено 30 апреля, 2012 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
archangel0804 Опубликовано 30 апреля, 2012 Жалоба Поделиться Опубликовано 30 апреля, 2012 Спасибо Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Шёпот Опубликовано 2 мая, 2012 Жалоба Поделиться Опубликовано 2 мая, 2012 Шёпот Результаты для твоего примера совпадают с показанным на рисунке решением твоего примера. Спасибо огромное! Листинг зачли, осталось теперь сдать в готовом виде (экзешник). Ссылка на комментарий Поделиться на другие сайты Поделиться
matvey707 Опубликовано 4 мая, 2012 Жалоба Поделиться Опубликовано 4 мая, 2012 Доброе время суток, не могли вы пожалуйста помочь решить мою задачу на С++, буду очень признателен. Используя очередь через структуры,решить следующую задачу. type FR =file of real; За один просмотр файла f типа FR и без использования дополнительных файлов напечатать элементы файла f в следующем порядке сначала - все числа, меньшие а, затем -все числа из отрезка [a,b], и наконец - все остальные числа, сохраняя исходный взаимный порядок в каждой из этих трех групп чисел (a и b- заданные числа, a<b) . Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 4 мая, 2012 Жалоба Поделиться Опубликовано 4 мая, 2012 Всем привет!Вот код на шифр Виженера(Pascal) У кого есть дешифр? program job3_Vishiner; uses crt; var a,b,c,d:string; i,j,k,t,q:integer; begin t:=1; writeln('Enter text for coding'); readln(a); writeln('Enter code-word'); readln(d); q:=length(d); c:=''; b:='abcdefghijklmnopqrstuvwxyz'; for i:=1 to length(a) do for j:=1 to length(b) do begin if a=b[j] then begin if t>length(d) then t:=1; for k:=1 to length(b) do begin if d[t]=b[k] then q:=j+k-1; if q>26 then q:=q-26; end; c:=c+b[q]; t:=t+1; end; end; writeln©; readkey; end. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 4 мая, 2012 Жалоба Поделиться Опубликовано 4 мая, 2012 Riki_Tiki_Tavi Используй кнопку вставки кода. При обычной вставке код искажается, например, у тебя получилось writeln©;, отступы тоже пропали... В первом же посте темы указано: "Если вы вставляете код программы то используйте тег code. Сообщения c листингом и без данного тега будут удаляться, а автору - предупреждение." У кого есть дешифр?У Яндекса или Гугля :) Не пренебрегай ими. Например, тут. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
nadi_scool2 Опубликовано 4 мая, 2012 Жалоба Поделиться Опубликовано 4 мая, 2012 привет! можете помочь с прогой, совсем мозгов не хватает сделать Написать программу — простейший ftp-клиент. Программа должна опрашивать все узлы указанной сети и сообщать о наличии в ней ftp-серверов с публичным доступом. Ссылка на комментарий Поделиться на другие сайты Поделиться
nadi_scool2 Опубликовано 6 мая, 2012 Жалоба Поделиться Опубликовано 6 мая, 2012 всё, ребят) сама сделала :trampoline: Ссылка на комментарий Поделиться на другие сайты Поделиться
motomen Опубликовано 6 мая, 2012 Жалоба Поделиться Опубликовано 6 мая, 2012 Доброго времени суток. Помогите пожалуйста сделать такую программу на С + +. Дана строка, содержащая бинарные выражения со скобками. написать программу, которая создает бинарное дерево, при проходе по которому различными способами образуется префиксный суфиксний инфиксний выражения. Непойму как это можно сделать. Вот код по деревьям. #include <iostream>#include <cstdlib>#include <conio.h>using namespace std;class BinarySearchTree{ private: struct tree_node{ tree_node* left; tree_node* right; char data; }; tree_node* root; public: BinarySearchTree(){ root = NULL; } bool isEmpty() const { return root == NULL; } void print_inorder(); void inorder(tree_node*); void print_preorder(); void preorder(tree_node*); void print_postorder(); void postorder(tree_node*); void search(char); void insert(char);};void BinarySearchTree::insert(char d){ tree_node* t = new tree_node; tree_node* parent; t->data = d; t->left = NULL; t->right = NULL; parent = NULL; if(isEmpty()) root = t; else{ tree_node* curr; curr = root; while(curr){ parent = curr; if(t->data > curr->data) curr = curr->right; else curr = curr->left; } if(t->data < parent->data) parent->left = t; else parent->right = t; }}void BinarySearchTree::search(char d){ bool found = false; if(isEmpty()){ cout << "This Tree is empty!" << endl; return; } tree_node* curr; tree_node* parent; curr = root; int count(0); while(curr != NULL){ if(curr->data == d){ found = true; cout << count+1; break; } else{ count++; parent = curr; if(d > curr->data) curr = curr->right; else curr = curr->left; } } if(!found){ cout << "NO" << endl; return; }}void BinarySearchTree::print_inorder(){ inorder(root);}void BinarySearchTree::inorder(tree_node* p){ if(p != NULL) { if(p->left) inorder(p->left); cout << " " << p->data << " "; if(p->right) inorder(p->right); } else return;}void BinarySearchTree::print_preorder(){ preorder(root);}void BinarySearchTree::preorder(tree_node* p){ if(p != NULL) { cout << " " << p->data << " "; if(p->left) preorder(p->left); if(p->right) preorder(p->right); } else return;}void BinarySearchTree::print_postorder(){ postorder(root);}void BinarySearchTree::postorder(tree_node* p){ if(p != NULL) { if(p->left) postorder(p->left); if(p->right) postorder(p->right); cout << " " << p->data << " "; } else return;}int main(){ BinarySearchTree b; char ch; srand(time(0)); for (int i = 0; i < 10; i++){ b.insert(char(rand()% 25 +97)); } b.print_inorder(); cout << endl; b.print_preorder(); cout << endl; b.print_postorder(); cout << endl; char a; cout << "Vvedit znachennia, jake treba znaiti:\n"; cin >> a; b.search(a); getch();} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 7 мая, 2012 Жалоба Поделиться Опубликовано 7 мая, 2012 (изменено) motomen Такая работа - это приличный курсовик. Так что полезно заглянуть сначала в Гугл или Яндекс. Авось что-нибудь и найдется. Например, курсовик по похожему заданию, только формулы не бинарной алгебры, а обычной - тут. Изменено 7 мая, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
motomen Опубликовано 7 мая, 2012 Жалоба Поделиться Опубликовано 7 мая, 2012 Мне дали это как обычное задание. Спасибо. Что-то придумаю. Ссылка на комментарий Поделиться на другие сайты Поделиться
NickLid Опубликовано 9 мая, 2012 Жалоба Поделиться Опубликовано 9 мая, 2012 С Днем Победы! Всех с 9 МАЯ!!! Помогите пожалуйста! Тема задания - файлы. На С++. Программа работы конференции с разбивкой докладов по секциям. Количество секций и докладов в каждой секции задать самостоятельно. Составить модуль формирования нового списка, содержащего доклады с несколькими авторами. Желательно с комментариями к программе! Ссылка на комментарий Поделиться на другие сайты Поделиться
vampir4eg Опубликовано 9 мая, 2012 Жалоба Поделиться Опубликовано 9 мая, 2012 помогите пожайлусто переделать кодс С++ под С; #include<iostream>using namespace std;float number();float factor();float expr();int main(void){ float r; cout << "Enter number:"; r = expr(); cout << endl << "Resault = " << r;}float number(){ int res = 0; char c; while(true) { char c = cin.get(); if(c >= '0' && c <= '9') res = res * 10 + c - '0'; else { cin.putback©; break; } }return res;}float factor(){ float x; char c = cin.get(); if(c == '(') { x = expr(); cin.get(); } else { cin.putback©; x = number(); } c = cin.get(); switch© { case '*': return x * factor(); case '/': return x / factor(); default: cin.putback©;return x; }}float expr(){ float x = factor(); char c = cin.get(); switch© { case '+': return x + expr(); case '-': return x - expr(); default: cin.putback©;return x; }} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 9 мая, 2012 Жалоба Поделиться Опубликовано 9 мая, 2012 vampir4eg #include<stdio.h>float number();float factor();float expr();int main(){puts("Enter number:"); printf("Resault = %f",expr()); getchar(); getchar();}float number(){int res=0; char c;while(1){c=getchar(); if(c>='0'&&c<='9')res=res*10+c-'0'; else{ungetc(c,stdin); break;}}return res;}float factor(){float x; char c=getchar();if(c=='('){x=expr(); getchar();} else{ungetc(c,stdin); x=number();}c=getchar();switch©{ case '*':return x*factor(); case '/':return x/factor(); default:ungetc(c,stdin); return x;}}float expr(){float x=factor(); char c=getchar();switch©{ case '+':return x+expr(); case '-':return x-expr(); default: ungetc(c,stdin); return x;}} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 10 мая, 2012 Жалоба Поделиться Опубликовано 10 мая, 2012 NickLid Программа работы конференции с разбивкой докладов по секциям. Количество секций и докладов в каждой секции задать самостоятельно. Составить модуль формирования нового списка, содержащего доклады с несколькими авторами. #include<stdio.h>#include<stdlib.h>#define S 5 // max number of sections#define D 20 // max number of reports#define A 30 // max number of authors#define L 50 // max length ot the name of author plus 1#define M 2 // min number of authorsstruct _se{char sect[A], doc[D][A][L];};#include "input.cpp" //input#include "dataprint.cpp" // output#include "datared.cpp" // data with one author reports deleteint main(){_se a[s]; for(int i=0; i<S;i++){a[i].sect[0]=0; for(int j=0;j<D;j++)for(int k=0;k<A;k++){a[i].doc[j][k][0]=0;}}input(a);puts("Data all reports:");dataprint(a);// write the fileFILE* f1=fopen("file1","wb");fwrite((char*)&a,sizeof(a),1,f1);fclose(f1);// read the fileFILE* f2=fopen("file1","rb");fread((char*)&a,sizeof(a),1,f2);fclose(f2);datared(a);// write the fileFILE* f3=fopen("file2","wb");fwrite((char*)&a,sizeof(a),1,f3);fclose(f3);// read the fileFILE* f4=fopen("file2","rb");fread((char*)&a,sizeof(a),1,f4);fclose(f4);puts("Data ohne reports with only one author:");dataprint(a);getchar(); return 0;} Файл "input.cpp" void input(_se a[s]){ // inputputs("End of input of category - only Enter in place of the string");for(int i=0; i<S;i++){ puts("Section: "); gets(a[i].sect); if(!a[i].sect[0])break; for(int j=0;j<D;j++){ puts("Report: "); gets(a[i].doc[j][0]); if(!a[i].doc[j][0][0])break; for(int k=1;k<A;k++){ puts("Author: "); gets(a[i].doc[j][k]); if(!a[i].doc[j][k][0])break;}}}puts("\n");} Файл "dataprint.cpp" void dataprint(_se a[s]){// data printfor(int i=0; i<S; i++){ if(!a[i].sect[0])continue; else {puts("Section");puts(a[i].sect);} for(int j=0;j<D;j++){ if(!a[i].doc[j][0][0])continue; else {puts("Report"); puts(a[i].doc[j][0]); puts("Authors");} for(int k=1;k<A;k++) if(!a[i].doc[j][k][0])continue; else puts(a[i].doc[j][k]);}}puts("\n");} Файл "datared.cpp" void datared(_se a[s]){// data with one author reports deleteint bs,bd[D];for(int i=0; i<S; i++){bs=0; for(int j=0;j<D;j++)bd[j]=0;if(!a[i].sect[0])continue; for(int j=0;j<D; j++){ if(!a[i].doc[j][0][0])continue; for(int k=1;k<A; k++) if(!a[i].doc[j][k][0])continue; else bd[j]++;}for(int j=0;j<D;j++)if(bd[j]>=M)bs++;if(!a[i].sect[0]||!bs){a[i].sect[0]=0; continue;} for(int j=0;j<D;j++){ if(!a[i].doc[j][0][0]||bd[j]<M){a[i].doc[j][0][0]=0; break;}}}puts("\n");} Для простоты все написано в рамках чистого С, за исключением объявления параметров циклов в заголовках циклов и void типа функций. Программа запрашивает ввод данных в повторяющейся последовательности секция, доклады, авторы, в каждой категории запросы на ввод новых данных этой же категории прекращаются при вводе пустого названия, то есть нажатия просто Enter. Затем введенные данные записываются в файл file1, он снова считывается и данные выводятся для контроля на экран, затем из данных исключаются доклады с двумя и более авторами, откорректированные данные записываются в файл file2 и для контроля снова считываются и выводятся на экран. Модули в такой программе не слишком нужны, но раз просят, выделил, кроме основного, три модуля, реализующих ввод данных, их коррекцию и вывод на экран. Максимальное число вводимых данных задается константами (5 секций по 20 докладов с максимально 29 авторами каждый. Комментарии только общие - что делает каждый кусок программы. Если что-то непонятно, спрашивай. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти