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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 21:38   #1
VKorablev
Форумчанин
 
Аватар для VKorablev
 
Регистрация: 14.04.2011
Сообщений: 126
Радость Программка

Доброго времени суток, помогите разобраться с программкой пожалуйста, накосячил с указателями и еще с чем то. Вот код :
Код:
# include "stdafx.h"
# include <stdio.h>
# include <Windows.h>
# include <math.h>
# include <stdlib.h>

const int nmax = 50;

struct perem
{
		int a, b, c;
		float r;
}mas [nmax];

float Rasstoyanie(int x0, int y0, perem *p)
{
	return abs(p->a * x0 + p->b * y0 + p->c)/sqrt(pow((float)p->a, 2) + pow((float)p->b, 2));
}

void Print(perem *m [], short n)
{
	short i;

	printf("Коэффициенты прямых:\nA: ");
	for(i = 0;i < n;i++)
		printf("%5d", m [i]->a);
	printf("\nB: ");
	for(i = 0;i < n;i++)
		printf("%5d", m [i]->b);
	printf("\nC: ");
	for(i = 0;i < n;i++)
		printf("%5d", m [i]->c);
	printf("\nРасстояния до точки А:\n  ");
	for(i = 0;i < n;i++)
		printf("%5.1f", m [i]->r);
	printf("\n\n");
}

void main ()
{
	SetConsoleOutputCP(1251);
	perem m [nmax], p [nmax];
	short n, k, i, j;
	int ax, ay;
	perem x;
	float i1, i2;
	float proverka;

	system("cls");
	do
	{
		printf("Введите кол-во прямых. n=");
		scanf("%d", &n);
	}
	while ((n < 0) || (n > nmax));
	printf("\nВведите коэффициенты прямых:\n");
	for(i = 0;i < n;i++)
	{
		printf("Прямая %d", i);
		do
		{
			proverka = 0;
			printf("\nA=");
			scanf("%d", &m [i].a);
			printf("B=");
			scanf("%d", &m [i].b);
			printf("C=");
			scanf("%d", &m [i].c);
			proverka = sqrt(pow((double)m [i].a, 2) + pow((double)m [i].b, 2) + pow((double)m [i].c, 2));
			if (proverka == 0)
				printf("\nВсе коэффициенты не могут быть равны 0\n");
		}
		while (proverka == 0);
	}
	printf("\nВведите абциссу точки А (х):\n");
	scanf("%d", &ax);
	printf("\nВведите ординату точки А (у):\n");
	scanf("%d", &ax);
	printf("\nПункт А\n");
	for(i = 0;i < n;i++)
		m[i].r = Rasstoyanie(ax, ay, m);
	printf("Исходное множество:\n");
	Print(*m, n);
	printf("\n");
	system("pause");
	printf("Пункт Б\n");
	do
	{
		printf("Введите интервал i1<i2:\n");
		scanf("%f %f", &i1, &i2);
	}
	while (i1 > i2);
	k = 0;
	for(i = 0;i < n;i++)
		if ((m[i].r >= i1) && (m[i].r <= i2))
		{
			k++;
			p [k] = m [i];
		}
	if (k = 0)
		printf("Прямых с расстоянием до точки А от %0.1f", i1, " до %0.1f", i2, "нет");
	else
	{
		printf("Прямые с расстоянием до точки А от %0.1f", i1, " до %0.1f", i2);
		Print(p, k);
		printf("\n");
		system("pause");
		printf("Пункт В\n");
		for(i = 0; i < (k-1);i++)
			for(j = (i + 1);j < k;j++)
				if (p [i].r > p [j].r)
				{
					x = p [i];
					p [i] = p [j];
					p [j] = x;
				}
		printf("В порядке возрастания расстояний:\n");
		Print(p, k);
	}
}
Нам больше не нужно смотреть на мир сквозь замочную скважину 64Кб сегмента (с) ВалИк
VKorablev вне форума Ответить с цитированием
Старый 20.12.2011, 21:49   #2
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Не вижу надобности использовать указатели.
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 20.12.2011, 22:52   #3
VKorablev
Форумчанин
 
Аватар для VKorablev
 
Регистрация: 14.04.2011
Сообщений: 126
По умолчанию

Цитата:
Не вижу надобности использовать указатели.
мне бы помочь исправить код) первый раз структуры использую
Нам больше не нужно смотреть на мир сквозь замочную скважину 64Кб сегмента (с) ВалИк
VKorablev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программка на c#($) xctumzkfa Фриланс 2 18.10.2011 15:39
Программка Ajempp C++ Builder 0 08.06.2011 18:35
программка stupid Помощь студентам 2 20.03.2011 16:20
Программка Longround Фриланс 8 31.07.2010 10:50
программка flashpoint412 Общие вопросы C/C++ 0 09.06.2010 14:01