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

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

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

Восстановить пароль

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

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

Добрый вечер. Помогите разобраться с ошибками, накосячил походу с указателями.
Код:
# 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 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправить ошибку Дмитрий Solov Паскаль, Turbo Pascal, PascalABC.NET 1 03.12.2011 13:26
С# Исправить ошибку PROkaZZZniK Помощь студентам 3 20.11.2011 22:49
Помогите исправить ошибку KARUSHEV Помощь студентам 9 10.09.2009 13:01
Исправить ошибку LLIypLLIyH Помощь студентам 5 16.06.2008 16:50