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

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


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

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. буду признателен за помощь

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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



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