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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2015, 20:28   #1
vet9690
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 12
По умолчанию Помогите с написанием программ!

Препод задал сделать программы на С++, ничего толком не объяснил , примерный алгоритм решения задач я нашел, только программировать на С++ не умею. Выручайте!!

1) Смоделировать операцию умножения целого числа длиной до 30 десятичных цифр на действительное число в форме +/- m.n Е K, где суммарная длина мантиссы
(m+n) - до 30 значащих цифр, а величина порядка K - до 5 цифр. Результат выдать
в форме +/- 0.m1 Е K1.
--------------------------------------------------------------------------------
2) Слова текста из малых латинских букв записаны не менее чем через один
пробел; текст оканчивается точкой. БЕЗ ИСПОЛЬЗОВАНИЯ конструкции STRING:
а) написать программу ввода такого текста с клавиатуры;
б) напечатать все слова, отличающиеся от последнего слова, и одновременно
симметричные.
------------------------------------------------------------------------------
3) В графе найти максимальное расстояние между всеми парами его вершин.
------------------------------------------------------------------------------
4) Задана система двусторонних дорог. Определить, можно ли, закрыв какие-
нибудь три дороги, добиться того, чтобы из города А нельзя было попасть в город В.
vet9690 вне форума Ответить с цитированием
Старый 15.04.2015, 20:38   #2
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Всегда кто-то виноват препод не объяснил, лекции не понятные, диктуют быстро. С++ не знаю, раз вы его проходите знать должны никто просто так предмет не вводит и не спрашивает с него.

Почитаешь - и чес слово помогать ну никого желания. идите во фриланс и вам помогут, либо свои наработки показывайте.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 15.04.2015, 23:22   #3
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от vet9690 Посмотреть сообщение
Препод ничего толком не объяснил.. Выручайте!!
..ну и решит кто-нить за тебя эти задачки, потратив (в лучшем случае) пару часов, ..ты покажеш их преподу, а тот скажет: "Не это требовалось!". И чё тогда???
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 15.04.2015, 23:26   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

vet9690
Вы согласны платить? Если да, то я перенесу темы во фриланс...
Вадим Мошев вне форума Ответить с цитированием
Старый 16.04.2015, 00:38   #5
vet9690
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 12
По умолчанию

Завтра будут наработки

Цитата:
Сообщение от R71MT Посмотреть сообщение
..ну и решит кто-нить за тебя эти задачки, потратив (в лучшем случае) пару часов, ..ты покажеш их преподу, а тот скажет: "Не это требовалось!". И чё тогда???
Я хочу не просто сдать, а понять что к чему еще.

Последний раз редактировалось Аватар; 16.04.2015 в 06:49.
vet9690 вне форума Ответить с цитированием
Старый 16.04.2015, 06:27   #6
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Согласен с Вадимом, без наработок только во фриланс.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 17.04.2015, 12:50   #7
vet9690
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
Всегда кто-то виноват препод не объяснил, лекции не понятные, диктуют быстро. С++ не знаю, раз вы его проходите знать должны никто просто так предмет не вводит и не спрашивает с него.

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

#include <iostream>
using namespace std;
const int n = 5;
int i, j;
bool *visited = new bool[n];
int graph[n][n] =
{
	{ 0, 1, 0, 0, 0 },
	{ 0, 0, 1, 1, 0 },
	{ 0, 0, 0, 0, 0 },
	{ 0, 0, 0, 0, 1 },
	{ 0, 0, 0, 0, 0 }
};
void G(int g)
{
	int r;
	cout << g + 1 << " ";
	visited[g] = true;
	for (r = 0; r <= n; r++)
		if ((graph[g][r] != 0) && (!visited[r]))
			G(r);
}
void main()
{
	setlocale(LC_ALL, "Rus");
	int start;
	cout << "Матрица смежности графа: " << endl;
	for (i = 0; i<n; i++)
	{
		visited[i] = false;
		for (j = 0; j<n; j++)
			cout << " " << graph[i][j];
		cout << endl;
	}
	cout << "Стартовая вершина >> "; cin >> start;

	bool *vis = new bool[n];
	cout << "Путь: ";
	G(start - 1);
	delete[]visited;
	system("pause");
}

Последний раз редактировалось Stilet; 17.04.2015 в 12:52.
vet9690 вне форума Ответить с цитированием
Старый 17.04.2015, 17:04   #8
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Цитата:
3) В графе найти максимальное расстояние между всеми парами его вершин.
Поиск в интернете даёт мысль о том, что тебе нужно найти диаметр графа.
[1], [2], [3].
Правда, я понял, что нужно искать для весов равных 1.

Итак, подытоживая. Применяем Флойда-Уоршелла к матрице смежности. Получаем матрицу достижимости/расстояний. Просматривая её - находим диаметр графа. Это и будет ответом.
FPaul вне форума Ответить с цитированием
Старый 17.04.2015, 17:12   #9
vet9690
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 12
По умолчанию

Цитата:
Сообщение от FPaul Посмотреть сообщение
Поиск в интернете даёт мысль о том, что тебе нужно найти диаметр графа.
[1], [2], [3].
Правда, я понял, что нужно искать для весов равных 1.

Итак, подытоживая. Применяем Флойда-Уоршелла к матрице смежности. Получаем матрицу достижимости/расстояний. Просматривая её - находим диаметр графа. Это и будет ответом.
Проблема в том, у нас есть длины , по которым и нужно искать, а не по количестве вершин.

Цитата:
Сообщение от vet9690 Посмотреть сообщение
Препод задал сделать программы на С++, ничего толком не объяснил , примерный алгоритм решения задач я нашел, только программировать на С++ не умею. Выручайте!!

1) Смоделировать операцию умножения целого числа длиной до 30 десятичных цифр на действительное число в форме +/- m.n Е K, где суммарная длина мантиссы
(m+n) - до 30 значащих цифр, а величина порядка K - до 5 цифр. Результат выдать
в форме +/- 0.m1 Е K1.
--------------------------------------------------------------------------------
2) Слова текста из малых латинских букв записаны не менее чем через один
пробел; текст оканчивается точкой. БЕЗ ИСПОЛЬЗОВАНИЯ конструкции STRING:
а) написать программу ввода такого текста с клавиатуры;
б) напечатать все слова, отличающиеся от последнего слова, и одновременно
симметричные.
------------------------------------------------------------------------------
3) В графе найти максимальное расстояние между всеми парами его вершин.
------------------------------------------------------------------------------
4) Задана система двусторонних дорог. Определить, можно ли, закрыв какие-
нибудь три дороги, добиться того, чтобы из города А нельзя было попасть в город В.
В первом задание исползуйте библитеку BigIntegerLibrary (float) и перегоните цыфру в массив потом её в строку.

Последний раз редактировалось Stilet; 17.04.2015 в 17:27.
vet9690 вне форума Ответить с цитированием
Старый 17.04.2015, 17:24   #10
vet9690
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 12
По умолчанию

Цитата:
Сообщение от vet9690 Посмотреть сообщение
Препод задал сделать программы на С++, ничего толком не объяснил , примерный алгоритм решения задач я нашел, только программировать на С++ не умею. Выручайте!!

1) Смоделировать операцию умножения целого числа длиной до 30 десятичных цифр на действительное число в форме +/- m.n Е K, где суммарная длина мантиссы
(m+n) - до 30 значащих цифр, а величина порядка K - до 5 цифр. Результат выдать
в форме +/- 0.m1 Е K1.
--------------------------------------------------------------------------------
2) Слова текста из малых латинских букв записаны не менее чем через один
пробел; текст оканчивается точкой. БЕЗ ИСПОЛЬЗОВАНИЯ конструкции STRING:
а) написать программу ввода такого текста с клавиатуры;
б) напечатать все слова, отличающиеся от последнего слова, и одновременно
симметричные.
------------------------------------------------------------------------------
3) В графе найти максимальное расстояние между всеми парами его вершин.
------------------------------------------------------------------------------
4) Задана система двусторонних дорог. Определить, можно ли, закрыв какие-
нибудь три дороги, добиться того, чтобы из города А нельзя было попасть в город В.
Вот что у меня получилось по второй задачи, но только там строки нельзя копировать( strcpy )и еще есть , а нужно каждый символ затаскивать, исправьте кто знает как.

Код:
#include "StdAfx.h"

#include "iostream"

using namespace std;

char *text;
char *time;
char *print;
char word[80];
char last[80];
int words, chars1, charsintxt;
bool skip = 0;

void main()
{
	words = 0;
	chars1 = 0;
	charsintxt = 0;
	text = time = print = NULL;
	do
	{
		for(int i = 0; i<80; i++)
		{
			word[i] = 0;
		}
		do
		{
			cin.get(word[chars1]);
			chars1++;
			if(word[chars1-1] == ' ')
			{
				if(chars1 == 1)
				{
					skip = 1;
				}
				break;
			}
			if(word[chars1-1] == '.')
			{
				if(chars1 != 1)
					for(int i = 0; i<=chars1-2; i++)
					{
						last[i] = word[i];
					}
				break;
			}

		}while(1);

		if(!skip)
		{
			words++;
			if(text != NULL)
			{
				time = (char*)calloc(charsintxt, sizeof(char));
				strcpy(time, text);
				text = NULL;
			}
			charsintxt += chars1;
			text = (char*)calloc(charsintxt, sizeof(char));
			if(time != NULL)
			{
				strcpy(text, time);
				time = NULL;
			}
			strcpy(text+(charsintxt-chars1), word);
			
			if(word[chars1-1] == '.')
					break;
		}

		skip = 0;
		chars1 = 0;

	}while(1);

	/*skip = 0;
	chars1 = 0;
	charsintxt = 0;
	int count = words;

	do
	{
		for(int k = 0; k<80; k++)
		{
			word[k] = 0;
		}
		do
		{
			word[chars1] = text[chars1+charsintxt];

			chars1++;

			if(text[chars1+charsintxt] == ' ')
				break;

			if(text[chars1+charsintxt] == '.')
				break;

		}while(1);


		if(strcmp(word, last) == 0)
			continue;

		for(int j = 0; j < chars1; j++)
		{
			if(word[j] != word[chars1-j])
			{
				skip = 1;
				break;
			}
		}
		charsintxt += chars1+1;
		if(!skip)
		{
			if(print != NULL)
			{
				print = (char*)calloc(charsintxt, sizeof(char));
				strcpy(time, print);
				print = NULL;
			}
			print = (char*)calloc(charsintxt, sizeof(char));
			if(time != NULL)
			{
				strcpy(print, time);
				time = NULL;
			}
			strcpy(print+(charsintxt-chars1), word);
		}

		skip = 0;
		chars1 = 0;
		count--;
	}while(1);

	cout << print << endl;*/
	system("Pause");
}
От модератора: для оформления кода программы используйте тэг code (это кнопка с изображением решётки: #)

Последний раз редактировалось Вадим Мошев; 17.04.2015 в 17:27.
vet9690 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с написанием программ на С (не ++) bazik Помощь студентам 4 05.03.2015 20:15
Помогите, с написанием. Chesterfield20 C# (си шарп) 2 10.05.2014 10:17
Помогите с написанием программ для Pascal zhenia19 Помощь студентам 1 06.11.2013 20:32
Помогите с написанием двух простых программ на с++ Alex1991 Помощь студентам 0 20.04.2009 17:33