2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Помогите разобраться с ошибкой!!!
Сообщение13.10.2009, 23:48 


08/10/09
6
Выбиват ошибку здесь :
Код:
k=(mass[i+1]-mass[j+1])/(mass[i]-mass[j]);
b=(mass[i+1]*mass[j]-mass[j+1]*mass[i])/(mass[i]-mass[j]);

ругается вроде что деление на ноль , почему не знаю . Помомогите кто может , в чем ошибка и как поправить ?
код: [ скачать ] [ спрятать ]
Используется синтаксис C
#include <stdio.h>
#include <conio.h>


float mass[100];
float i=0.0,j=0.0,f=0.0,q=0.0,m=0.0,t=0.0;
float k=0.0,b=0.0,y=0.0;

void main()
{
//clrscr();
printf("vvedite koordinati (x;y) \n");
   mass[0]=10;
   while(i != 2*mass[0]+1)
   {
   scanf("%f", &mass[i]);
   i++;
   }
   i=0;
    /*  while(i!=2*mass[0])
      {
      i++;
      printf("%f\n",mass[i]);
      } */

i=-1;
while(i!=2*mass[0]-3)
   {
   i=i+2;
   j=i;
   while(j!=2*mass[0]-1)
      {
      j=j+2;
      k=(mass[i+1]-mass[j+1])/(mass[i]-mass[j]);
      b=(mass[i+1]*mass[j]-mass[j+1]*mass[i])/(mass[i]-mass[j]);
         m=m+2;
         for(t=1;t<mass[0];t++)
         {
         m=m+2;
            if(m!=i && m!=j)
            {
            y=k*mass[m]+b;
               if(y<mass[m+1])
               f++;
               else
               q++;

            }
         }
      printf("(%f;",mass[i]);
       printf("%f) and",mass[i+1]);
      printf("(%f;",mass[j]);
       printf("%f)\n",mass[j+1]);

      }
   }


getch();
}

 Профиль  
                  
 
 Re: Помогите разобраться с ошибкой!!!
Сообщение14.10.2009, 01:37 
Заслуженный участник


09/08/09
3438
С.Петербург
Ners в сообщении #251490 писал(а):
Выбиват ошибку здесь :
Вы хоть напишите, что Ваша программа делать-то должна.
И отформатируйте, пожалуйста, исходный текст с правильными отступами. А то структура кода как-то ускользает.

 Профиль  
                  
 
 Re: Помогите разобраться с ошибкой!!!
Сообщение14.10.2009, 05:02 
Заслуженный участник


04/05/09
4582
Извращение какое-то.
Вы бы ещё и остальные переменные (i,j и т.д.) в массив mass положили.

 Профиль  
                  
 
 Re: Помогите разобраться с ошибкой!!!
Сообщение14.10.2009, 09:03 


21/03/06
1545
Москва
1. Плохое форматирование.
2. Логика программа ужасна.
3. Переменная типа float не может использоваться как индекс массива (см. переменные i, j, m). Если у Вас этот код компилируется, выкиньте Ваш компилятор, он не соответствует стандарту.
4. По вашей ошибке - возможные варианты:
- выражение mass[i]-mass[j] действительно равно нулю. Это возможно когда mass[i] действительно равно mass[j], i не равно j. Частный случай - mass[i] = mass[j] = 0, вероятен при вводе ерунды вместо осмысленной информации при чтении с помощью scanf.
- i равно j
- Выход за пределы массива/выход за пределы тех элементов массива, которые заполнены с помощью scanf (оставшиеся элементы вплоть до 99-го заполнены нулями, т.к. массив объявлен как глобальный).
5. Для помощи Вам, помимо текста программы и строки возникновения ошибки, необходим также набор вводимых данных, приводящий к ошибке. У меня, например, вариант 2, 1, 2, 3, 4 ошибки не дает.
6. Нет никакой проверки на осмысленность вводимых данных, нет подсказки, что первое число - фактически определяет кол-во наборов координат x, y (что бы они ни значили).

-- Ср окт 14, 2009 10:26:56 --

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

 Профиль  
                  
 
 Re: Помогите разобраться с ошибкой!!!
Сообщение17.10.2009, 00:27 


30/09/09
9
Код:
k=(mass[i+1]-mass[j+1])/(mass[i]-mass[j]);
b=(mass[i+1]*mass[j]-mass[j+1]*mass[i])/(mass[i]-mass[j]);

Прокрутите циклы вручную для малого количества элементов. Скорее всего на каком-то прохождении обоих циклов находятся такие i и j, для которых элементы массива равны.

P.S. со всеми вышеописанными замечаниями согласен. Текст ужасно написан...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group