Дан текст, который пользователь должен ввести в программу, найти наибольшее количество идущих подряд букв. Реализовать следующие возможности в программе:
меню пользователя, состоящее как минимум из 4-х пунктов:
ввод данных (текст вводится пользователем );
обработка данных (поиск наибольшего количества, подряд идущих, букв);
вывод результата на стандартное устройство вывода (экран);
выход из программы.
организовать промежуточное хранение результата, это относится к пункту меню — вывод результата;
разбить программу на функции.
Недавно на парах в техникуме столкнулись с тем что приходилось решать этакие задачи методом Флойда, после того как узнал что всё ровно нужно будет написать этакую программу, настрочил прямо на паре не столь замудрённый код.
Я думаю многим будет полезно дабы не мучать свои мозги. Программа выводит все промежуточные таблицы, а так же результат, то есть ответ. Написано без оболочки, так как до билдера мы ещё не добрались. В общем кому нужно разбираем icon smile Реализация метода Флойда на C++, с подробным выводом решений.
Буду рад если кому то это всё же понадобится. В программе за бесконечность принято вводить число «-1″ так как отрицательные веса редко встретишь. Далее всё поймёте. Если потребуется могу прокомментировать каждую строку, и как всё работает.
#include <iostream .h>
void main(){
cout< <"ALGORITM FLOIDA. NAHOZHDENIE KRATCHAISHEGO RASSTOYANIYA MEZHDU VSEMI VERSHINAMI GRAPHA."<<endl;
//cout<<"source by www.linkfight.ru"<<endl<<endl;
cout<<"vvedite razmernost' massiva: "<<endl;
int n;
cin>>n;
int arr[255][255];
for (int i=1; i< =n; i++){
for (int q=1; q<=n; q++){
cout<<"vvedite element a["<<i<<"]["<<q<<"]: ";
cin>>arr[i][q];
}
}
cout< <endl;
cout<<endl;
cout<<"isxodnaya matricca: "<<endl;
for (i=1; i<=n; i++){
for (int q=1; q<=n; q++){
cout<<arr[i][q]<<" ";
}
cout<<endl;
}
cout <<endl;
cout <<endl;
cout <<endl;
cout <<endl;
cout<<"reshene: "<<endl;
for (int r=1; r<=n; r++){
if(r==n) {
cout <<endl;
cout <<endl;
cout <<"otvet: "<<endl;
}
// øàãè
for (i=1; i<=n; i++){
for (int q=1; q<=n; q++){
if(arr[i][q]==-1 && arr[i][r]!=-1 && arr[r][q]!=-1){
arr[i][q]=arr[i][r]+arr[r][q];
} else if(arr[i][q]>arr[i][r]+arr[r][q]){
arr[i][q]=arr[i][r]+arr[r][q];
}
if(arr[i][q]<0){
cout< <"~ ";
}
else {
cout<<arr[i][q]<<" ";
}
}
cout<<endl;
}
cout<<endl;
cout<<endl;
cout<<endl;
}
//cout <<"www.linkfight.ru"<<endl<<endl;
}
Буду рад вашим комментариям.