Spoj nie kompiluje

Odpowiedz Nowy wątek
2019-10-10 23:57
0

Polecenie to:
"Napisz program, który w zależności od podanej liczby wyświetli jeden z komunikatów:
-jeżeli liczba jest ujemna, to wyświetli "liczba ujemna"
-jeżeli liczba jest cyfrą, to wyświetli jej wartość słownie (dokładniej, wyświetli jeden z komunikatów: "zero", "jeden", "dwa", "trzy", "cztery", "piec", "szesc", "siedem", "osiem", "dziewiec")
-jeżeli liczba jest dodatnia i nie jest cyfrą, to wyświetli informację czy jest parzysta (dokładniej, wyświetli jeden z komunikatów: "liczba parzysta", "liczba nieparzysta")".
Program który napisałem kompiluje i wydaje się że działa poprawnie ale Spoj zwraca "compilation error"

Oto mój kod:


#include <stdio.h>

int main() 
{ 
    int a;
    int i;

    scanf("%d",&a);

    if(a<0)
    i=10;
    else if(a>9)
    i=11;
    else
    i=a; 

    switch(i)
    {
        case 0: printf("zero\n"); break;
        case 1: printf("jeden\n"); break;
        case 2: printf("dwa\n"); break;
        case 3: printf("trzy\n"); break;
        case 4: printf("cztery\n"); break;
        case 5: printf("pięć\n"); break;
        case 6: printf("sześć\n"); break;
        case 7: printf("siedem\n"); break;
        case 8: printf("osiem\n"); break;
        case 9: printf("dziewięć\n"); break;
        case 10: printf("liczba ujemna\n"); break;
        case 11: 
        if(a%2==0)
            printf("liczba parzysta\n");
        else
            printf("liczba nieparzysta\n"); break;
     }

         return 0;
}
edytowany 1x, ostatnio: kq, 2019-10-11 08:57
Nie mam pojęcia czemu wszyscy komentują kod, przecież pytanie jest o błąd kompilacji... zresztą bardzo ciekawy, bo u mnie na gcc kompiluje się ok. - kelog 2019-10-11 15:17

Pozostało 580 znaków

2019-10-11 00:32
1

A czy zamiast całej drabinki switchów nie prościej użyć np. tablic,a potem jeśli jest jednocyfrowa liczba wypisywać elementy tablicy?
Coś w stylu:

t = {"zero", "jeden", "dwa"...itd}
wczytaj liczba
if  liczba < 0
    print "ujemna"
else if liczba >=0 && liczba<10
    print t[liczba]
else 
   if liczba & 1 == 0
   "parzysta"
   else 
     "nieparzysta" 
edytowany 1x, ostatnio: Serechiel, 2019-10-11 07:48

Pozostało 580 znaków

2019-10-11 15:00
0
Serechiel napisał(a):

A czy zamiast całej drabinki switchów nie prościej użyć np. tablic,a potem jeśli jest jednocyfrowa liczba wypisywać elementy tablicy?

Pewnie łatwiej tylko że to sam początek mojej nauki programowania i chodzi o to aby wykonać polecenie w takiej prostej wersji z użyciem if i switch.

edytowany 1x, ostatnio: heysooky, 2019-10-11 15:01

Pozostało 580 znaków

2019-10-11 15:13
0
static char *tb[]={"zero","jeden","dwa","trzy","cztery","pięć","sześć","siedem","osiem","dziewięć","parzysta","nieparzysta","ujemna"};
int x=(a<10?10|(a&1):a<0?12:a;
//cout<<tb[x]<<endl; // Heh, przecież pytający chce switch'a!
switch(x) // Chcę switch'a za wszelką cenę, więc niech ma switch'a
{
   case 0: cout<<x[tb];
   case 1: cout<<x[tb];
   case 2: cout<<x[tb];
   ...
   ...
   case 10: cout<<x[tb];
   case 11: cout<<x[tb];
   case 12: cout<<x[tb];
}

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon, 2019-10-11 15:15
Po dwóch dniach zrozumiałem działanie drugiej linijki hah. Dzięki wielkie, nauczyłem się czegoś. - heysooky 2019-10-13 20:58
Lepiej później niż wcale ... - _13th_Dragon 2019-10-13 21:07

Pozostało 580 znaków

2019-10-13 17:12
0

Program kompiluje się i działa poprawnie (przynajmniej na gcc) więc po ci jakieś spoje punkty na słodziaka zbierasz :)

Wykładowca tak przyjmuje rozwiązania zadań, nie moja wina :/ - heysooky 2019-10-13 20:59

Pozostało 580 znaków

2019-10-14 20:07
2

Możliwe, że na którymś etapie przetwarzania tego pliku na spoju kodowanie polskich znaków się kaszani i powoduje błąd kompilacji.
Spróbuj bez ogonków.

Pozostało 580 znaków

2019-10-15 11:22
0
Flaker napisał(a):

Możliwe, że na którymś etapie przetwarzania tego pliku na spoju kodowanie polskich znaków się kaszani i powoduje błąd kompilacji.
Spróbuj bez ogonków.

Raczej problemem nie jest kodowanie znaków, ale niedosłowne rozumienie treści zadania.
W treści jest wyraźnie cyfry są opisane bezogonkowo, a OP sobie dopisał ogonki.
Na SPOJ zadania zawsze definiowane są tak by mieścić się w ASCII.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2019-10-15 11:24
Ale czy w takim razie byłby "compilation error"? - Silv 2019-10-15 13:14

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