Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

Троль спасибо. Но не нужно было. Уже сам реализовал =)))

У меня тут другая проблема возникла. Я заполнял матрицу (массив) вручную.

А сейчас хочу чтобы у меня матрица заполнялась рандомом.

Делаю так

srand(time(NULL));for(i=0;i<m;i++){cout<<"[ "; for(j=0;j<n;j++)a[i][j]=rand()%10;cout<<a[i][j]<<" "; cout<<" ]"<<endl;}

На что на экране вижу всякую чушь, из огромных чисел. Где ошибка то? Вроде все верно. Матрица маленькая, 3 на 3.

Гыы Разобрался. Скобки правильно раставил и все заработало =))

Ссылка на комментарий
Поделиться на другие сайты

Еще одна проблема возникла.

Не могу найти максимальный элемент Каждой строки в матрице. Точнее в маленькой (3на 3) матрице все работает а вот в большей нет =(

делаю так

for(i=0;i<=n;i++){for(j=0; j<=m;j++){	ma=max(a[i][0],a[i][j]);}Console::WriteLine(ma);}

На что при размере уже 4на 4 получаю неверный ответ.

Вопрос тот же? Где ошибка? Точнее ясно что в самом алгоритме нахождения. Но вот какая именно.

P.S.

Дошло

=)))

for(i=0;i<=m;i++){amax=a[i][0];jmax=0;j=1;amin=a[i][0];jmin=0;j=1;for(j=0;j<=n;j++){if(a[i][j]<amin){amin=a[i][j];jmin=j;}if(a[i][j]>amax){amax=a[i][j];jmax=j;}}a[i][jmin]=a[i][i];a[i][i]=amin;a[i][jmax]=a[i][i];a[i][i]=amax;Console::WriteLine("MIN= "+amin);Console::WriteLine("MAX= "+amax);}

Все работает =)

Изменено пользователем DoctorG
Ссылка на комментарий
Поделиться на другие сайты

Прошу помогите с прогамкой. Я уже писал на 7 страничке :)

Мне нужна програма в С++ , чтобы на екране была виведина буква (М) симолами размером 10*10 к примеру:

__________ ,да и буква должна бить под 270°.

_00000000_

_______0__

______0___

_____0____

______0___

_______0_

_00000000_

__________

__________

нужно меню из 3 пунктов

1.Для выбора буквы (М) введите 1.

2.Для ввода своей буквы нажмите 2.

3. для выхода нажмите 3.

А таже в этой програмке должны быть ешо пара пунктов:

1.Поворот буквы на 90°.

2.Поворот буквы на 180°.

3.Поворот буквы на 270°.

4.Поворот буквы на 360°.

p.s.(зарание блаодарен )

Прошу вашей помоши...

Ссылка на комментарий
Поделиться на другие сайты

А логика в задаче где? "Поворот буквы на 360°" :( Повернись-ка на 360° и посмотри, что получится...

"пара пунктов: 1... 2... 3... 4..." Загляни в словарь, что значит слово "пара" ;)

Для выбора "M" введите 1, а для выбора своей буквы введите 2. И какая буква будет выбираться по "2"?

В общем, с меню я разбираться не буду, а рисование и повороты букв запрограммировать нетрудно, хотя рисунки всех букв можно рисовать до посинения: 52 буквы (с учетом различия заглавных и строчных)английского и 66 букв русского... :(

Я нарисовал две: заглавные "M" и "H" английского. Так как меню я не вводил, буква задается в

char vv='M';

Для H надо заменить M на H (английские и заглавные!).

Крутится, ввиду отсутствия меню, просто после нажатия клавиши Enter.

Проверил в Dev-C++.

#include <iostream.h>main(){char kk[10][11],km[10][11]; for(int i=0;i<10;i++)kk[i][10]='\0';char M[10][11]={"		  "," MMMMMMMM ","	   M  ","	  M   ","	 M	","	  M   ","	   M  "," MMMMMMMM ","		  ","		  "};char H[10][11]={"		  "," HHHHHHHH ","	 H	","	 H	","	 H	"," HHHHHHHH ","		  ","		  ","		  ","		  "};char vv='M'; switch (vv){case 'M':for(int i=0;i<10;i++)for(int j=0;j<10;j++)km[i][j]=M[i][j]; break;case 'H':for(int i=0;i<10;i++)for(int j=0;j<10;j++)km[i][j]=H[i][j]; break;   }for(int i=0;i<10;i++){for(int j=0;j<10;j++)kk[i][j]=km[i][j];cout<<kk[i]<<endl;}getchar(); system("cls"); for(int i=0;i<10;i++){for(int j=0;j<10;j++)kk[i][j]=km[j][i];cout<<kk[i]<<endl;}getchar(); system("cls"); for(int i=0;i<10;i++){for(int j=0;j<10;j++)kk[i][j]=km[9-i][9-j];cout<<kk[i]<<endl;}getchar(); system("cls"); for(int i=0;i<10;i++){for(int j=0;j<10;j++)kk[i][j]=km[j][9-i];cout<<kk[i]<<endl;}getchar(); system("cls"); }
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Приветствую всех. Помогите пожалуйста:Создать список, элементами которого являются целые числа. Данные формируются случайным образом. Данные вводить до тех пор, пока сумма не превышает число, введенное с клавиатуры. Распечатать список в первоначальном виде.

Программируем на С++.

Ссылка на комментарий
Поделиться на другие сайты

InTrO(008)

насколько я понимаю вам нужно это код проверен в Visual C++ 2008

 #include "stdafx.h"#include "iostream"using namespace System;using namespace std;int main(array<System::String ^> ^args){	setlocale(LC_CTYPE, "Russian");int x,y,z,i;cin>>x;//вводим число  int iArr[11]; // создаем массив длинной 12 (счетчик считает от 0) do {  i++;  iArr[i]=rand()%50+1; // генерим массив из случайных чисел у диапазоне от 1 до "50"  Console::Write(iArr[i]+", ");// выводим на экран  y=y+iArr[i];  if(y>=x)	break; }  while (y<x);cin>>z;return 0;}

У меня в свою очередь тоже есть вопрос.

Есть программа, которая считает некоторую функцию. Возмем к примеру y=sin(x);

Как мне в консоли построить соответствующий график.

Координатную плоскость я с горем пополам построил

#include "stdafx.h"#include "iostream"#include "windows.h"#include "conio.h"#include "math.h"using namespace std;class Interface{private: COORD A;COORD B;char simvol;WORD COLOR;WORD BKCOLOR;HANDLE consol;public:void Box(char G_simvol,char V_simvol,double A_x,double A_y,int kol_G,int kol_V,  	WORD G_COLOR=7, WORD G_BKCOLOR=0,WORD V_COLOR=7, WORD V_BKCOLOR=0)  изменяя как есть{   	//G_simvol - символ для вертикальной линии	//V_simvol - символ для горизонтальной линии	//A_x	  - начальные координаты 	//A_y	  - начальные координаты 	//kol_G	- количество символов по горизонтали	//kol_V,   - количество линий по вертикали	// G_COLOR=7 G_BKCOLOR=0 цвета по горизонтали символов и фона	// V_COLOR=7 V_BKCOLOR=0 цвета по вертикали символов и фона	HANDLE consol=GetStdHandle(STD_OUTPUT_HANDLE); 	A_x=10;	A_y=10;	COORD pos_A;	pos_A.X=10;	pos_A.Y=20;	int i=0;// горизонтальная линия	while(i<40)	{	SetConsoleCursorPosition(consol,pos_A);	SetConsoleTextAttribute(consol, G_COLOR | G_BKCOLOR);	cout<<G_simvol;	i++;	pos_A.X++;	}	i=0;// вертикальная линия	pos_A.X=29;	pos_A.Y=A_y+1;	while(i<20) 	{	SetConsoleCursorPosition(consol,pos_A);	SetConsoleTextAttribute(consol, V_COLOR | V_BKCOLOR);	cout<<V_simvol;	i++;	pos_A.Y++;	}	pos_A.X=10;	pos_A.Y=20;	double x=pos_A.X;	/* i=0;// пробуем строить синусоиду	while(i<40)	{	SetConsoleCursorPosition(consol,pos_A);	SetConsoleTextAttribute(consol, G_COLOR | G_BKCOLOR);	cout<<G_simvol;	i++;	x++;	pos_A.Y=sin(x);	pos_A.X++;	x++;	}*/	COORD pos_B;	pos_B.X=1;	pos_B.Y=1;	SetConsoleTextAttribute(consol, 7 | 0 );	SetConsoleCursorPosition(consol,pos_B);}};void main(){  setlocale (LC_CTYPE,"rus"); // подключение русского языка  int x=0,y=0,nx=0,ny=0; // стартовая позицияint g;Interface Line;while(1){	Line.Box('.','.',x,y,nx,ny);	g=getch();	system("cls");}

А как нарисовать график... понятия неимею =( Точнее не получается, в коде выше была попытка... неудачная.

Ссылка на комментарий
Поделиться на другие сайты

InTrO(008):

Распечатать список в первоначальном виде.
Ну, в первоначальном виде список был пустым :blushing:

Скорее всего, просто распечатать полученный список.

#include <iostream.h>#include <time.h> int main(){struct s{int in; s *ref;}*b,*e,*p; b=NULL; int i,n,q=0;; srand(time(NULL)); cout<<"number ? "; cin>>n; do{q+=i=rand()%100+1; e=new s;   if(!b)b=p=e; p->ref=e; e->ref=NULL; e->in=i; p=e;}while(q<=n);p=b; do{cout<<p->in<<endl; p=p->ref;}while(p->ref);getchar(); getchar();}

Случайные числа я тут формирую в пределах от 1 до 100. Чтобы проверить работу, можно в ответ на запрос ввести, скажем, 400. В таком случае в создаваемый список будут записываться случайные числа, пока их сумма не превзойдет 400, после чего все числа будут считаны из списка и распечатаны.

DoctorG:

Нужен был, насколько я понял, не массив, а список. Это такая специальная структура данных, размер которой не фиксирован, при вводе каждого числа она растет.

P.S.

int iArr[11]; // создаем массив длинной 12 (счетчик считает от 0)
Это не совсем так. Счетчик считает от 0, но при объявлении указывается размер, а не максимальный индекс. Массив будет длиной 11, а индексы его элементов от 0 до 10.
Ссылка на комментарий
Поделиться на другие сайты

Нужен был, насколько я понял, не массив, а список. Это такая специальная структура данных, размер которой не фиксирован, при вводе каждого числа она растет.

Ну что сказать. Неопытность. Незнание. Каюсь. Было лишь желание помочь.

---

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

Ссылка на комментарий
Поделиться на другие сайты

DoctorG:

Насчет массива - я хотел просто отметить это на будущее, чтобы это не сбивало тебя в дальнейшем. C++ - особый язык, он наполнен трюками и неочевидностями. Он шел от машинных языков к более близкой для человека форме записи, остальные языки - наоборот.

В отношении синуса - я особо не вникал, но, похоже, тебе надо синус выводить в некотором масштабе, то есть его значение домножать на некоторый коэффициент. Иначе все его значения будут находиться в пределах плюс-минус единица, то есть при округлении к целому равны нулю. Масштаб по X тоже надо учесть - приращение аргумента синуса каждый раз на один радиан будет приводить к графику, больше похожему на график прыжков кенгуру.

Ссылка на комментарий
Поделиться на другие сайты

Тролль я примерно разобрался как строить синусоиду. Теперь вот какой вопрос. Я строил координаты, да и пытался строить синусоиду путем вывода точек в определенных координатах.

Мне вот интересно. Как мне перейти в режим управления пикселями. И зажигать определенные пиксели? Если можно, простенький пример.

Допустим ка перейти в пиксельный режим, и нарисовать в нем точку (или лучше две точки, и соединить их линией.)

Заранее спасибо.

Ссылка на комментарий
Поделиться на другие сайты

И еще, вот. Как найти НОД двух чисел е знаю, к примеру так

int nod(int a,int b){if (a%b==0) return b;  else return nod(b,a%b);}int main(array<System::String ^> ^args){//int a[5]{20,10,5,30,40};//int i,o;//for(i=0;i<5; i++)int a,b,o;cin>>a;cin>>b;   cout<<nod(a,b); Console::ReadLine();return 0;}

А вот как найти НОД Из n чисел. К примеру из масива ну скажем из 5 чисел?

Я делаю так

int i=0,r=1;int a,b,v,n;int iArr[5]={20,10,5,30,40};for(int x=0;x<4;x++){i=0;a=iArr[i++];b=iArr[4];v=nod(nod(a,b),iArr[i]);if (i==4)	break;}cout<<v; Console::ReadLine();

На что не получаю верного ответа. Где ошибка?

Ссылка на комментарий
Поделиться на другие сайты

DoctorG:

как найти НОД Из n чисел. К примеру из масива ну скажем из 5 чисел?
#include<iostream.h>int nod(int a,int b){return a%b?nod(b,a%b):b;}main(){int a[5]={20,10,5,30,40},b=a[0]; for(int i=1;i<5;i++)b=nod(b,a[i]); cout<<b<<endl; getchar();}

Совет - пиши просто.

Ссылка на комментарий
Поделиться на другие сайты

Доброго времени суток. Такое вот задание. Для Билдера С++. Нарисовать график. y=exp(x)*sin(2*x). x1=1,x2=3. Значит дума леализовать способом LineTo. Например,

int i,j=0; float masx[20],masy[20],dx=0,1;MoveTo(x,y);//невжно какие х и уfor (i=0;i<20;i++){masx[i]=j++*dx;masy[i]=exp(masx[i])*sin(2*mas[i]);//здесь надо какой то переход к координатамLineTo(masx[i],masy[i]);};

но потом надо как-то масштабировать под координаты по пикселях?

поправочка.

int i,j=1; float masx[20],masy[20],dx=0,1;MoveTo(x,y);//невжно какие х и уfor (i=0;i<20;i++){masx[i]=j++*dx;masy[i]=exp(masx[i])*sin(2*mas[i]);//здесь надо какой то переход к координатамLineTo(masx[i],masy[i]);};
Ссылка на комментарий
Поделиться на другие сайты

core:

У тебя график всего в 20 точек, почему бы не сделать больше и выводить просто точки, а не линии? И зачем тебе массив? Если надо, проще посчитать точку заново. "Подумаешь, бином Ньютона" (кот Бегемот) :D. Для компьютера просчет нескольких сотен синусов - отдых.

Сначала считаешь и находишь максимум и минимум для y, затем для вывода считаешь второй раз с прибавкой минимального значения y (чтобы не было отрицательных значений) и последующим домножением y на отношение высоты окна вывода в пикселах к размаху y.

Ссылка на комментарий
Поделиться на другие сайты

все же сделал циклом. правда воспользовался твоими советами. но как мне сделать вывод на канву отдельного пейнтбокса? + надо предусмотреть 2 едита для ввода х1,х2 . как то мне их в форму передать?

float x1,x2;	float y1,y2; float x;		float y;   float dx;	  int l,b;		int w,h;	   int mx,my;   int x0,y0;	  l=20;			  b=ClientHeight-20;  h=ClientHeight-40;w=ClientWidth-40;   x1=0;	x2=25;	dx=0.01;  y1=f(x1); y2=f(x1); x=x1+dx;do { y = f(x);  if (y < y1) y1=y;  if (y > y2) y2=y;  x=x+dx; }while (x<=x2);my=h/abs(y2-y1);  mx=w/abs(x2-x1);  x0=l;y0=b-abs(floor(y1*my));  Canvas->Pen->Color=clGreen;  Canvas->MoveTo(l,b);Canvas->LineTo(l,b-h);  Canvas->MoveTo(x0,y0);Canvas->LineTo(x0+w,y0);  Canvas->TextOut(l+5,b-h,FloatToStrF(y2,ffFixed,6,2));  Canvas->TextOut(l+5,b,FloatToStrF(y1,ffFixed,6,2));  x=x1;  do{ y=f(x); Canvas->Pixels[x0+floor(x*mx)][y0-floor(y*my)]=clRed; x=x+dx; }  while (x<=x2);  Canvas->Font->Color=clPurple;  Canvas->TextOut(l+40,y0+60,FN);
Ссылка на комментарий
Поделиться на другие сайты

Блин с графиком и у меня засада.

Все никак не могу осилить синусоиду.

Делаю так

// graf1.cpp: определяет точку входа для консольного приложения.//#include "stdafx.h"#include "graf1.h"#include "afxwin.h"#include "iostream"#include <conio.h>#include <stdio.h>#include <math.h>#ifdef _DEBUG#define new DEBUG_NEW#endif// Единственный объект приложенияCWinApp theApp;using namespace std;int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){int nRetCode = 0;// инициализировать MFC, а также печать и сообщения об ошибках про сбоеif (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)){	// TODO. Измените код ошибки соответственно своим потребностям	_tprintf(_T("Критическая ошибка: сбой при инициализации MFC\n"));	nRetCode = 1;}else{HWND hwnd; //Описатель окнаchar pszWindowTitle [1024]; //Заголовок окнаLPWSTR r = reinterpret_cast<LPWSTR> (pszWindowTitle);GetConsoleTitle (r, 1024); //Получаем заголовок консолиLPCWSTR re = reinterpret_cast<LPCWSTR> ®;hwnd=FindWindow(NULL, re); //Получаем описатель консоли//int i;//cin >> i;//int i;//cin >> i;if (hwnd!=NULL){	HDC hdc;	hdc=GetWindowDC(hwnd);	if (hdc!=0)	{		CPen pen(PS_SOLID,4,RGB(255,0,0));		CPen pen2(PS_SOLID,4,RGB(0,255,0)); 		int x = 300, y = 70, _x = -10, _y = -10; //Координаты		for (int i=0; i<100; i++) 		{		y+=2; //x+=5; // вертикаль		SelectObject(hdc,pen);		Ellipse(hdc,x-1,y-1,x+3,y+3);		//MoveToEx(hdc, x, y, (LPPOINT) NULL); //Переходим в данную точку		//SelectObject(hdc,pen2);		}		x = 100; y = 170; _x = -10; _y = -10; //Координаты		for (int i=0; i<100; i++) 		{		x+=4; // горизонт		SelectObject(hdc,pen);		Ellipse(hdc,x-1,y-1,x+3,y+3);		//MoveToEx(hdc, x, y, (LPPOINT) NULL); //Переходим в данную точку		//SelectObject(hdc,pen2);		}		double x1 = 150, y1 = 200, _x1 = 1, _y1 = 1; //Координаты		double xp;		xp=1;		for (int i=0; i<100; i++) 		{		x1+=3;		y1=sin(x1)*200;		SelectObject(hdc,pen);		Ellipse(hdc,x1-1,y1-1,x1+6,y1+6);		MoveToEx(hdc, x, y, (LPPOINT) NULL); //Переходим в данную точку		SelectObject(hdc,pen); //Выбираем цвет		if (_x>0 && _y>0) LineTo (hdc, _x, _y); //Если предыдущая точка была, соединяем		_x = x; _y = y; //Запоминаем точку		}		int e;		cin >> e;	}	else cout << "Error DC Window" << endl;}else cout << "Error Find Window" << endl;}return 0;}

Все вроде нормально... компилица... но результатъ

Ексишник прикреплен

Где ошибка? Как исправить?

graf1.rar

graf1.rar

Ссылка на комментарий
Поделиться на другие сайты

Привожу пример ограмы - в результате - Division by zero. Где ошибка?

//---------------------------------------------------------------------------#include <vcl.h>#include <math.h>#pragma hdrstop#include "Unit1.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner){}//--------------------------------------------------------------------------- float f(float x){return sin(2*x)*exp(-x);}const char * FN="2*Sin(x)*exp(x/5)";void __fastcall TForm1::grafik(TObject *Sender){ // будує графік функціїfloat x1,x2;	// межі для аргумента функціїfloat y1,y2;	// межі для значень функціїfloat x;		// аргумент функціїfloat y;		// значення функції в точці xfloat dx;	   // приріст аргументаint l,b;		// левий нижній кут області побудови графікаint w,h;		// ширина і висота області побудови графікаint mx,my;	  // масштаб по осях X і Yint x0,y0;	  // точка - початок координат// область побудови графікаl=20;			   // X - координата лівого нижнього кутаb=401-20;  // Y - координата лівого нижнього кутаh=401-40;  // висотаw=612-40;   // ширинаx1=1;	 // нижня межа прожімку для аргументаx2=3;	// верхня межа прожімку для аргументаdx=0.01;  // крок для аргумента// знаходження максимального і мінімального значення//  функції на відрізку [x1,x2]y1=f(x1); // мінімумy2=f(x1); // максимумx=x1+dx;do { y = f(x);  if (y < y1) y1=y;  if (y > y2) y2=y;  x=x+dx; }while (x<=x2);// знайдемо масштабmy=h/abs(y2-y1);  // масштаб по осі Ymx=w/abs(x2-x1);  // масштаб по осі X// початок системи координатx0=l;y0=b-abs(floor(y1*my));// осi  PaintBox1->Canvas->Pen->Color=clGreen;  PaintBox1->Canvas->MoveTo(l,b);  PaintBox1->Canvas->LineTo(l,b-h);  PaintBox1->Canvas->MoveTo(x0,y0);  PaintBox1->Canvas->LineTo(x0+w,y0);  PaintBox1->Canvas->TextOut(l+5,b-h,FloatToStrF(y2,ffFixed,6,2));  PaintBox1->Canvas->TextOut(l+5,b,FloatToStrF(y1,ffFixed,6,2));  // побудова графіка  x=x1;  do{ y=f(x); PaintBox1->Canvas->Pixels[x0+floor(x*mx)][y0-floor(y*my)]=clRed; x=x+dx; }  while (x<=x2);  PaintBox1->Canvas->Font->Color=clPurple;  PaintBox1->Canvas->TextOut(l+40,y0+60,FN);}
Ссылка на комментарий
Поделиться на другие сайты

Ребят,помогите написать прогу C++.

Вот задание:

Дана матрица размера 3*4.Составить программу для подсчёта количества чётных элементов в каждой строке матрицы.

Ссылка на комментарий
Поделиться на другие сайты

leksev:

#include <iostream.h>main(){int i,j,a[3][4],b[3]; cout<<"Enter the test matrix:"<<endl;for(i=0;i<3;i++){for(j=0;j<4;j++)cin>>a[i][j]; cout<<endl;}for(i=0;i<3;i++){b[i]=0; for(j=0;j<4;j++)if(!(a[i][j]%2))b[i]++;}for(i=0;i<3;i++)cout<<"b["<<i+1<<"]="<<b[i]<<endl;getchar(); getchar();}
Ссылка на комментарий
Поделиться на другие сайты

привет)помогите плиз програмку написать на Pascal'e c процедурой:Составить программу нахождения наименьшего общего кратного 3 натуральных чисел))) :thumbup:

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...