Co wypisze program - switch nie robi odstępu

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

int main()
{
    char tekst[] = "0123456789";
    int i = 4, j = 9;
    for(i++;i!=j;j-=1)
    {
        printf("%d ",j-(tekst[i]-'0'));
        switch(tekst[++i-1])
        {
            case 9: printf("%c ", *(tekst+i)); break;
            case 8:
            case 7:
            case 6:
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            case 0: printf("%c ", *(tekst+j)); break;
            default: break;


        }
    }
    return 0;
}

Rozumiem dlaczego wyświetla 4 i 2, ale czemu po wyświetleniu 4 nie robi czterech odstępów bo jest case 4: i nie ma breaka aż do case 1 więc powinny chyba robić się odstępy ?

1

A nie lepiej tutaj zrobić if..else? Ten switch zaciemnia sprawę.

Odnośnie pytania. Zmienna w switch jest typu char, a w case masz inty. '4' != 4 więc zawsze wpada ci w default

0

OT.

To już któreś takie głupie zadanie z kolei. Gdzie i co studiujesz? Co to za przedmiot? Bo na pewno nie jest to programowanie.

0

Po raz kolejny zadajesz pytanie, którego odpowiedź można samemu znaleźć w ciągu minuty, więc zamiast odpowiedzi napiszę Ci co masz zrobić.

  1. Odpal debuggera i śledź.
  2. Jeśli nie skonfigurowałeś jeszcze debuggera to dopisz różne printfy to się dowiesz co się dzieje. Przykładowo zamiast
printf("%d ",j-(tekst[i]-'0'));

wystarczy

printf("Przed switch: %d ",j-(tekst[i]-'0'));

i od razu masz odpowiedź na swoje pytanie.

Swoją drogą powinieneś zmienić nauczyciela od programowania, skoro ciągle daje takie programy do analizy.

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