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

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


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

leksev:

var s:string; i,c,k,m:integer;beginwrite('String: '); readln(s); s:=s+' '; m:=0; c:=0; for i:=1 to length(s) do   if s[i]<>' ' then inc© else begin if c>=m then begin m:=c; k:=i end; c:=0 end;writeln(copy(s,k-m,m)); readlnend.
Ссылка на комментарий
Поделиться на другие сайты

Помогите с решением задач по с++

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

2. Изменить знак элементов одномерного массива стоящих на четных позициях на противоположный, и подсчитать количество положительных и отрицательных элементов массива.

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

Ярослав_1:

1.

#include<iostream.h>#include<iomanip.h>main(){int a[20][20],i,j,n,t,p;  cout<<"M N ? "; cin>>m>>n; p=1; if(n!=m){cout<<"no"<<endl; getchar(); getchar(); return 0;} for(i=0;i<n;i++){cout<<"line"<<i+1<<" ? "; for(j=0;j<n;j++)cin>>a[i][j];}  for(i=0;i<n;i++){for(j=0;j<n;j++)cout<<setw(5)<<a[i][j]<<" "; cout<<endl;}  for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++)if(a[i][j]!=a[n-j-1][n-i-1])p=0;cout<<(p?"yes":"no")<<endl; getchar(); getchar();}

Вначале проверяется равенство размерностей матрицы. Если M не равно N, матрица не может быть симметричной и вводить ее нет смысла.

2.

#include<iostream.h>#include<iomanip.h>main(){int a[100],i,n,p=0,o=0;  cout<<"N ? "; cin>>n; cout<<"A ? "<<endl; for(i=0;i<n;i++)cin>>a[i]; cout<<endl; for(i=0;i<n;i++)cout<<setw(5)<<a[i]; cout<<endl;for(i=0;i<n;i++){if(i%2)a[i]*=-1; if(a[i]>0)p++; if(a[i]<0)o++;}cout<<endl; for(i=0;i<n;i++)cout<<setw(5)<<a[i]; cout<<endl<<endl;cout<<"negatives: "<<o<<"   positives: "<<p<<endl; getchar(); getchar();}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Решаю на C# задачу нахождения НОД двух полиномов (многочленов) спомощью алгоритма Эвклида.

Основной код сделал, но при отладке выяснилось, что если задать полиномы, не имеющие НОД, то код падает в бесконечную рекурсию.

Собственно вот код:

class Polinom{	public int[] koefecents;	public int R;	public Polinom(string polinom)	{		while (polinom.IndexOf("- ") >= 0)			polinom = polinom.Replace("- ", "-");		polinom = polinom.Replace("-", "+-");		int kpmax = -1;		string[] pol = polinom.Split('+');		int[] k = new int[100];		for (int i = 0; i < k.Length; i++) k[i] = 0;		for (int i = 0; i < pol.Length; i++)		{			pol[i] = pol[i].Trim();			pol[i] = pol[i].ToLower();			pol[i] = pol[i].Replace("-x", "-1x");			if (pol[i].IndexOf('x') < 0) pol[i] += "x0";			if (pol[i].IndexOf('x') == 0) pol[i] = "1" + pol[i];			if (pol[i].IndexOf('x') == pol[i].Length - 1) pol[i] += "1";			string[] kp = pol[i].Split('x');			int kp1 = Int32.Parse(kp[1]);			k[kp1] += Int32.Parse(kp[0]);			if (kpmax < kp1) kpmax = kp1;		}		koefecents = new int[kpmax + 1];		for (int i = 0; i <= kpmax; i++) koefecents[i] = k[i];		R = kpmax;		k = null;		GC.Collect();	}	private Polinom(int Razm)	{		R = Razm;		koefecents = new int[R + 1];		for (int i = 0; i <= R; i++) koefecents[i] = 0;	}	public override string ToString()	{		string ret = "";		for (int i = koefecents.Length - 1; i >= 0; i--)		{			int k = koefecents[i];			if (k == 0) continue;			if (k != 1) ret += k.ToString();			if (i == 0 && k == 1) ret += k.ToString();			if (i != 0) ret += "x";			if (i != 1 && i != 0) ret += i.ToString();			if (i > 0) ret += " + ";		}		ret = ret.Replace("+ -", "- ");		ret = ret.TrimEnd(' ', '+');		if (ret == "") ret = "0";		return ret;	}	public static Polinom NOD(Polinom f, Polinom g)	{		int s = sravnenie(f, g);		if (s == 0) return f;		if (s == 1) return NOD(sokratitX(raznost(f, g)), g);		if (s == 2) return NOD(f, sokratitX(raznost(g, f)));		return f;	}	private static int sravnenie(Polinom f, Polinom g)	{ //Находит больший из полиномов		if (f.R == g.R)		{			for (int i = f.R; i >= 0; i--)			{				if (f.koefecents[i] > g.koefecents[i]) return 1;				if (f.koefecents[i] < g.koefecents[i]) return 2;			}			return 0;		}		else		{			return (f.R > g.R) ? 1 : 2;		}	}	private static Polinom raznost(Polinom f, Polinom g)	{ //вычитает из первого полинома второй		Polinom r = new Polinom(f.R);		for (int i = 0; i <= f.R; i++) r.koefecents[i] = f.koefecents[i];		for (int i = 0; i <= g.R; i++) r.koefecents[i] -= g.koefecents[i];		return tnulls®;	}	private static Polinom tnulls(Polinom f)	{ //отсекает нулевые старшие коэфеценты		if(f.koefecents[f.R] != 0) return f;		Polinom r = new Polinom(f.R - 1);		for (int i = 0; i <= r.R; i++) r.koefecents[i] = f.koefecents[i];		return tnulls®;	}	private static Polinom sokratitX(Polinom f)	{ //делит полином на x		if (f.koefecents[0] != 0) return f;		Polinom r = new Polinom(f.R - 1);		for (int i = 0; i <= r.R; i++) r.koefecents[i] = f.koefecents[i + 1];		return sokratitX®;	}}

Полином вводится строкой в конструкторе, в виде суммы, без знаков умножения, степени пишутся после x, например так:

x2 - 4x + 4

для полинома (x - 2)(x - 2)

Помогите, как отследить в коде, что два полинома не имеют НОД, точнее НОД = 1

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

Задачу решил :thumbup:

Походу отловил несколько ошибок.

Проблема была в том, что некоторые пары полиномов не имеющие НОД при серии производимых преобразований возвращались к исходным полиномам.

Кому надо, выкладываю конечный вариант, можете пользоваться

nod.rar

nod.rar

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

Люди, помогите pls.

В общем, дана матрица A(i,j) = (5.5 * i^2 - 2)/(i* (2 * (j^2) - 6 * j + 1)). Размер матрицы (n): 4x4. Нужно:

1) Найти x(i). x(i) - вторая строка матрицы, полученная делением матрицы А на максимальный элемент матрицы А. (должно получиться 4 ответа - x1, x2, x3, x4)

2) При помощи полученного x(i) найти y:

5a4185f1c451471481076cb487227ef2.png

Решение нужно оформить на языке Quick Basic.

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

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

Shadow TH:

QuickBasic уже, наверно, и сам его автор Билл Гейтс давно забыл :)

n = 4: DIM a(n, n), x(n)FOR i = 1 TO n: FOR j = 1 TO n  a(i, j) = (5.5 * i ^ 2 - 2) / (i * (2 * j ^ 2 - 6 * j + 1)): NEXT: NEXTFOR i = 1 TO n: FOR j = 1 TO n: PRINT a(i, j), : NEXT: PRINT : NEXTm = a(1, 1): FOR i = 1 TO n: FOR j = 1 TO n: IF a(i, j) > m THEN m = a(i, j)  NEXT: NEXT: PRINTFOR j = 1 TO n: x(j) = a(2, j) / m: PRINT x(j), : NEXT: PRINTy = 1: FOR i = 2 TO n - 1: y = y * (1 / (ABS(x(i)) + 1) + x(i) + 1): NEXTPRINT "y="; y: PRINTEND
Ссылка на комментарий
Поделиться на другие сайты

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

Спасибо, за решение.

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

Всем доброе время суток)

Есть задача:

На входе строка с числом в шестнадцатиричной форме. Распознать строку в переменную типа int. На выходе строки с введенным числом в двоичной, восьмиричной и десятичной форме.

Нужно решить ее на С (не плюсах).Туплю, не могу решить. На паскале делал все норм, а с С какая-то ***....(((((

Заранее спс__))

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

PriN_ce:

#include<stdio.h>#include<stdlib.h>main(){char sx[9],sb[33],so[12],sd[11]; scanf("%s",sx); int i;sscanf(sx,"%x",&i); ltoa(i,sb,2); ltoa(i,so,8); ltoa(i,sd,10); printf("%s\n%s\n%s\n",sb,so,sd); getchar(); getchar();}

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

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

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

Тролль: Жесть...у меня строк 50-70 всё занимало, и то нерабочего кода...а тут такое унижение.....хд

Спасибо, все работает...буду разбиратся, что тут происходит..)) Спасибо за лтоа и ссканф)

Я думал либ делением делать, либ побитовыми сдвигами(

А еще вопрос, насчет побитовых операций, вот напрмер из 10ой в 2ую можно так получить: сначало x&1 (побитовое умножение делаем), затем сдвигаем x>>1, так скока надо раз, и в иотге на выходе число в 2 ой форме. А можно получить этоже число, при помощи бит.операций, но в восьмиричной форме?

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

PriN_ce:

насчет побитовых операций, вот напрмер из 10ой в 2ую можно так получить: сначало x&1 (побитовое умножение делаем), затем сдвигаем x>>1, так скока надо раз, и в иотге на выходе число в 2 ой форме. А можно получить этоже число, при помощи бит.операций, но в восьмиричной форме?
Ну это не то чтобы из десятиричной - это из машинной, то есть двоичной, системы, в которой числа хранятся в памяти. Проверяем там по одному биту и так и на экран выводим в такой же форме, как в памяти. При этом еще и в обратном порядке, так как начинаем с последней цифры.

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

К примеру,

#include<stdio.h>main(){int i,a; scanf("%d",&a); for(i=0;i<5;i++){printf("%d",a&7); a>>=3;}getchar(); getchar();}

Напечатается число в восьмеричной системе, но цифры по этому способу все равно идут в обратном порядке. Впрочем, в C есть и другие способы. Например, битовые поля (не буду тут разбирать, тем более что работа с ними довольно сильно зависит от компилятора). C шел в своем развитии от битов к алгебре. А Pascal - в обратном направлении.

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

Здравствуйте. Помогите плиз с программой. Нужно написать программу, где необходимо разработать класс интерпретатор команд. Интерпретатор должен выражаться в том, что на плоскости в центре поля стоит точка. Пользователь в форме может ввести "вперед,назад,влево,вправо". От этого точка должна двигаться. При этом регистр не учитывается. А на самой форме должны быть кнопки "Старт" и "Стоп" . При движении точки должны меняться ее кординаты. Т.е. входные данные-стока с командой. Я так поняла, что текущие координаты должны быть в элементах-данных. Причем в конструкторе их вначале необходимо обнулить. Причем шаг задается пользователем. И для любой команды должно быть так называемое правило изменения координат. Плиз, помогите!!!!!! Очень-очень нужно) Заранее благодарна за любую помощь и советы)

Здравствуйте. Помогите плиз с программой. Нужно написать программу, где необходимо разработать класс интерпретатор команд. Интерпретатор должен выражаться в том, что на плоскости в центре поля стоит точка. Пользователь в форме может ввести "вперед,назад,влево,вправо". От этого точка должна двигаться. При этом регистр не учитывается. А на самой форме должны быть кнопки "Старт" и "Стоп" . При движении точки должны меняться ее кординаты. Т.е. входные данные-стока с командой. Я так поняла, что текущие координаты должны быть в элементах-данных. Причем в конструкторе их вначале необходимо обнулить. Причем шаг задается пользователем. И для любой команды должно быть так называемое правило изменения координат. Плиз, помогите!!!!!! Очень-очень нужно) Заранее благодарна за любую помощь и советы)

Забыла сказать, что программу необходимо написать на vicual c++

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

Nata6enka:

Это вы перешли к разработке оконных интерфейсов. По смыслу программы в ней реализуется так называемая "черепашья графика". Сама по себе она примитивна, в Бейсиках, даже в первых, был встроенный интерпретатор черепашьей графики - команда DRAW, которая интерпретировала передаваемый ей параметр-строку с буквенно-цифровыми командами перемещений "черепашки", оставлявшей за собой линию. Позднее на черепашьей графике был основан популярный язык программирования для детей LOGO. В отношении алгоритма ничего сложного нет.

А в отношении интерфейса тут помочь трудно, потому что оконный интерфейс в визуальных средах программирования вроде Visual C++ фактически не программируется, а рисуется, текст программы при этом автоматически создает сама среда по рисунку, а нужные детали и действия задаются настройками в меню свойств и методов элементов интерфейса. Конкретные действия, например, при нажатии кнопок на форме, задаются вставками в подготовленные средой программирования шаблоны методов. Так что тут надо писать не текст программы, а длинную инструкцию, что куда тащить и что выбирать из предлагаемых Visual C++ меню. Такие инструкции пишут в подробных учебниках, а короткими постами тут не поможешь - или надо делать задачу за человека самому целиком, или советовать нечего. Так что бери учебник с примерами и - по образу и подобию :)

Могу только заметить, что предложенное управление черепашкой кажется очень неудобным. Судя по словам "регистр не учитывать", нужно каждый раз, когда надо двинуть черепашку, впечатывать в поле формы нужное слово. Куда удобнее были бы четыре кнопки с этими словами, а того лучше - стрелками. А правила изменения координат - это пустяк: "вправо" значит "прибавить к X шаг", "влево" - "вычесть из X шаг". "Вверх" и "вниз" = то же с Y.

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

А как задать шаг??? И еще , у меня объектно-ориентированным программированием проблемы. Можете написать как будет выглядеть функция изменения координат?

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

Nata6enka:

А как задать шаг???
Всё, что сказано, цитирую: "шаг задается пользователем". Или в посте был просто вольный пересказ задания, или в задании действительно ничего конкретного не было сказано. Если не сказано, то можно задавать как Бог на душу положит - любым из элементов управления, например, "наборным счетчиком" CSpinButtonCtrl. Если вводить команды вручную, как предложено в задании (ужасно трудоемкий способ), то можно и числом после ввода направления, например, "вверх 12". Раз не сказано, как, то хозяин - барин, хоть ручным вводом числа в словесной форме :g: , если следовать стилю задания. Всё, что можно придумать, можно описать, а что можно описать, можно запрограммировать...

А тело функции изменения координат, например, по X может выглядеть как-то так:

CClientDC dc(this);for(int i=1;i<=step;i++){point.x+=stepX; point.y;}dc.SetPixel(point.x, point.y, RGB(0,0,0));

где stepX - шаг по X. У меня Visual C++ не установлен, да и варианты можно придумать разные.

Посмотри в качестве примера программирования интерфейса графики на Visual C++, например, третий урок отсюда.

Не совсем то, что у тебя, но достаточно коротко показывает, как это вообще делается - там, правда, управляется мышью, поскольку до того, чтобы заставить пользователя вводить направление перемещения печатью слов на клавиатуре, в здравом уме было трудно додуматься ;)

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

всем привет.помогите с прогой на паскале.не могу решить задание.Задание след:Дан файл f1.txt, каждый компонент которого – целое число. Найти наименьшее число и поменять его местами с первым компонентом файла. Все операции выполнять только с файлом f1.txt.

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

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

leksev: что подразумевается под компонентом файла? бинарная запись или строка с числом? или что-то еще?

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

leksev:

var f1:file of integer; i,k,a,m,c:integer;beginassign(f1,'f1.txt'); randomize;rewrite(f1); for i:=1 to 9 do begin c:=random(100); write(f1,c) end; close(f1);reset(f1); read(f1,a); m:=a; i:=0; k:=0;while not eof(f1) do begin inc(i); read(f1,c); if m>c then begin k:=i; m:=c end end;close(f1);reset(f1); while not eof(f1) do begin read(f1,c); write(c:8) end; writeln; close(f1);reset(f1); write(f1,m); seek(f1,k); write(f1,a); close(f1);reset(f1); while not eof(f1) do begin read(f1,c); write(c:8) end; close(f1);writeln; readLnend.

Тестовый файл f1.txt c типом компонентов - целые, с девятью случайными числами, создается в начале программы (расширение txt, видимо, для запутывания потенциального противника, возможно, студентов :doh:). Для контроля этот файл читается и его содержимое выводится на экран. Затем осуществляется поиск в файле минимального числа и обмен его с первым числом файла. Измененный файл снова читается и выводится на экран.

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

Народ помогите пожалуйста добить задачу.

Нужно из вводимой исходной матрицы перенести в другую матрицу столбцы с четными номерами

#include <stdio.h>#include <iostream>#define N 4 /* 100 чисел вводить как-то утомительно;) */using namespace std;int main(){	int arr[N][N];	int arr2[N][N];	int i, j;		/* заполнение массива */	for ( i = 0; i < N; i++ ){			for ( j = 0; j < N; j++ ){					printf("arr[%d][%d] = ", i, j);					scanf("%d", &arr[i][j]);			}	}	printf("\n-----------------------\n");	printf("\nPervonachalnaya matrica\n");	/* вывод в виде матрицы */	for ( i = 0; i < N; i++ )			for ( j = 0; j < N; j++ )					printf( ( j < (N - 1) ) ? "%d\t" : "%d\n", arr[i][j]);/*		printf("\n-----------------------\n");	printf("\nPosle\n");	for ( j = 1; i < N; j++ ){		if (j%2==0) 		 for ( i = 1; i < N; i++ )		 {		   arr2[i, j/2] = arr[i,j];		 }	}*/printf("\n-----------------------\n");	printf("\nPosle\n");	  for ( i = 0; i < N; i++ )			for ( j = 0; j < N; j++ )	arr2[i][j/2]=arr[i][j];cout<<arr2[i][j]<<"\n";	system("pause");	return 0;}
Ссылка на комментарий
Поделиться на другие сайты

AutoGen:

Если я правильно понял, во второй матрице будет вдвое меньше столбцов.

#include <stdio.h>#define N 4 main(){int arr[N][N],arr2[N][N/2];int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++){printf("arr[%d][%d] = ",i,j);scanf("%d",&arr[i][j]);}printf("\nPervonachalnaya matrica\n\n");for(i=0;i<N;i++ ){for(j=0;j<N;j++)printf("%7d",arr[i][j]);printf("\n");}for(i=0;i<N;i++)for(j=0;j<N/2;j++)arr2[i][j]=arr[i][2*j+1];printf("\n-----------------------\n\nNovaya matrica\n\n");for(i=0;i<N;i++){for(j=0;j<N/2;j++)printf("%7d",arr2[i][j]);printf("\n");}getchar(); getchar();}
Ссылка на комментарий
Поделиться на другие сайты

скажите пожалуйста , как создать координатную плоскость в visual c++ ??? это первый вопрос.

и как создать на ней какой-то объект? ну чтобы визуально это смотрелось как плоскость скажем черного цвета с красной точкой посредине? (у меня работа с "черепашьей графикой" ) заранее спасибо.

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

доброго времени суток. помогите пожалуйста,нужна программа для расчета сетей,на входе ip-адрес и маска в виде 4 октетов,на выходе количество хостов,максимальный ip минимальный ip. буду признателен за помощь

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

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

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

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

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

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

Войти

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

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

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



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