Program potęgi dwójki.

0

Moim zadaniem jest:
Zadanie

Napisz program, który:

wczyta ze standardowego wejścia liczbę naturalną n ,
wypisze na standardowe wyjście ostatnią cyfrę liczby 2^n .

A mój kod wygląda tak:

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

int main()
{
    int x,y;

    scanf("%d", &x);

    if (x==0) {y==1};
    else if (x%4==1) {y==2};
    else if (x%4==3) {y==8};
    else if (x%4==0) {y==6};
    else if (x%4==2) {y==4};

    printf("%d", y);






    return 0;

}
 

Dlaczego jak wpisuję 12 to program wypluwa mi 2 zamiast 6?

2

A zauważyłeś że nie przypisujesz wartości do zmiennej y tylko masz tam operator porównania?

0

Ok.. juz poprawiłem. Nie wiem dlaczego w codeblocks mam tak, że zmienię coś, wciskam F9 i się okazuje że program czyta jakiś stary kod. Dopiero jak na nowo stworzyłem projekt i wkleiłem kod z pierwszego posta to się okazało, że w ogóle taki kod się nie chce skompilować. A wcześniej mi się kompilował, tylko że nie aktualny, tylko jakas wcześniejsza wersja tego kodu..

0

Jakie błędy dostajesz przy kompilacji?

0

== Build: Debug in trerte (compiler: GNU GCC Compiler) ===

E:\programy\codeblocks\trerte\main.c||In function 'main':|
E:\programy\codeblocks\trerte\main.c|10|warning: statement with no effect [-Wunused-value]|
E:\programy\codeblocks\trerte\main.c|10|error: expected ';' before '}' token|
E:\programy\codeblocks\trerte\main.c|11|error: 'else' without a previous 'if'|
E:\programy\codeblocks\trerte\main.c|11|warning: statement with no effect [-Wunused-value]|
E:\programy\codeblocks\trerte\main.c|11|error: expected ';' before '}' token|
E:\programy\codeblocks\trerte\main.c|12|error: 'else' without a previous 'if'|
E:\programy\codeblocks\trerte\main.c|12|warning: statement with no effect [-Wunused-value]|
E:\programy\codeblocks\trerte\main.c|12|error: expected ';' before '}' token|
E:\programy\codeblocks\trerte\main.c|13|error: 'else' without a previous 'if'|
E:\programy\codeblocks\trerte\main.c|13|warning: statement with no effect [-Wunused-value]|
E:\programy\codeblocks\trerte\main.c|13|error: expected ';' before '}' token|
E:\programy\codeblocks\trerte\main.c|14|error: 'else' without a previous 'if'|
E:\programy\codeblocks\trerte\main.c|14|warning: statement with no effect [-Wunused-value]|
E:\programy\codeblocks\trerte\main.c|14|error: expected ';' before '}' token|
== Build failed: 9 error(s), 5 warning(s) (0 minute(s), 0 second(s)) ===

0

Z tych błędów to najpewniej brakuje ci gdzieś lewej klamry { lub średnika. No i masz parę nieużywanych zmiennych, może pomyliłeś nazwy?

0

Ale ja wiem ze sa bledy i jak je rozwiazac. Moj problem dotyczyl czegos innego. A mianowicie dlaczego po zmianie kodu kompiluje mi sie stary.

2

@5S25 bo nie rozumiesz co znaczy słowo "kompilacja"? Robisz w edytorze "compile and run". Krok "compile" się wysypuje bo nie umiesz napisać poprawnie 5 linijek kodu (brawo, szacun!) ale krok "run" mimo to się wykonuje bo istnieje w projekcie binarka którą można uruchomić. A że to jest stara binarka? To juz szczegół.
Więc wcale nie kompiluje ci sie stary kod tylko kod się w ogóle nie kompiluje a IDE uruchamia starą binarkę.

1
Shalom napisał(a):

@5S25 bo nie rozumiesz co znaczy słowo "kompilacja"? Robisz w edytorze "compile and run". Krok "compile" się wysypuje bo nie umiesz napisać poprawnie 5 linijek kodu (brawo, szacun!) ale krok "run" mimo to się wykonuje bo istnieje w projekcie binarka którą można uruchomić. A że to jest stara binarka? To juz szczegół.
Więc wcale nie kompiluje ci sie stary kod tylko kod się w ogóle nie kompiluje a IDE uruchamia starą binarkę.

Dziękuję za odpowiedź, bardzo mi się przydała i wiem dzięki temu więcej niż przedtem.

Formę wypowiedzi pozostawiam bez większego komentarza. Uwierz, dało się to napisać z większą pokorą.

0

do usuniecia

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