wyrzucanie na ekran znaku, nie liczby
Ostatnio zmodyfikowano 2017-08-21 19:15
maly7 |
» 2017-08-21 13:54:28 W twoich warunkach masz operator przypisania a nie porównania. Więc jeśli X nie jest równe 0 to przypisze do niej A i reszty warunków już nie sprawdzi bo jest else if. Wracając do twojego pierwotnego kodu, po prostu musisz gdzieś zapisać jaka to liczba jest najbliżej średniej, można wykorzystać do tego dodatkową zmienna. Możesz zrobić to np. w taki sposób: X = A; float * najblizsza = & a; if( B < X ) { X = B; najblizsza = & b; } if( C < X ) { X = B; najblizsza = & c; } if( D < X ) { X = B; najblizsza = & d; } if( E < X ) { X = B; najblizsza = & e; } cout << "najblizsza roznica sredniej i liczby: " <<* najblizsza << endl; |
|
Kinexity |
» 2017-08-21 14:29:44 #include "cmath" #include "iostream" using namespace std;
int main() { const unsigned int num_of_elem = 5; unsigned int closest = 0; float numbers[ num_of_elements ], average = float(); for( unsigned int index = 0; index < num_of_elem; index++ ) { cin >> numbers[ index ]; average += numbers[ index ]; } average /= num_of_elem; cout << "Srednia wynosi " << average << endl; for( unsigned int index = 1; index < num_of_elem; index++ ) { if( fabs( average - numbers[ index ] ) < fabs( average - numbers[ closest ] ) ) { closest = index; } } cout << "Najblizsza do sredniej jest liczba " << numbers[ closest ] << endl; return 0; }
|
|
pekfos |
» 2017-08-21 15:14:42 Nie jest możliwe wyświetlenie bezpośrednio nazwy zmiennej - w sensie nie masz na przykład takiej funkcji - nameof(X) - która by zwracała nazwę zmiennej jako ciąg znaków |
Jest możliwe. #include <iostream> #define nameof(X) #X int main() { int a; std::cout << nameof( a ) << std::endl; } |
|
konishyapl Temat założony przez niniejszego użytkownika |
» 2017-08-21 16:49:11 Dziękuję bardzo za każdą pomoc, działa idealnie :) |
|
konishyapl Temat założony przez niniejszego użytkownika |
» 2017-08-21 17:26:40 aczkolwiek, mam jeszcze jedno pytanie, program nie działa idealnie dla każdego przypadku, jeśli mam dwie liczby których różnica średniej jest taka sama, to wtedy, w wyniku pokazuje tylko jedną liczbę, jak zmienić to tak, żeby pokazywało dwie liczby ?
i jak wrzucać na forum kod, w takiej formie jak wyświetlany jest IDE ? xD dużo ładniej to wygląda
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath>
using namespace std;
float srednia, liczba; float a, b, c, d, e, x; float A, B, C, D, E, X;
int main() { cout << "Podaj 5 liczb" << endl; cin>>a>>b>>c>>d>>e;
srednia=(a+b+c+d+e)/5;
cout<<"srednia wynosi: "<<srednia<< endl;
A=fabs(srednia-a); B=fabs(srednia-b); C=fabs(srednia-c); D=fabs(srednia-d); E=fabs(srednia-e);
X = A;
float *najblizsza = & a; if( B <= X ) { X = B; najblizsza = & b; } if( C <= X ) { X = B; najblizsza = & c; } if( D <= X ) { X = B; najblizsza = & d; } if( E <= X ) { X = B; najblizsza = & e; } cout << "najblizsza sredniej jest liczba: " <<* najblizsza << endl;
return 0; }
|
|
Kinexity |
» 2017-08-21 17:54:00 Kod wrzucaj w [cpp]kod[/cpp] . Masz błąd w 3 ostatnich if'ach. |
|
mateczek |
» 2017-08-21 19:15:10 zobacz takie rozwiązanie. #include<iostream> #include<cmath> using namespace std; int main() { const int size = 5; double tab[ size ]; for( int i = 0; i < size; i++ ) { cout << "podaj liczbe " << char( 'A' + i ) << endl; cin >> tab[ i ]; } double suma = 0; for( int i = 0; i < size; i++ ) { suma += tab[ i ]; } double srednia = suma / size; int szukana = tab[ 0 ]; int index = 0; double minDiff = fabs( srednia - tab[ 0 ] ); for( int i = 1; i < size; i++ ) { if( minDiff > fabs( srednia - tab[ i ] ) ) { szukana = tab[ i ]; minDiff = fabs( srednia - tab[ i ] ); index = i; } } cout << "szukana liczba to : " << szukana << endl; cout << "najmniejsza roznica to " << minDiff << endl; cout << "Ta liczba to: " << char( 'A' + index ) << endl; } |
|
1 « 2 » |