Member
Статус: Не в сети Регистрация: 10.12.2007 Откуда: Санкт-Петербург
спасибо) но я не ввожу большие числа, так что переполнения не может быть, а в отладчике уже бывали-с Там как раз хорошо видно, как они "появляются" при заходе в цикл, а до захода все нормально
Добавлено спустя 35 минут 9 секунд: у меня вообще какие-то нелады с умножением...Не подскажите, в чем тут дело? Уже сто лет не могу понять, в чем проблема
Код:
class polynom {
int powers [SIZE]; int p; int coeff [SIZE]; public: polynom & operator * (polynom); }; polynom & polynom :: operator * (polynom a) { polynom c(powers, p, coeff); int j=0; int i; int k=0; int t=0; int m1c[SIZE], m1p[SIZE], m2c[SIZE], m2p[SIZE], m1[SIZE], m2[SIZE]; int l1=p; int l2=a.p; t=k=j=0; for(t=0;t<=l1;t++) for(k=0;k<=l2;k++){ m1[j]=c.coeff[t]*a.coeff[k]; m2[j]=c.powers[t]+a.powers[k]; j++; } j--; printf("\n"); k=0; do{ for(t=k+1;t<=j;t++) if(m2[k]==m2[t]){ m1[k]=m1[k]+m1[t]; for(i=t;i<=j;i++){ m1[i]=m1[i+1]; m2[i]=m2[i+1]; } j--; t--; }
это умножение 2 многочленов. p счетчик слагаемых в многочлене + 2 массива - степеней и индексов. Самое интересное, что сама по себе функция рабочая, это проверено в другой проге, а вот с классом у нее не лады Точнее у меня с ней не лады))
_________________ Семь бед, один Reset. 95, 98 - это количество багов. В пpоцентах... DCN - наше все
Junior
Статус: Не в сети Регистрация: 01.01.2010 Откуда: Донецк
Помогите пожалуйста решить простую задачку. С С++ у меня как то туго, поэтому прошу помощи.началась практика...(borland) Вообщем задание:
Дан массив фамилий студентов 1-го курса и массив их результатов в беге на 100 метров. Составьте команду из четырех лучших бегунов для участия в эстафете.
У меня вообщем кое как получилось, чтоб выводились 3 студента, но все равно как то криво.
Junior
Статус: Не в сети Регистрация: 01.01.2010 Откуда: Донецк
это я понимаю, что за меня делать никто не будет. Вот щас сделал сортировку методом пузырька -результатов. А как сделать так чтоб этим результатам соответсвовал студент?
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
EliteX писал(а):
это я понимаю, что за меня делать никто не будет. Вот щас сделал сортировку методом пузырька -результатов. А как сделать так чтоб этим результатам соответсвовал студент?
Ну никто не заставляет сделать сортировку quicksort`oм ! Делай что хочешь - покажи свои наработки - укажем правильный путь и объясним ошибки. А так - нет о чём говорить...
Member
Статус: Не в сети Регистрация: 10.12.2007 Откуда: Санкт-Петербург
доброго времени суток) Простите, но это опять я умножение многочленов - все никак не отладить. Вот, например (x+1)*(x+1) верно, а (x+1)*(x^2-x+1) уже нет
Код:
polynom & polynom :: operator * (polynom a) { int j=0; int i; int k=0; int t=0; int m1c[SIZE], m1p[SIZE], m2c[SIZE], m2p[SIZE], m1[SIZE], m2[SIZE]; int l1=p; int l2=a.p; t=k=j=0; for(t=0;t<l1;t++) for(k=0;k<l2;k++){ m1[j]=a.coeff[t]*coeff[k]; m2[j]=a.powers[t]+powers[k]; j++; } j--; k=0; do{ for(t=k+1;t<=j;t++) if(m2[k]==m2[t]){ m1[k]=m1[k]+m1[t]; for(i=t;i<=j;i++){ m1[i]=m1[i+1]; m2[i]=m2[i+1]; } j--; t--; }
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
EliteX писал(а):
Вот код...
Для начала уберём "явные косяки": 1.)
Код:
cout<<"Количество студентов\n"; cin>>k;
Если k>=10, то переполнение массивов и полный бред в проге... То же касается если фамилия больше 39 символов. Массив не "обнулён", т.е. нет завершающего \0 символа.
2.) Вот тут:
Код:
tmp=0; for (j=0;j<4;j++) {max=0; for(i=tmp;i<k;i++) if (rezult[i]>max) { max=rezult[i]; tmp=i; } cout<<max<<" "<<student[tmp]<<"\n"; tmp+=1; }
Всё-таки лучше "банальный пузырь" и выводим лучшую 4-ку, а так... бред, особенно во внутреннем цикле. без сортировки можно было бы сделать, но либо изменением i или используя while. Инициализация счётчика в for происходит перед организацией цикла, и никакие изменения tmp во внутреннем цикле тут не помогут.
З.Ы. К примеру. если мы ввели "самого быстрого" последним, то после первого прохода внешнего цикла по j получаем tmp==k, а при следующем проходе цикла по j внутренний цикл ни разу не выплняется, т.к. i == k и никак не меньше k...
Последний раз редактировалось oxy 20.03.2010 1:09, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
EliteX писал(а):
...А по поводу пузыря- им то я сортирую только массив с результатами, а фамилии остаются то на своих прежних местах. Поэтму и интересуюсь как исправить...
Чудесно В результате "дистрофик Петров" может получить КМСа.
struct в зубы и memmove или memcpy в помощь.
З.З. Менять не только результаты надо, но и фамилии... Пока ты отвечал, я подправил свой ответ...
Junior
Статус: Не в сети Регистрация: 01.01.2010 Откуда: Донецк
Тогда огромное спасибо. Эмм... как Вам объяснить, преподы на уроках практически ничего по теме не рассказывали, изредка выдавали лабораторки и говорили делайте. Так что думаю слово Преподавали звучит громко) А вообщем научить хотят С++
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
EliteX писал(а):
Тогда огромное спасибо. И два массива даны по условию
Не понял "тупое задание". Один массив классов/структур - я понимаю (Это без использования STL), но принудительное использование двух массивов - А где смысл/логика?
З.Ы. В случае "тупого задания с двумя массивами" -memcpy и их модификации в зубы и в пальцы.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения