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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2011, 11:55   #1
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию С++|Сравнить элементы массива

Здравствуйте не могли бы вы помочь мне понять где ошибка в моем коде.Задача такая, допустим в файл записаны числа, пускай это будут числа: 7 7 3 7 7 9 7 7 3 7 6 7. По условию в файл записаны коэффициенты прямых заданных уравнением ax+by+c=0 (коэффициенты это a,b,c). Нам нужно сравнить коэффициенты прямых и сказать какие прямые параллельны а какие совпадают. Как известно условие параллельности прямых это: a1=a2, b1=b2, а условие при которых прямые совпадают это: a1=a2, b1=b2, c1=c2. То есть нам нужно первую тройку сравнить со всеми остальными, вторую тройку со всеми остальными... и т.д.
Код:
#pragma once
#include <iostream>
#include<fstream>
#include<conio.h>
#include<clocale>
#include <math.h>
#define SIZE 22
int i,j;
void main(){
int p[SIZE]={0};
setlocale(LC_ALL,"Russian_Russia.1251");
std::ifstream in("E:\\Documents\\InputData.txt");
for(i=0;i<SIZE;i++)
in>>p[i];
    for(i=1;i<SIZE;i=i+3){
		for(j=4;j<SIZE;j=j+3){
            if(p[i]==p[j]){
               i++;
               j++;
               if(p[i]==p[j]){
                  i++;
                  j++;
                  if(p[i]==p[j]){
                    std::cout<<"Совпадают прямые с коэфициентами: c="<<p[i]<<" b="<<p[i++]<<" a="<<p[i++];
					i=i-4;
					j=j-2;
                  }
                  else
				    std::cout<<"Параллельны прямые с коэфициентами: b="<<p[i++]<<" a="<<p[i++];
				    i=i-4;
					j=j-2;
			       }
		       }
            }
	     }
in.close();
std::cout<<"\n";
system("PAUSE");
}
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 24.05.2011, 12:13   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Может, проще было бы сделать двумерный массив, в первой строчке коэффициенты a1, a2,..., aN, во второй -- b1, b2,..., bN, а в третьей, соответственно -- c1, c2,..., cN?
Тогда и сравнивать будет проще.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 24.05.2011, 12:38   #3
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Можно было бы, но это мне придется еще придумывать как считать из файла в такой массив. Мой алгоритм теоретически работает 100%), но к сожалению у меня какая то беда с индексами. Текущий алгоритм работает, но когда я пытаюсь вывести результат программа уходит в цикл.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 24.05.2011, 13:14   #4
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Я уже просто замучился с этой программой, вторую неделю её уже делаю, думаю что ошибка простейшая но найти никак не могу((
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 24.05.2011, 13:15   #5
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от Демик Посмотреть сообщение
как считать из файла в такой массив.
Точно так же, только в двойном цикле.

А в твоей проверке -- почему ты начинаешь проверять с 1-го индекса, а не с 0-го? И индексы в цикле не увеличивай.
Как-то так:
Код:
for(i = 0;i < SIZE; i +=3)
{
    for(j = i + 3; j < SIZE; j +=3)
    {
        if(p[i] == p[j] && p[i+1] == p[j+1])
        {
            if(p[i+2]==p[j+2])
                std::cout<<"Совпадают прямые с коэфициентами: c="<<p[i]<<" b="<<p[i+1]<<" a="<<p[i+2];  // Тут надо дописать, с чем они совпадают
            else
                std::cout<<"Параллельны прямые с коэфициентами: b="<<p[i++]<<" a="<<p[i++]; // такая же фигня (с)
        }
    }
}
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 24.05.2011, 13:28   #6
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Спасибо, программа в цикл уже не выходит, но она выдает только один результат, то есть, есть параллельные прямые, а есть спадающие, но выводит только параллельные. Что это может значит?
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 24.05.2011, 16:21   #7
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Огромное вам спасибо Mandrivnyk! Все заработало)
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По массивам, SOS! из целочисленного массива удалить из массива элементы, встречающиеся менее 3-х раз prelest' Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2011 22:37
Элементы матрицы. Все ненулевые элементы массива D(k) расположить в начале массива E(k) и подсчитать их к Вася Маклауд Помощь студентам 0 03.04.2011 17:21
1.Найти в матрице первую строку, все элементы которой отрицательны 2.отсортировать элементы массива по в w0lf16 Помощь студентам 2 22.11.2009 15:47
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44
Как сравнить элементы 2 массивов между собой? DragonionS Общие вопросы Delphi 1 01.07.2007 21:49