C Program sprawdzający czy z ciągu trzech liczb da się utworzyć ciąg arytmetyczny

0

Witajcie !
Na programowaniu w czasie roku miałem na kolokwium napisać program, który sprawdza, czy z danych trzech liczb rzeczywistych da się utworzyć ciąg arytmetyczny.
Oto co mi wyszło :

#include <stdlib.h>
#include <stdio.h>

int main(){
	float a,b,c, r1, r2;
	printf("podaj pierwsza liczbe: ");
	scanf("%f", &a);
	printf("podaj druga liczbe: ");
	scanf("%f", &b);
	printf("podaj trzecia liczbe: ");
	scanf("%f", &c);
	r1 = b-a;
	r2 = c-b;
	
	if(r1 == r2)
	{
		printf("Da sie utworzyc ciag arytmetyczny.");
	}	
	else 
	{
		printf("Nie da sie utworzyc ciagu arytmetycznego.");
	}
}

Czy jest to dobrze napisany program, czy czegoś mu brakuje ?
Pozdrawiam
marcin1509

0

Poza brakiem return 0; na końcu wygląda ok, choć ja przeniósłbym definicję r1 oraz r2 na miejsce ich przypisania oraz zmienił ich nazwę :P
diff1 i diff2 lub tablica będzie prezentować się lepiej.

2
  1. Wklej kod bezpośrednio do posta.
  2. Masz gwarancję, że liczby będą podane w rosnącej kolejności?
  3. Liczb zmiennoprzecinkowych się nie porównuje za pomocą ==: http://edu.i-lo.tarnow.pl/inf/utils/001_2008/0119.php
0

Właśnie z tą gwarancją o kolejności mam problem. Nie wiem, czy trzeba to sprawdzać.
W końcu, gdy wpiszę 3 2 1 albo 1 2 3 to dostanę informację że to ciąg arytmetyczny. Jeśli wpiszę liczby nie po kolei, dostanę informację że to nie jest ciąg, chyba że r1 i r2 będą takie same wtedy będzie błąd.
Z tego co podałeś wyczytałem, że muszę użyć fabs(WD - WFP) <= EPS , przy
const double EPS = 0.000001

0

Jak nie masz gwarancji to posortuj je. Korzystając tylko z if else można to zrobić np. tak: http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap03/sort.html

0

Będzie działało na liczby rzeczywiste ?

0

Tak. Liczb zmiennoprzecinkowych nie porównujemy za pomocą == ze względu na ich arytmetykę.

0
template<typename T>
bool fuzzyCompare(T a, T b) {
     return fabs(a-b) <= std::numeric_limits<T>::epsilon()*4*(fabs(a)+fabs(b));
}

http://ideone.com/xm6XNk

1 użytkowników online, w tym zalogowanych: 0, gości: 1