Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2009, 20:01   #11
Джед
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 28
По умолчанию

Я только что пытался изменить скрины, а Имэджшак жутко глючит... Единственное, что я изменил (точнее добавил) - это вывод на экран...
Код:
for(int i=0; i<size_mas; i++)
cout<<*(pmas+i)<<endl;
Джед вне форума Ответить с цитированием
Старый 09.06.2009, 20:02   #12
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код выше работает?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.06.2009, 20:09   #13
Джед
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 28
По умолчанию

Ошибок нет. Но не выводиться ничего при кейс 3 и кейс 4.

Добавил вывод. Теперь всё работает. Видать надо было просто перезапустить ВС.))

Огромное спасибо. Жили бы вы в Риге, я бы вам с радостью пива поставил бы. =)
Джед вне форума Ответить с цитированием
Старый 10.06.2009, 15:45   #14
Джед
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 28
По умолчанию

Новая проблема вылезла... как сделать вывод изначального массива рядом со сдвинутым?


Код:
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std ;


int main()

{

	const int n=6;
	char const* pS [ n ] =
	{ "1. Sozdat' massiv",
	"2. Vivesti massiv",
	"3. Sdvinut' vlevo",
	"4. Sdvinut' vpravo",
	"5. Raznost' mezhdu max i min chislom",
	"0. Exit" } ;
	int v, diapazon, minnum, *pmas, size_mas=1, max, min, tmp, r, m, u;
	bool Dinm=false;
	pmas=new int[size_mas];
	do
	{
		cout << "Menu\n" ;
		for ( int i = 0; i < n; i++ ) cout << pS [ i ] << endl ;
		cout << "\nVash vibor - > " ;
		cin >> v ;
		cin.get();

		switch ( v )
		{
		case 1 :
			cout << '\n' << pS [ 0 ] << "\n\n" ;
		delete [] pmas;
		r=(unsigned int )(time(NULL)%32767);
		srand(r);
		cout<<"diapazon=?"<<endl;
		cin>>diapazon;
		cin.get();
		cout<<"minnum=?"<<endl;
		cin>>minnum;
		cin.get();
		cout<<"size of pmas=?"<<endl;
		cin>>size_mas;
		cin.get();


		pmas=new int[size_mas];
			for (int i=0;i<size_mas;i++)
				*(pmas+i)=int(rand()/32767.*diapazon)+minnum;
			for(int i=0;i<size_mas;i++)
				cout<<i<<"\t\t"<<*(pmas+i)<<endl;
				Dinm=true;
		cin.get();
			break ;
		case 2 :
			cout << '\n' << pS [ 1 ] << "\n\n" ;
			if (Dinm==false)
					cout<<"!!!Massiv ne zapolnen!!!"<<endl;
					
				else
				{
					for(int i=0;i<size_mas;i++)    Вот это
					cout<<i<<"\t\t"<<*(pmas+i)<<endl;
				}
			cin.get();
			break ;
		case 3 :
			cout << '\n' << pS [ 2 ] << "\n\n" ;
			if (Dinm==false)
					cout<<"!!!Massiv ne zapolnen!!!"<<endl;
					
				else
				{
					tmp = *pmas;
					for(int l=0; l<size_mas-1; l++)
							*(pmas+l) = *(pmas+l+1);
							*(pmas+size_mas-1) = tmp;
					for(int l=0; l<size_mas; l++) вывести рядом с этим
					cout<<*(pmas+l)<<endl;
				}
			
			cin.get();
			break ;
		case 4 :
			cout << '\n' << pS [ 3 ] << "\n\n" ;
			if (Dinm==false)
					cout<<"!!!Massiv ne zapolnen!!!"<<endl;
					
				else
				{
					tmp=*(pmas+size_mas-1);
					for(int m=size_mas-1;m>0;m--)
							*(pmas+m)=*(pmas+m-1);
							*(pmas)=tmp;
					for(int m=0; m<size_mas; m++)
					cout<<*(pmas+m)<<endl;
				}
			cin.get();
			break ;
			
		case 5 :
			cout << '\n' << pS [ 4 ] << "\n\n" ;
			if (Dinm==false)
					cout<<"!!!Massiv ne zapolnen!!!"<<endl;
					
				else
				{
					max=*(pmas+0);
					for (int i=0;i<size_mas;i++)
						if(max<*(pmas+i))
						{  max=*(pmas+i);
						m=i; }
					cout<<"Maximal'noe znachenie - "<<max<<endl;
					cin.get();
	
					min=*(pmas+0);
					for (int i=0;i<size_mas;i++)
						if(min>*(pmas+i))
						{  min=*(pmas+i);
						m=i; }
					cout<<"Minimal'noe znachenie - "<<min<<endl;
					cin.get();

			u=max-min;
		cout<<"Raznica="<<u<<endl;
		
			}
			cin.get();
			break ;
		case 0 : break ;
		default  : cout << "\nIllegal choice\n\n";
		}
	} while ( v != 0 ) ;
	return 0;
}
Джед вне форума Ответить с цитированием
Старый 10.06.2009, 15:55   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Джед
как сделать вывод изначального массива рядом со сдвинутым?
Ну, можно через апи задавать позицию курсора. Но я вам советую просто выводить массивы не в столбик, а в строку. Например, через пробел.
Тогда как раз будет один под другим.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.06.2009, 16:06   #16
Джед
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 28
По умолчанию

Чувствую, что я сейчас скажу очень большую глупость, но как выводить массивы в строчку?
Джед вне форума Ответить с цитированием
Старый 10.06.2009, 16:19   #17
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну вы выводите в столбик
Код:
for(int l=0; l<size_mas; l++)
  cout<<*(pmas+l)<<endl;
то есть после каждого элемента переводите строку. Вместо этого выводите пробел:
Код:
for(int l=0; l<size_mas; l++)
  cout<<*(pmas+l)<<" ";
или можно задавать ширину поля вывода:
Код:
for(int l=0; l<size_mas; l++)
 {
 cout.width(4);
 cout<<*(pmas+l);
 }
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.06.2009, 16:33   #18
Джед
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 28
По умолчанию

Я сделал вот так вот

Код:
for(int i=0;i<size_mas;i++) 
cout<<*(pmas+i)<<" ";   это изначальный массив
cout<<"\n\n\n"<<endl;
for(int l=0; l<size_mas; l++)
cout<<*(pmas+l)<<" "; это полученный
Но они оба одинаковые выводяться... Всё дело в том, что изначальный массив формируеться в другом case?
Джед вне форума Ответить с цитированием
Старый 10.06.2009, 16:40   #19
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Я сделал вот так вот
Вот прямо так и написали? У вас 2 раза выводится один и тот же массив.
Между двумя выводами должна быть обработка.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.06.2009, 16:44   #20
Джед
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 28
По умолчанию

Мда... как-то я сглупил совсем. Спасибо.
Джед вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хитрый сдвиг массива xakzona Паскаль, Turbo Pascal, PascalABC.NET 1 07.05.2009 21:49
Задача про сдвиг массива 12345678 Общие вопросы C/C++ 11 02.02.2009 14:02
циклический сдвиг массива goacher Общие вопросы C/C++ 4 28.05.2008 20:11
циклический сдвиг массива goacher Паскаль, Turbo Pascal, PascalABC.NET 4 27.05.2008 22:26