wypisanie liczb parzystych i nieparzystych

Odpowiedz Nowy wątek
2019-11-07 16:03
0

Cześć mam do was pytanko jeszcze do jednego programu-muszę napisać program który wypisuje czy liczba jest parzysta czy nieparzysta-nie mogę użyć if i '?:'
Okazało się jednak że może być też tylko jeden switch i nie wiem jak zastąpić ten działający program z dwoma tak by był tylko jeden switch

#include <stdio.h>

int main() 
{
    int a,b;
    printf("Podaj liczbe:");
    int warunek=scanf("%d",&a);
    b=a%2;
    switch(warunek)
    { case 0:printf("incorrect input\n"); return 1;
      case 1:switch(b)
      {
        case 0:
            printf("%d is even",a);
            return 0;
        case 1:
            printf("%d is odd",a);
            return 0;

      }

    }   
}
edytowany 2x, ostatnio: kq, 2019-11-07 16:26
2019-11-07 16:17
1

Zrób sobie pętlę while.
Tak btw, skąd bierzesz takie głupie zadania?

pewnie od wykładowcy. Tylko oni są w stanie wymyślać takie kretyńskie zadania. - Cyberah 2019-11-07 16:19

Pozostało 580 znaków

2019-11-07 16:28
kq
2

Zadanie iście kretyńskie. Ale w tym wypadku użyłbym tablicy stringów.

#include <stdio.h>

int main()
{
    int a;
    printf("Podaj liczbe:");
    int warunek = scanf("%d", &a);
    char const* wtf[2] = { "Liczba parzysta\n", "Liczba nieparzysta\n" };
    switch (warunek) {
    case 0:
        printf("incorrect input\n");
        return 1;
    case 1:
        printf(wtf[a % 2]);
    }
}
}

edytowany 3x, ostatnio: kq, 2019-11-07 16:34
char const* wtf:-D - lion137 2019-11-07 18:54
East const zawsze! - kq 2019-11-07 18:56

Pozostało 580 znaków

2019-11-07 16:36
2
#include <stdio.h>
#include <string.h>

void isOdd(int num) {
    char text[100] = "Liczba jest ";
    strcat(text, "nieparzysta\n" + ((num + 1) % 2) * 3);
    printf(text);
}

int main(void) {
    isOdd(120);
    isOdd(135);
    isOdd(-1);
    isOdd(0);
    return 0;
}
edytowany 1x, ostatnio: iksde, 2019-11-07 16:36
Cwane. - kq 2019-11-07 16:37

Pozostało 580 znaków

2019-11-07 16:36
0

nie może być pętel
@kq:

tylko musi być wypisany format 'A' is even/odd i nie za bardzo to wychodzi twoim sposobem

Pozostało 580 znaków

2019-11-07 16:38
kq
0

U mnie działa: https://wandbox.org/permlink/GiERRSVhB6UQkM9P


Pozostało 580 znaków

2019-11-07 16:48
0
kq napisał(a):

U mnie działa: https://wandbox.org/permlink/GiERRSVhB6UQkM9P

A wiesz może jak można by zmienić twój program by wyświetlał "%d is even/odd,a" bo to jest również wymagane

Nie mógłbyś napisać wszystkich wymagań na samym początku i tego co można a czego nie? - szweszwe 2019-11-07 17:00

Pozostało 580 znaków

2019-11-07 16:55
kq
0

Tutaj musisz się wykazać własną inwencją. Co takiego należałoby zmienić w moim programie, aby zmienić wyświetlany tekst? 🤔🤔🤔


Pozostało 580 znaków

2019-11-07 17:03
0
kamiloo2k napisał(a):
kq napisał(a):

U mnie działa: https://wandbox.org/permlink/GiERRSVhB6UQkM9P

A wiesz może jak można by zmienić twój program by wyświetlał "%d is even/odd,a" bo to jest również wymagane

@szweszwe właśnie dowiaduję się ciągle o wykluczeniach których nie ma wypisanych

Pozostało 580 znaków

2019-11-07 17:15
1
#include <stdio.h>

void bad(int a) { printf("incorrect input\n"); }
void ok(int a) {  printf("Liczba %d jest %s",a,"nieparzysta\n"+3*((a^1)&1)); }

int main()
{
    typedef void fun(int a);
    static fun *funtb[]={&bad,&ok};
    int a;
    printf("Podaj liczbe: ");
    funtb[scanf("%d",&a)](a);
    return 0;
}

Takiej wersji jeszcze nie było, chyba.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Pokaż pozostałe 6 komentarzy
Nie rozumiem... Mam na myśli dowolną wartość która po operacji na bitach (np. ^1) da w wyniku -0. Zakładając że pracujemy w U1 na 4 bitach (-7....-1, -0, 0, 1, ...7): -6 --> 1001(bin), 1001(bin) ^ 1 ---> 1000(bin) czyli -0. Przy okazji widać, że w U1 testowanie najmłodszego bitu dla liczb ujemnych dałoby zły wynik. - Bartłomiej Golenko 2019-11-08 13:33
I zapewne znasz jakąś maszynę z U1 dla której istnieje kompilator C? - _13th_Dragon 2019-11-08 13:36
Napisałem wczesniej - "chyba że jakimś cudem trafisz...". Mało prawdopodobne, ale jednak możliwe - tego typu maszyny są nadal produkowane i sprzedawane: https://en.wikipedia.org/wiki/UNIVAC_1100/2200_series - Bartłomiej Golenko 2019-11-08 13:47
ok, przekonałeś najnowsze są z roku 2015, hipotetycznie mogą się doczekać kompilatora C - _13th_Dragon 2019-11-08 13:57
Żeby było śmiesznie - te najnowsze są na Xeonach i jeśli dobrze zrozumiałem - emulują U1. A kompilator C jak najbardziej mają: https://public.support.unisys[...]s/cp17.0/pdf/78505252-020.pdf - Bartłomiej Golenko 2019-11-08 14:12

Pozostało 580 znaków

2019-11-07 20:05
0

muszę napisać program który wypisuje czy liczba jest parzysta czy nieparzysta-nie mogę użyć if i '?:'

Skoro liczba jest jedna, to po co Ci trzy zmienne (a,b,warunek)?

int number, 
     condition;
scanf("%d", &number);
condition = number&1 == 0; // jak sklerozy nie mam, to &1 = %2
switch(condition) {
     case 1:
     printf("Number is even");
    case 0:
    printf("Number is odd");
}

A tak serio - zamierzasz co chwila pojawiać się z takimi "genialnymi" zadaniami? Ja bym sobie dał spokój.

Jak to na studia to niech przez ten idiotyzm przebrnie. - kq 2019-11-07 20:23
czemu nie po ludzku switch(number&1) ? - _13th_Dragon 2019-11-07 20:46
@_13th_Dragon: Racja, ładniej tak wygląda. Ale może ten "int warunek" też ma tam być. Nie wnikam. @kq: Jak to na studia, to jeden semestr może się pomęczyć, gorzej jak to jakiś dobrowolny tutorial/kurs. Bardziej mi chodziło o sam fakt latania z każdą taką pierdołą po pomoc. Zadania typu "wczytaj jedną/dwie liczbę/y całkowitą/e i coś o niej/nich wypisz" do mocno skomplikowanych raczej nie należą. - Serechiel 2019-11-07 23:10
Zaczynają być trudne dla newba jak są takie dziwne ograniczenia o jakich tu mowa. - kq 2019-11-07 23:11
Oj tak. Człowiek dałby napisać coś w stylu printf(number&1 ? "odd" : "even");,zamiast cudować. - Serechiel 2019-11-07 23:26

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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