Sprawdzenie czy ostatnia liczba ciągu to zero

0

Mam w programie jakas liczbe, wykonuje obliczenia i wychodzi mi suma, jak sprawdzic czy ostatnia liczba tej sumy = 0 ?

0

ostatnia cyfra?

if( suma % 10 == 0 )
0

Podzielić modulo przez 10 i sprawdzić czy wynik jest równy 0.

0
if(!(suma % 10)) {
        printf("Ostatnia cyfra to zero.\n");
} else {
        printf("Ostatnia cyfra nie jest zerem\n");
}

Co bazuje na porównaniu wartości int do typu bool, gdzie można mu zarzucić niepoprawność...

Poprawione tak aby nie dochodziło do niejednoznaczności typowania :-)

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

int main(void) {
    int a = 18;
    int b = 13;
    int suma = a + b;
    if(0 == (suma % 10)) {
        printf("Ostatnia cyfra to zero.\n");
    } else {
        printf("Ostatnia cyfra nie jest zerem\n");
    }
    return EXIT_SUCCESS;
}
0

Dobra, mam wiecej problemow, podaje na wejscie jakis pesel, i teraz:
Pierwszą cyfrę mnożymy przez 1,
drugą cyfrę mnożymy przez 3,
trzecią cyfrę mnożymy przez 7,
czwarta cyfrę mnożymy przez 9,
piątą cyfrę mnożymy przez 1,
szóstą cyfrę mnożymy przez 3,
siódmą cyfrę mnożymy przez 7,
ósmą cyfrę mnożymy przez 9,
dziewiątą cyfrę mnożymy przez 1,
dziesiątą cyfrę mnożymy przez 3,
jedenastą cyfrę mnożymy przez 1.

Nie wiem jak to zrobic

0

Zacznij od tego, że wszystkie mnożenia "przez 1" możesz z miejsca uznać za wykonane. Wow, so easy!
Jakbyś myślał i zapisywał te liczby do tablicy to byś nie miał problemów...

Weźmy prosty przykład:
12345
aby dowiedzieć się, że druga cyfra (druga od lewej, czwarta od prawej... prawa to tam gdzie kciuk jest po lewej stronie, albo tam gdzie zegarek na monitorze masz, powinieneś dać radę. No chyba że zegarek wyłączony to jesteś w (!)...).
12345 / 1000 = 12,345
A taki ch.. bo zapisałęś to do inta i masz 12.
Teraz robisz %10 iiii masz tą cyfrę której szukałeś.

No i tak aż wszystkie problemy rozwiążesz, powodzenia!

0

wcale nie rozumiem co ty napisales...

0

Qwa każdy ma problem z tymi stronami...
Lewa----------------------------------------Prawa
Tak będzie prościej.

Zakładając że liczba ma 5 znaków:
12345
i chcesz wiedzieć jaki jest 2 znak (od lewej)
bierzesz tą liczbę i dzielisz przez 1000, wynik zapisujesz do inta tak więc:
12345 / 1000 = 12
Wynik tego działania (czyli 12) dzielisz przez modulo 10
12 % 10 = 2
2 to jest 2 liczba.
Jak dalej nie rozumiesz to zajmij się czymś innym...

0

Ale ja juz wiem jak to zrobic, wystarczy sprawdzic czy reszta z dzielenia liczby przez 10 wynosi 0 tak jak napisali wczesniej, prawda ? Poza tym co ty sie tak przyczepiles do drugiej liczby ? ja nie chce wiedziec jaka jest druga od lewej tylko jaka jest jest pierwsza od prawej czyli ostatnia od lewej ... powiedz mi jak to zrobic lepiej, i jaka jest analogia ze jesli chce druga od lewej to musze dzielic przez 1000 ? dlaczego jak chce 2 od lewej to musze dzielic przez 1000 ? jakbym chcial 3 od lewej to musze dzielic przez 100 czy przez 10000 ?

0

Ale ja juz wiem jak to zrobic, wystarczy sprawdzic czy reszta z dzielenia liczby przez 10 wynosi 0 tak jak napisali wczesniej, prawda ?
Nie, tak tylko ostatnią cyfrę sprawdzasz.

Poza tym co ty sie tak przyczepiles do drugiej liczby ?
To był przykład. Przykłady mają to do siebie, że jak są dobre (a ten taki jest) to po przeczytaniu go ze zrozumieniem jesteś w stanie rozwiązać problem.

ja nie chce wiedziec jaka jest druga od lewej tylko jaka jest jest pierwsza od prawej czyli ostatnia od lewej ...
Kilka postów wyżej jest lista w której pytasz o każdą liczbę po kolei...

powiedz mi jak to zrobic lepiej, i jaka jest analogia ze jesli chce druga od lewej to musze dzielic przez 1000 ? dlaczego jak chce 2 od lewej to musze dzielic przez 1000 ? jakbym chcial 3 od lewej to musze dzielic przez 100 czy przez 10000 ?

Zadajesz dużo pytań...
Zrobię Ci tabelkę bo inaczej to się tego wytłumaczyć Ci nie da.

Numer cyfry* | co musisz zrobić
1 | n%10
2 | n/10, n%10
3 | n/100, n%10
4 | n/1000, n%10
... | ...
11 | n/10000000000, n%10

  • licząc od prawej strony

Czyli implementacja może wyglądać tak:

long a = 123456789012;
long b = a / 10;
b = b % 10; // można zapisać b %= 10 ale jak nie wiesz czemu to sobie nie mieszaj w głowie

b to druga cyfra.

Drugi przykład, załóżmy że chcesz otrzymać cyfrę numer 11:

long a = 123456789012;
long b = a / 10000000000;
b = b % 10;

b to 11 cyfra.

Rozumiesz?

0

1 n%10
2 n/10, n%10
3 n/100, n%10
4 n/1000, n%10
... ...
11 n/10000000000, n%10

wedlug tej tabelki "n%10" sprawdza pierwsza liczbe a nie ostatnia

0

tak z tym że na początek dzielisz tą liczbę przez kolejne potęgi liczby 10.
Polega to na tym, że "usuwasz" wszystkie liczby aby ta szukana liczba była pierwsza od prawej i wtedy robisz %10. Pewnie nie ogarniasz więc przykład:

long a = 123456789012;
long b = a;
b = b / 10; // teraz b == 12345678901, pierwsza cyfra od prawej to teraz 1.
b = b % 10 // b == 1

long a = 123456789012;
long b = a;
b = b / 10000000000; // teraz b == 12
b = b % 10; // b == 2
0

rozumiem. dziekuje :)

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