Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите решить задачу по С++

Закрытая тема
Настройки темы
C/C++ - [решено] Помогите решить задачу по С++

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 20-12-2011
Описание: правила
  1. По заданному натуральному(целому) числу, определить количество цифр и найти их сумму.
  2. По заданному натуральному(целому) числу, определить количество цифр и найти их сумму. Из указаного диапазона n и m
  3. Выполнить инвертирование трех одномерных массивов: А[20], В[10], С[15]. Написать функции: -Заполнение массива числами в диалоговом режиме. -Вывода одномерного массива -Инвертирование одномерного массива.
  4. Определитьдля каждого из трех одномерных массивов : A[45], B[10], C[20] сколько раз в них встретились два подряд идущих нулевых элемента. Написать функции: -Заполнение массива числами в диалоговом режиме. -Вывода одномерного массива. -Определения количества двух подряд идущих нулевых элементов в одномерном массиве.


Выдержка из правил форума
Цитата:
Вопросы, в которых нет кода и следов ваших размышлений над поставленной задачей также будут перенесены в закрытую тему - Уголок Ленивого Программиста

Исходное сообщение автора

Задание: Написать прогу, которая по заданному натуральному числу определяет количество цифр в нем и их сумму.Протестируйте функцию десятичных чисел из некоторого диапазона от n до m.

Отправлено: 14:54, 27-09-2008

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Вчера, в частной переписке, задача с треугольником была решена.
Задача с запуском материальной точки на плоскость, обсуждена, поставлены условия, заданы начальные параметры. Задача находится в решении.
За подробностями к Titanium, как к инициализатору и программисту.
В целом же, данные задачи можно "отметить" решенными.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 13:59, 18-05-2011 | #251



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Buchik

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить 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


Аватара для Buchik

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Может, кто знает, или сталкивался с поэлементным вычитанием матриц?(мы не знаем ни разметрность одной матрицы, ни размерность 2-ой)

Отправлено: 13:04, 25-05-2011 | #253


Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Buchik, вычитаются равные друг другу матрицы.
Далее любым удобным способом перебираем все элементы матрицы и производим вычитание.
В чем сложность? Что смутило?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 00:28, 26-05-2011 | #254


Аватара для Buchik

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уже сделал, просто думал как это реализовать))))Да и забыл как их минусовать друг с другом))) думал на подобии умножения что-то))

Отправлено: 11:34, 26-05-2011 | #255


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить 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();
}
№2
Код: Выделить весь код
#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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите решить задачу по С++
Поменять местами максимальный и минимальный элементы среди простых чисел исходного одномерного массива. Результат вывести.

Отправлено: 14:46, 29-06-2011 | #258


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Vietryk, в чем проблема? Ты просишь не помочь, а написать за тебя.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 00:46, 30-06-2011 | #259


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить 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; // Для перестановки
  // Рандомная инициализация массива
  ...
  ...
2. Поиск максимального и минимального значения. Проходите массив циклом на поиск минимального и максимального значений, сохраняете индексы массива где найден минимальное и максимальное значение в переменные.
Код: Выделить весь код
...
  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;
     }
   }
  }
...
3. Обращаетесь потом к этим элементам
Код: Выделить весь код
...
  // Перестановка
  temp = array[IndexMin];
  array[IndexMin] = array[IndexMax];
  array[IndexMax] = temp;
...
4. Выводим на экран
Код: Выделить весь код
...
  cout<<"\nMax = "<<array[IndexMax]<<"\n"<<"Min = "<<array[IndexMin]<<endl;
...

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 17:58, 30-06-2011 | #260



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите решить задачу по С++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход