Прехвърляне към съдържание


Снимка

Задача с оператор while и дроби на C++

Информатика задача while C++ дроби

  • Моля, влезте, за да отговорите
4 отговора по тази тема

#1 LaVendetta

LaVendetta

    Потребител

  • Потребители
  • ПипПипПипПипПипПип
  • 75 мнения

Публикувано: 10 October 2011 - 17:59

Ето задачата ... Решението ми трябва на С++

http://prikachi.com/...55/3914055n.jpg

Публикувано изображение

#2 Kras4ooo

Kras4ooo

    Developer

  • Потребители
  • ПипПипПипПипПипПип
  • 564 мнения
  • Пол:Мъж
  • Живущ в:София
  • Интереси:Компютри-Софтуер

Публикувано: 10 October 2011 - 21:04

Така никой няма да ти помогне поне я понапиши малко.

#3 digitalblade

digitalblade

    Ханчо

  • Потребители
  • ПипПипПипПипПипПип
  • 169 мнения
  • Пол:Мъж

Публикувано: 11 October 2011 - 01:34

Да разбирам ли че задачата ти е зададена с некадърно описание?
Задача:
Да събереш 2 дроби и да изведеш резултата на екрана.
Така изглежда далеч по лесна нали :) И сега ако си намериш една книга за C++ или потърсиш информация в нета ще намериш и това как се използват базовите математически оператори. Остава ти само да измислиш как да решиш задачата като първокласник и да я преведеш на C++ ...
Последния ред в задачата въобще не знам за какво става въпрос. И count<<p<<"/"<<q<<endl; Това тук не знам какво да започна с него.
Hate is the son of Love,
Death is the daughter of Life,
and their child...... is Pain.

There are only 10 types of people on these world, those how understand binary and those how don't!

coders DO IT by hand


#4 Kras4ooo

Kras4ooo

    Developer

  • Потребители
  • ПипПипПипПипПипПип
  • 564 мнения
  • Пол:Мъж
  • Живущ в:София
  • Интереси:Компютри-Софтуер

Публикувано: 11 October 2011 - 13:27

Ето от тук можеш да си помогнеш защото виждам че си тръгнал по този път който е опсиан тук. Събиране на дроби

#5 digitalblade

digitalblade

    Ханчо

  • Потребители
  • ПипПипПипПипПипПип
  • 169 мнения
  • Пол:Мъж

Публикувано: 12 October 2011 - 00:22

Ами за шоуто реших да се пробвам да ти направя задачата. Като за начало трябва да събереш двете дроби, това е лесно с тази формула a/b + c/d = (a*d)/(b*d) + (c*b)/(b*d). Това е първия етап от задачата ти. Втория е да съкратиш резултата. Тука вече става по трудно. Сгорен съм че има хиляди начини да се направи това, но аз реших да ползвам най-лесния по моя преценка Алгоритъма на Евклид
.
http://bg.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D1%8A%D0%BC_%D0%BD%D0%B0_%D0%95%D0%B2%D0%BA%D0%BB%D0%B8%D0%B4
Имплантирането му и за мен е трудност имайки предвид, че с математиката не съм вече толкова добре, но в нета се намират такива базови неща. Ако искаш да убедиш някой, че ти си го писал ще трябва сам да разбереш кое какво и защо е в кода. Задачата трябва да работи и всякакви цели числа в дробите. Не знам как ти искат да зададеш числата, дали от конзолата или вътре в програмата е достатъчно. За останалото ти ще трябва да се погрижиш. И пак напомням, ако не разбираш кое какво е и какво прави, няма да можеш да обясниш как работи програмата ти на никого и можеш да си навлечеш неприятности. Това е просто пример не е нито оптимизиран нито зная точно какво се иска от програмата, но функционира.
#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;
void divide(int numerator, int denominator, int* quotient, int* remainder)
{
	*quotient = numerator / denominator;
	*remainder = denominator % numerator;
}
/* Euclidean algorithm - algoritam za namirane na naj-golemiq ob6t delitel na dve 4isla
*  Neo4akvai nqkoj da ti povqrva 4e ti si go implementiral i az ne ospqh sam!
*/
int euclidean_gcd(int a, int b) {
	if (b > a) { int t = a; a = b; b = t; }
      
    	while (b != 0) {
    	int m = a % b;
    	a = b;
    	b = m;
    	}
	return a;
}
  
int main(int argc, char *argv[])
{
	int a,b,c,d,p,q , quotient, remainder, i;
	a=5;        	c=1;
	b=6;        	d=15;
	printf("Zapo4vame : a=%d b=%d c=%d d=%d \n" , a , b, c, d);
	printf("%d   %d   p\n" , a , c);
	printf("- + - = - \n" );
	printf("%d   %d  q\n" , b , d);
  
	/* a/b + c/d = (a*d)/(b*d) + (c*b)/(b*d)
	* S tazi formula dvete ni drobi imat ednakvi znamenateli i sa gotovi za sybirane
	*/
	a = a*d;
	c = c*b;
	b = b*d;
	d = b;
	printf("Preravnqvane na znamenatelq :\n");
	printf("%d   %d   p\n" , a , c);
	printf("- + - = - \n" );
	printf("%d   %d  q\n" , b , d);
  
	p = a+c;
	q = b;
	printf("Rezoltat :\n");
	printf("%d   \n" ,p);
	printf("- \n" );
	printf("%d \n" , q);
  
	int nod= euclidean_gcd(p, q);
	printf("Namirane na naj-golemiq ob6t delitel na p=%d i q=%d (nod) = %d \n" , p, q, nod);  
      
	p = p/nod;
	q = q/nod;
	printf("Kraen rezoltat:\n%d\n-\n%d", p,q);
  
	printf("\n");
	system("PAUSE");
	return EXIT_SUCCESS;
}

Прикрепен(и) файл(ове)

  • Прикрепен файл  main.txt   1.7К   126 Брой изтегляния

Hate is the son of Love,
Death is the daughter of Life,
and their child...... is Pain.

There are only 10 types of people on these world, those how understand binary and those how don't!

coders DO IT by hand






Други теми с тагове Информатика, задача, while, C++, дроби

0 потребители четат тази тема

0 регистрирани потребители, 0 гости и 0 анонимни потребители