|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите решить задачу по С++ |
|
C/C++ - [решено] Помогите решить задачу по С++
|
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать Вчера, в частной переписке, задача с треугольником была решена.
Задача с запуском материальной точки на плоскость, обсуждена, поставлены условия, заданы начальные параметры. Задача находится в решении. За подробностями к Titanium, как к инициализатору и программисту. В целом же, данные задачи можно "отметить" решенными. |
------- Отправлено: 13:59, 18-05-2011 | #251 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Вот я немного так сказать зациклился....
•определение номера строки (номеров строк), в которой находится самая длинная серия одинаковых элементов. я немогу "всунуть" условие, когда в нескольких строках одинаковые элементы, и они в то же время, являются максимально долгой последовательностью... вот код программы: пишу в VS 2010 #include "stdafx.h" #include <stdlib.h> #include <time.h> #include <iostream> #include <locale> using namespace std ; //int Max , Min ; class qwerty { public: qwerty() ; qwerty( int , int ) ; void vivod( int ** mas , int n , int m ) { wcout << L"\n\nИсходный массив: \n" ; for ( int i = 0 ; i < m ; i++ )//Вывод массива!! { wcout << L"Строка " << i+1 << "\n" ; for ( int j = 0 ; j < n ; j++ ) { wcout << mas[i][j] << L"\t" ; if ( j == n-1 )cout << "\n" ; } } for ( int k = 0 ; k < m ; k++ ) for ( int i = 0 ; i < n-1 ; i++ ) //Упорядочивание по убыванию { for ( int j = i+1 ; j < n ; j++ ) { if ( mas[k][i] < mas[k][j] ) { int perem ; perem = mas[k][i] ; mas[k][i] = mas[k][j] ; mas[k][j] = perem ; } } } wcout << L"\n\nУпорядоченный массив:\n" ; for ( int i = 0 ; i < m ; i++ )//Вывод массива!! { wcout << L"Строка " << i+1 << "\n" ; for ( int j = 0 ; j < n ; j++ ) { wcout << mas[i][j] << L"\t" ; if ( j == n-1 )cout << "\n" ; } } bool sign = 0 ; for ( int i = 0 ; i < m ; i++ ) { for ( int j = 0 ; j < n ; j++ ) { if ( mas[i][j] == 0 && sign == 0 ) { wcout << L"Строка " << i+1 << L" содержит нулевой элемент.\n" ; sign = 1 ; } } } if ( sign == 0 ) wcout << L"Нулевых элементов не обнаружено!!!\n" ; int str = 0 , str1=0 , f=0 , b=0 ; for ( int i = 0 ; i < m ; i++ )//цикл на поиск самой длинной последовательности элементов { if ( str <= str1 ) { for ( int j = 0 ; j < n-1 ; j++ ) if ( mas[i][j] == mas[i][j+1] ) str = str + 1 ; f=i ; } else if ( str1 < str ) { for ( int j = 0 ; j < n-1 ; j++ ) if ( mas[i][j] == mas[i][j+1] ) str1 = str1 + 1 ; b=i ; } if ( str <= str1 ) { str = 0 ; f = 0 ; } else { str1 = 0 ; b = 0 ; } } if ( str == 0 && str1 == 0 )wcout << L"Нет повторяющихся элементов!!!\n" ; if ( str <= str1 ) wcout << L"Самая длинная последовательность в строке № " << b+1 << "\n" ; if ( str > str1 ) wcout << L"Самая длинная последовательность в строке № " << f+1 << "\n" ; } private: int ** mas ; // int * mas1 ; int n ; // int l ; int m ; } ; /*qwerty::qwerty( int Max , int Min ) { wcout << L"Введите размерность данного массива : " ; cin >> Razm ; mas1 = new int[Razm] ; srand( ( unsigned ) time(NULL)) ; for ( int i = 0 ; i < Razm ; i++ ) { mas1[i] = rand( ) % ( Max - Min + 1 ) + Min ; } vivod1(mas1) ; }*/ qwerty :: qwerty() { wcout.imbue(locale("rus_rus.866")); do { wcout << L"Введите длинну строк : " ; cin >> n ; wcout << L"Введите количество строк : " ; cin >> m ; if ( m <= 0 || n <= 0 ) wcout << L"Неверная размерность!!!!!\n" ; } while ( m <= 0 || n <= 0 ) ; mas = new int*[m] ; for(int i=0; i<m; i++) { mas[i]=new int[n]; } wcout << L"Введите элементы массива : \n" ; for ( int i = 0 ; i < m ; i++ ) { for( int j=0 ; j < n ; j++ ) { wcout <<L"Строка : " << i+1 << L"\nЭлемент " << j+1 << L" из " << n << L" : " ; cin >> mas[i][j] ; } } vivod( mas , n , m ) ; } int _tmain(int argc, _TCHAR* argv[]) { wcout.imbue(locale("rus_rus.866")); qwerty a ; /*wcout << L"\nВведите Max значение для генирации с помощью ГСЧ : " ; cin >> Max ; wcout << L"Введите Min значение для генирации с помощью ГСЧ : " ; cin >> Min ; qwerty b( Max , Min ) ;*/ return 0; } |
Отправлено: 21:05, 23-05-2011 | #252 |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Может, кто знает, или сталкивался с поэлементным вычитанием матриц?(мы не знаем ни разметрность одной матрицы, ни размерность 2-ой)
|
Отправлено: 13:04, 25-05-2011 | #253 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать Buchik, вычитаются равные друг другу матрицы.
Далее любым удобным способом перебираем все элементы матрицы и производим вычитание. В чем сложность? Что смутило? ![]() |
------- Отправлено: 00:28, 26-05-2011 | #254 |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Уже сделал, просто думал как это реализовать))))Да и забыл как их минусовать друг с другом))) думал на подобии умножения что-то))
|
Отправлено: 11:34, 26-05-2011 | #255 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Помогите решить задачу по С++ Borland.
условие:Сформировать матрицу,размером M*N по примеру 1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 Написать программу для демонстрации исспользования цыкла с постусловием,выполненую программу записать в файл |
Отправлено: 14:17, 19-06-2011 | #256 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Помогите создать алгоритмы по С++ Borland.
код програм: №1 #include "stdlib.h" #include <iostream> #include <fstream> #include "conio.h" void main() { int const n = 5; int Mas[n][n], a[n*n]; int i = 1; //Nachinaem zapolnjat' s 1 int x = 0; //S levogo int y = 0; //verhnego ugla int dir = -1; //Napravlenie vlevo vniz fstream filestr; filestr.open ("massiv.txt", fstream::in); for (int m=0; m<n*n; m++) { filestr >> a[m]; cout<<" "<<a[m]; } cout<<endl; filestr.close(); for(i=0; i<n*n; i++){ //Proverka, chto ne vylezli napravo if (x > n-1){ dir = -dir; //izmenjaem napravlenie y = y - 2 * dir; //korrektiruem x = x + dir; //poziciju } //Proverka, chto ne vylezli vniz else if (y > n-1){ dir = -dir; //izmenjaem napravlenie y = y - dir; //korrektiruem x = x + 2 * dir; //poziciju } //Proverka, chto ne vylezli nalevo else if (x < 0){ dir = -dir; //izmenjaem napravlenie x = x + dir; //korrektiruem poziciju } //Proverka, chto ne vylezli vverh else if (y < 0){ dir = -dir; //izmenjaem napravlenie y = y - dir; //korrektiruem poziciju } Mas[x][y] = a[i]; //Zapolnjaem jachejku x = x + dir; //Perehodim k sledujuwej jachejke y = y - dir; //v tekuwem napravlenii } /* Zamechanie. Proverki peresechenija pravoj i nizhnej granic massiva dolzhny delat'sja ran'she proverok peresechenija levoj i verhnej granic. Pochemu - mozhno rassmotret' sluchai popadanija v pravyj verhnij i v levyj nizhnij ugly. */ //Vyvod soderzhimogo massiva na jekran for (y = 0; y < n; y++){ //Vyvodim vse jelementy odnoj stroki (po 3 pozicii na chislo) for (x = 0; x < n; x++) cout<<Mas[x][y]<<" "; //Perehodim k sledujuwej stroke cout<<endl; } getch(); } #include "stdlib.h" #include <iostream> #include <fstream> #include "conio.h" void main() { int const n = 5; int Mas[n][n], a[n*n]; int i = 0; //Nachinaem zapolnjat' s 0 int x = 0; //S levogo int y = 0; //verhnego ugla int dir = -1; //Napravlenie vlevo vniz fstream filestr; filestr.open ("massiv.txt", fstream::in); int m=0; while(m<n*n) { filestr >> a[m]; cout<<" "<<a[m]; m++; } cout<<endl; filestr.close(); //for(i=0; i<n*n; i++){ while(i<n*n){ //Proverka, chto ne vylezli napravo if (x > n-1){ dir = -dir; //izmenjaem napravlenie y = y - 2 * dir; //korrektiruem x = x + dir; //poziciju } //Proverka, chto ne vylezli vniz else if (y > n-1){ dir = -dir; //izmenjaem napravlenie y = y - dir; //korrektiruem x = x + 2 * dir; //poziciju } //Proverka, chto ne vylezli nalevo else if (x < 0){ dir = -dir; //izmenjaem napravlenie x = x + dir; //korrektiruem poziciju } //Proverka, chto ne vylezli vverh else if (y < 0){ dir = -dir; //izmenjaem napravlenie y = y - dir; //korrektiruem poziciju } Mas[x][y] = a[i]; //Zapolnjaem jachejku x = x + dir; //Perehodim k sledujuwej jachejke y = y - dir; //v tekuwem napravlenii i++; } /* Zamechanie. Proverki peresechenija pravoj i nizhnej granic massiva dolzhny delat'sja ran'she proverok peresechenija levoj i verhnej granic. Pochemu - mozhno rassmotret' sluchai popadanija v pravyj verhnij i v levyj nizhnij ugly. */ //Vyvod soderzhimogo massiva na jekran for (y = 0; y < n; y++){ //Vyvodim vse jelementy odnoj stroki (po 3 pozicii na chislo) for (x = 0; x < n; x++) cout<<Mas[x][y]<<" "; //Perehodim k sledujuwej stroke cout<<endl; } getch(); } |
Последний раз редактировалось Drongo, 22-06-2011 в 13:30. Причина: Пожалуйста используйте тек [code] - # Отправлено: 14:48, 19-06-2011 | #257 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Помогите решить задачу по С++
Поменять местами максимальный и минимальный элементы среди простых чисел исходного одномерного массива. Результат вывести. |
Отправлено: 14:46, 29-06-2011 | #258 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Vietryk, в чем проблема? Ты просишь не помочь, а написать за тебя.
|
------- Отправлено: 00:46, 30-06-2011 | #259 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Vietryk:
1. Создаёте массив и заполняете, рандомно или определёнными значениями. #include <iostream> using namespace std; #include <conio.h> #include <stdlib.h> #include <ctime.h> using std::time; ... ... ... const int size = 100; int array[size] = {0}; int IndexMin = 0, // Индекс минимального IndexMax = 0, // Индекс максимального Min = 0; Max = 0; temp; // Для перестановки // Рандомная инициализация массива ... ... ... Max = Min = array[0]; for(int i = 0; i < size; i++){ if(array[i] < Min){ Min = array[i]; IndexMin = i; } if(array[i] > Max){ Max = array[i]; IndexMax = i; } } } ... ... // Перестановка temp = array[IndexMin]; array[IndexMin] = array[IndexMax]; array[IndexMax] = temp; ... |
|
------- Отправлено: 17:58, 30-06-2011 | #260 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Помогите решить задачу | Urann | Программирование и базы данных | 11 | 14-05-2013 11:44 | |
Разное - Помогите решить задачу в Excel | Dgonny | Программирование и базы данных | 2 | 16-11-2009 04:11 | |
C/C++ - Помогите решить задачу | zdughi | Программирование и базы данных | 1 | 01-05-2009 06:03 | |
помогите решить задачу | snikers | Программирование и базы данных | 2 | 27-08-2004 01:57 | |
помогите решить задачу | Guest | Программирование и базы данных | 2 | 21-05-2004 11:23 |
|