|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
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 |
:D
Форумчанин
Регистрация: 26.09.2010
Сообщений: 570
|
а через структуру перепишите - намного проще и удобнее станет ) и оформьте пожалуйста код - в расширенном режиме такая #
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Строки;( Проблемы с вводом. | 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 |