Zadanie " rozbicie liczby na składowe"

Odpowiedz Nowy wątek
2020-03-26 19:22

Rejestracja: 1 tydzień temu

Ostatnio: 6 dni temu

0

Cześć,
Pisze z pewnym problemem. Jestem początkującym w programowaniu, uczę się w języku C. Dostałem od prowadzącego w którym program musi rozbić podana liczbę na składowe, wyznaczy jej sumę oraz posortuje je od najmniejszej do największej i wyznaczy medianę. Np liczba 1246.256 składa się z 1, 2, 4, 5, 6, suma tych cyfr to 18 a mediana to 4. Czy znalazłby się ktoś kto mogłby mi pomóc oraz dobrze wytłumaczyć pewne aspekty, ponieważ nie wiem jak zabrać się to tego zadania ? :)

Pozostało 580 znaków

2020-03-26 19:49

Rejestracja: 4 lata temu

Ostatnio: 38 minut temu

1

Ale w czym konkretnie Ci pomóc? Z którym elementem zadania sobie nie radzisz?

Pozostało 580 znaków

2020-03-26 20:06

Rejestracja: 1 tydzień temu

Ostatnio: 6 dni temu

0
Althorion napisał(a):

Ale w czym konkretnie Ci pomóc? Z którym elementem zadania sobie nie radzisz?

W jaki sposób mam wprowadzić moją liczbę tak żebym mógł swobodnie rozbić ją na dane cyfry ?
Czy jeśli będzie już rozbita mam użyć instrukcji if żeby dane cyfry nie powtarzały się ?

Pozostało 580 znaków

2020-03-26 20:22

Rejestracja: 4 lata temu

Ostatnio: 38 minut temu

1

Możesz przyjąć liczbę od użytkownika jako string, wówczas będziesz ją miał od razu rozbitą na cyfry, jedynie będziesz musiał te cyfry skonwertować do intów. Jeśli jednak z jakiegoś powodu dostajesz od razu liczbę zmiennoprzecinkową, to rozetnij ją na część całkowitą i ułamkową modf, po czym ostatnia cyfra to reszta z dzielenia przez 10, potem podziel przez dziesięć, żeby ją „uciąć” i powtarzaj do skutku.

Nie pisałeś nic wcześniej o wyszukiwaniu powtarzających się cyfr — do czego Ci to potrzebne?

Pozostało 580 znaków

2020-03-26 20:28

Rejestracja: 1 tydzień temu

Ostatnio: 6 dni temu

0

Nie pisałeś nic wcześniej o wyszukiwaniu powtarzających się cyfr — do czego Ci to potrzebne

Chodzi mi o to że jeśli będzie liczba 12,212121 to odpowiedź ma być że ta liczba składa się z cyfr 1 i 2 :)

Pozostało 580 znaków

2020-03-26 20:31

Rejestracja: 3 miesiące temu

Ostatnio: 2 minuty temu

0

https://www.google.com/search[...]c%2B%2B+site:4programmers.net

Czy jeśli będzie już rozbita mam użyć instrukcji if żeby dane cyfry nie powtarzały się ?

Rozbijają liczbę na cyfry możesz je umieszczać w tablicy i utworzyć pętlę w której sprawdzasz, czy została już któraś dodana.

Pozostało 580 znaków

2020-03-26 20:44

Rejestracja: 4 lata temu

Ostatnio: 38 minut temu

1

Mhm. To w C bym zrobił sobie dziesięcioelementową tablicę booli (boole są dostępne od C99 w #include <stdbool.h>), gdzie element 0 oznacza, czy wystąpiła cyfra 0, element 1, czy wystąpiła cyfra 1 itd.

Pozostało 580 znaków

2020-03-27 09:25

Rejestracja: 1 tydzień temu

Ostatnio: 6 dni temu

0
Althorion napisał(a):

Mhm. To w C bym zrobił sobie dziesięcioelementową tablicę booli (boole są dostępne od C99 w #include <stdbool.h>), gdzie element 0 oznacza, czy wystąpiła cyfra 0, element 1, czy wystąpiła cyfra 1 itd.
Mogłbyś mi jaśniej wytlumaczyć o co chodzi, nie za bardzo wiem jak miałaby wyglądać składnia takiej tablicy ?
Prowadzący na zajęciach wspominał że najlepiej " wprowadzoną liczbę umieścić w tablicy", lecz nie do końca rozumiem jak to ma wyglądać :/
Chodzi o cos takiego ?


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

int main(int argc, char** argv) {
    char liczba [30];```

    printf ("Podaj liczbe: ");
    scanf ("%f", &liczba);

    return (EXIT_SUCCESS);  ```
edytowany 5x, ostatnio: GoldenKac98, 2020-03-27 09:30
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.993531) - Tasmanian Devil 2020-03-27 09:26
Skąd masz ten chory fragment kodu? - AnyKtokolwiek 2020-03-27 09:46
haha, niestety jestem bardzo początkujacy :) - GoldenKac98 2020-03-27 09:58

Pozostało 580 znaków

2020-03-27 09:43

Rejestracja: 1 tydzień temu

Ostatnio: 6 dni temu

0

czytałem włąsnie coś o "sortowaniu bąbelkowym" ? czy mogłbym zrobić tak żeby posortować moją tablice właśnie w ten sposób i poźniej wyznaczyć z niej najmniejszą najwieksza wartość mediane oraz sume elementów ? czy to zły pomysł ?

Pozostało 580 znaków

2020-03-27 10:01

Rejestracja: 1 rok temu

Ostatnio: 3 minuty temu

Lokalizacja: Silesia

1

Cóż za pokopany język programowania. Nie mogę uwierzyć że kiedyś go lubiłem. Na wszystko trzeba uważać, bo wszystko chce cię zabić. Prawie jak w Javascripcie

#include <stdio.h>

int main()
{
    int digits[10] = {0,0,0,0,0,0,0,0,0,0};
    char number[100];
    int i;
    int l;
    char c;

    gets(number);
    l = strlen(number);

    for (i = 0; i < l; ++i) {
        c = number[i];
        if ( '0' <= c && c <= '9' ) {
            digits[c - '0'] |= 1;
        }
    }

    for(i = 0; i < 10; ++i) {
        if (digits[i]) {
            putchar(i + '0');
        }
    }

    return 0;
}

Nie daję żadnej gwarancji że to dobry kod.
Nie jest to gotowiec bo ja nie umiem w C.
Napewno brakuje jeszcze sprawdzenia czy to co wczytaliśmy w ogóle jest liczbą


zamiast '0' <= c && c <= '9' można użyć isdigit(c) z ctype.h - jvoytech 2020-03-27 12:49
Ale getsa proszę nie używać. - enedil 2020-03-28 13:38
@enedil: Pisanie w C to jak zabawa ze skorpionem, prawda? - KamilAdam 2020-03-28 13:40
Jest fajna dopuki nie dziabnie - enedil 2020-03-28 13:42

Pozostało 580 znaków

2020-03-27 11:15

Rejestracja: 1 tydzień temu

Ostatnio: 6 dni temu

0

Dziekuję, nie zależy mi na gotowym kodzie, pokombinuję z tym kodem co mi wysłałeś, zależy mi na tym żeby się czegos dowiedzieć oraz na wskazówkach jak zrobić to zadanie :)

Pozostało 580 znaków

Odpowiedz

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