Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

wyrzucanie na ekran znaku, nie liczby

Ostatnio zmodyfikowano 2017-08-21 19:15
Autor Wiadomość
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:
C/C++
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;
P-164161
Kinexity
» 2017-08-21 14:29:44
C/C++
#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;
}
P-164163
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.
C/C++
#include <iostream>
#define nameof(X) #X
int main()
{
    int a;
    std::cout << nameof( a ) << std::endl;
}
P-164165
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 :)
P-164174
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;
}
P-164175
Kinexity
» 2017-08-21 17:54:00
Kod wrzucaj w
[cpp]kod[/cpp]
.
Masz błąd w 3 ostatnich if'ach.
P-164176
mateczek
» 2017-08-21 19:15:10
zobacz takie rozwiązanie.
C/C++
#include<iostream>
#include<cmath>
using namespace std;
int main() {
    const int size = 5;
    double tab[ size ];
    // wczytanie tablicy
    for( int i = 0; i < size; i++ ) {
        cout << "podaj liczbe " << char( 'A' + i ) << endl;
        cin >> tab[ i ];
    }
    //liczenie sredniej;
    double suma = 0;
    for( int i = 0; i < size; i++ ) {
        suma += tab[ i ];
    }
    double srednia = suma / size;
    // przeszukanie tablicy w celu znalezienia najlepiej pasującej liczby
    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;
}
P-164180
1 « 2 »
Poprzednia strona Strona 2 z 2