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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2011, 00:29   #1
Лоботряс
Новичок
Джуниор
 
Регистрация: 13.01.2011
Сообщений: 2
По умолчанию С++ задача на массив натуральных дробей. Проблемы с вводом.

Задача такая:
Реализовать набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида p/q (p – целое, q – натуральное):
а) сложение;
б) вычитание;
в) умножение;
г) деление;
д) сокращение дроби;
е) возведение дроби в степень n (n – натуральное);
ж) функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
1) Дан, массив A – массив обыкновенных дробей. Найти сумму всех дробей и вычислить их среднее арифметическое, результаты представить в виде несократимых дробей.
2) Дан массив A – массив обыкновенных дробей. Отсортировать его в порядке возрастания.
Нужно реализовать ввод с клавиатуры, чтение из файла и случайную генерацию, а так же сохранение результатов в файл.
Я уже сделал все функции из задачи, случайную генерацию и сохранение результатов (только пока еще не прогонял). Осталось сделать ввод с клавиатуры и чтение из файла, а как их организовать - не представляю. Помогите,пожалуйста, кто чем может.
Лоботряс вне форума Ответить с цитированием
Старый 13.01.2011, 00:30   #2
Лоботряс
Новичок
Джуниор
 
Регистрация: 13.01.2011
Сообщений: 2
По умолчанию

И еще посмотрите пожалуйста код. Написано в борланде под дос. Извините, но комменты писать - терпеть не могу.

//DZ3
#include <iostream.h>;
#include <conio.h>;
#include <math.h>;
#include <stdio.h>;
#include <stdlib.h>;
#include <time.h>;
#include <fstream.h>;
extern int mas[102][2]={0};
int meny()
{
int i=0,ch;
cout<<"‚лЎҐаЁвҐ вЁЇ ®ЇҐа жЁЁ:\n1 - Ї®«гзҐ*ЁҐ бг¬¬л ¤а®ЎҐ© Ё б।*ҐЈ® аЁд¬ҐвЁзҐбЄ®Ј®\n2 - б®авЁа®ўЄ ¬ ббЁў \n";
do{
ch=getche();
if(ch==49)
i=10;
if(ch==50)
i=20;
}while(i!=10&&i!=20);
cout<<"\n‚лЎҐаЁвҐ д®а¬ в ўў®¤ ¬ ваЁжл:\n1 - б«гз ©* п ЈҐ*Ґа жЁп\n2 - звҐ*ЁҐ б Є« ўЁ вгал\n3 - звҐ*ЁҐ Ё§ д ©« \n";
do{
ch=getche();
if(ch==49)
i+=1;
if(ch==50)
i+=2;
if(ch==51)
i+=3;
}while(ch!=49 && ch!=50 && ch!=51);
return i;
}
int readcl()
{
int n;
cin>>n;
return n;
}
int readfl()
{
int n=1;
return n;
}
int generate()
{
int i,p,q,n;
do{
cout<<"\n‚ўҐ¤ЁвҐ а §¬Ґа ¬ ббЁў (*Ґ Ў®«ҐҐ 100 н«Ґ¬Ґ*в®ў):";
cin>>n;
}while(n<1||n>100);
do{
cout<<"‚ўҐ¤ЁвҐ ЇаҐ¤Ґ«л §* зҐ*Ё© зЁб«ЁвҐ«п Ё §* ¬Ґ* ⥫п (жҐ«лҐ зЁб« ) зҐаҐ§ Їа®ЎҐ«:\n";
cin>>p>>q;
}while(p==q||q<=0);
for(i=0;i<n;i++)
{
mas[i][1]=rand()%q;
if(p>0)
mas[i][0]=rand()%p;
else
mas[i][0]=-(rand()%(-p));
}
return n;
}
void saverez(int n,int m)
{
int ch,i;
cout<<"\n†Ґ« ҐвҐ б®еа *Ёвм १г«мв в ў д ©«? y/n\n";
do{
ch=getche();
cout<<"\n";
}while(ch!=121 && ch!=110);
if (ch==121)
{
FILE *fstream;
char fname[20]="save1.txt";
cout<<"‚ўҐ¤ЁвҐ Ї®«*л© ¤аҐб (ўЄ«оз п а биЁаҐ*ЁҐ):";
gets(fname);
fstream=fopen(fname,"at");
if (!ferror(fstream))
{
if(m<15)
{
fputs("Ishodny massiv:\n",fstream);
for(i=0;i<n;i++)
fprintf(fstream," %3i/%3i ",mas[i][0],mas[i][1]);
fprintf(fstream,"\nSumma elementov: %3i/%3i\n",mas[n][0],mas[n][1]);
fprintf(fstream,"Srednee arifmeticheskoe: %3i/%3i",mas[n+1][0],mas[n+1][1]);
}
else
{
fputs("Sortirovanny massiv:\n",fstream);
for(i=0;i<n;i++)
fprintf(fstream," %3i/%3i ",mas[i][0],mas[i][1]);
}
fclose(fstream);
}
}
}
void sokr(int &p,int &q)
{
int i,j=1,n;
while(j!=0){
i=2;
j=0;
n=p/2;
do{
if(p%i==0&&q%i==0)
{
p=p/i;
q=q/i;
j=1;
}
else
i++;
}while(j==0&&i<=n);
}
}
void slojenie(int &p1,int &q1,int p2,int q2)
{
p1*=q2;
p2*=q1;
q1*=q2;
p1+=p2;
sokr(p1,q1);
}
void vichitanie(int &p1,int &q1,int p2,int q2)
{
p2=-p2;
slojenie(p1,q1,p2,q2);
}
void umnojenie(int &p1,int &q1,int p2,int q2)
{
p1*=p2;
q1*=q2;
sokr(p1,q1);
}
void delenie(int &p1,int &q1,int p2,int q2)
{
p1*=q2;
q1*=p2;
sokr(p1,q1);
}
void stepen(int &p1,int &q1,float n)
{
p1=pow(p1,n);
q1=pow(q1,n);
sokr(p1,q1);
}
int strogoesravnenie(int p1,int q1,int p2,int q2)
{
p1*=q2;
p2*=q1;
if(p1<p2)
return -1;
if(p1==p2)
return 0;
if(p1>p2)
return 1;
}
int nestrogoesravnenie(int p1,int q1,int p2,int q2)
{
p1*=q2;
p2*=q1;
if(p1<=p2)
return 0;
if(p1>=p2)
return 1;
}
void sredarifm(int n)
{
int i;
mas[n][0]=0;
mas[n][1]=1;
for(i=0;i<n;i++)
{
slojenie(mas[n][0],mas[n][1],mas[i][0],mas[i][1]);
}
mas[n+1][0]=mas[n][0];
mas[n+1][1]=mas[n][1];
delenie(mas[n+1][0],mas[n+1][1],n,1);
}
void sortirovka(int n)
{
int p,q,i,j,k;
for(i=0;i<(n/2+1);i++)
{
for(j=i;j<(n-i-1);j++)
if(nestrogoesravnenie(mas[j][0],mas[j][1],mas[j+1][0],mas[j+1][1]))
{
p=mas[j+1][0];
q=mas[j+1][1];
mas[j+1][0]=mas[j][0];
mas[j+1][1]=mas[j][1];
mas[j][0]=p;
mas[j][1]=q;
}
for(k=(n-i-1);k>i;k--)
if(nestrogoesravnenie(mas[k-1][0],mas[k-1][1],mas[k][0],mas[k][1]))
{
p=mas[k-1][0];
q=mas[k-1][1];
mas[k-1][0]=mas[k][0];
mas[k-1][1]=mas[k][1];
mas[k][0]=p;
mas[k][1]=q;
}
}
}
void main()
{
int n,m;
cout<<"ЋЇҐа жЁЁ б ¬ ббЁў ¬Ё * вга «м*ле ¤а®ЎҐ©\n";
m=meny();
switch(m)
{
case 11: n=generate(); sredarifm(n); break;
case 12: n=readcl(); sredarifm(n); break;
case 13: n=readfl(); sredarifm(n); break;
case 21: n=generate(); sortirovka(n); break;
case 22: n=readcl(); sortirovka(n); break;
case 23: n=readfl(); sortirovka(n); break;
}
saverez(n,m);
}
Лоботряс вне форума Ответить с цитированием
Старый 13.01.2011, 01:32   #3
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

а через структуру перепишите - намного проще и удобнее станет ) и оформьте пожалуйста код - в расширенном режиме такая #
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки;( Проблемы с вводом. Aerial Общие вопросы C/C++ 0 20.04.2010 21:00
Класс Дробей finargot Общие вопросы .NET 6 18.03.2010 23:03
Проблема с вводом в массив prod87 Общие вопросы Delphi 1 24.11.2009 22:33
Сумма дробей Xcopy Общие вопросы Delphi 1 05.09.2009 19:12
Задача с вводом матрицы на С Aero Помощь студентам 1 28.10.2007 14:50