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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2008, 18:11   #1
Bo2nik
 
Регистрация: 12.03.2008
Сообщений: 4
По умолчанию Динамичесие списки. Язык Си.

Задача такова: релизовать алгоритм умножения многочленов на Си. Я делаю так: сформировываю два списка (это вроде работает) коэфициентов многочленов, теперь надо их перемножить и результат запихнуть в третий список. У меня чего-то не получается задать степень (степень идет с головы списка). Вот код:
Код:

#include "stdafx.h"
#include <stdio.h>
struct list // это первый многочлен
{
           int inf; //коэфициент
           int st; //степень
           struct list *ref;
};
struct list2 // это второй многочлен
{
	int inf2;
	int st2;
	struct list2 *ref2;
};
main()
{
	FILE *fp,*fp2;
	struct list *p,*beg=NULL,*end=NULL;
	struct list2 *p2,*beg2=NULL,*end2=NULL;
           fp = fopen ("spisok.txt","r");
	fp2= fopen ("spisok2.txt","r");
	printf("MNOGOCHLENI\n");
	p = (struct list*)malloc(sizeof(struct list)); //выделяю память для
	p->st = -1;// степени, первоночально степень = -1
	while ( !feof(fp) && !feof(fp2) )
	{
		p = (struct list*)malloc(sizeof(struct list));
		p2= (struct list2*)malloc(sizeof(struct list2));
		fscanf (fp,"%d",&p->inf);
		fscanf (fp2,"%d",&p2->inf2);
		p->st = p->st + 1; //увеличиваю степень,здесь ошибка?
		if (feof(fp) && feof(fp2))
		{
			free(p);
			free(p2);
			break;
		}
		end=p; end2=p2;
		end->ref=NULL; end2->ref2=NULL;
		while (p!=NULL)
		{
			printf("k = %d, st = %d\n",p->inf,p->st);
//вместо st выводит какую-то фигню
			p=p->ref;

		}
		while (p2!=NULL)
		{
			printf("k2 = %d \n",p2->inf2);
			p2=p2->ref2;

		}
	}
}
Еще просьба, может кто-нибудь объяснит алгоритм перемножения(там только при равных степенях, можно перемножать коэфициенты). Писать исходный код не нужно, только укажите где ошибки. Спасибо.
Bo2nik вне форума Ответить с цитированием
Старый 04.04.2008, 18:33   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Bo2nik Посмотреть сообщение
Код:
..................
		p->st = p->st + 1; //увеличиваю степень,здесь ошибка?
.................
Еще просьба, может кто-нибудь объяснит алгоритм перемножения(там только при равных степенях, можно перемножать коэфициенты). Писать исходный код не нужно, только укажите где ошибки. Спасибо.
Ну так текущую степень надо где-то "снаружи" цикла держать, а не увеличивать случайные данные, которые вернула malloc. И зачем две одинаковых структуры определять?

Умножение многочленов
B_N вне форума Ответить с цитированием
Старый 04.04.2008, 20:37   #3
Bo2nik
 
Регистрация: 12.03.2008
Сообщений: 4
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Ну так текущую степень надо где-то "снаружи" цикла держать, а не увеличивать случайные данные, которые вернула malloc. И зачем две одинаковых структуры определять?
А можно поподробнее.
Две структуры, а как без них, ведь надо два многочлена перемножать? Походу я не врубаюсь, чето вообще запутался.
Bo2nik вне форума Ответить с цитированием
Старый 04.04.2008, 20:56   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Bo2nik Посмотреть сообщение
А можно поподробнее.
Две структуры, а как без них, ведь надо два многочлена перемножать? Походу я не врубаюсь, чето вообще запутался.
Ну и что, что перемножать, хоть пятьдесят
Код:
struct _list{
//.............	
}p1, p2, p3, ........., p100,.....;
Зачем для каждой переменной по типу объявлять, если они одинаковые.
B_N вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки Вилен Общие вопросы C/C++ 3 22.05.2008 00:40
списки Влдислаав3911 Паскаль, Turbo Pascal, PascalABC.NET 5 10.05.2008 17:35
Списки... Arkuz Компоненты Delphi 2 19.04.2008 22:58