Na początek witam wszystkich.
Zacząłem sobie rozwiązywać tydzień temu zadania u Was no i na razie trochę rozwiązałem, ale powoli zaczyna mnie denerwować cały ten automat testujący
Problem ma z zadaniem KC015 i nie mam pojęcia dlaczego mi nie przyjmuje sprawdzarka tego.
Chciałem sobie ogarnąć trochę wyższa matematykę, interpolacje te sprawy z zadań trudnych, ale kurcze postanowiłem robić po kolei.
Napisałem najpierw w C, to mówi, ze źle, to napisałem w Perlu to tez nie pasuje.
Poniżej zamieszczam oba kody może ktoś by mnie nakierował, bo nie wydaje mi się żebym nie umiał tego zadania zrobić.
[bbone=perl,3137]#!/usr/bin/perl
while($line = ) {
@dane = split(/\s+/, $line);
$l1 = @dane[0];
$l2 = @dane[2];
$znak = @dane[1];
if($znak eq "==") {
if($l1 == $l2) {
print "1\n";
} else {
print "0\n";
}
} elsif($znak eq "!=") {
if($l1 != $l2) {
print "1\n";
} else {
print "0\n";
}
} elsif($znak eq "<=") {
if($l1 <= $l2) {
print "1\n";
} else {
print "0\n";
}
} elsif($znak eq ">=") {
if($l1 >= $l2) {
print "1\n";
} else {
print "0\n";
}
}
}
[/bbone]
Perl ma to do siebie, ze jak dostaje liczbę to jeśli jest ogromna to wyświetlą w notacji wykładniczej, wiec z porównywaniem nie powinno być problemu, chyba ze nie rozbija split na liczby tylko na stringi.
Teraz kod w C:
[bbone=c,3138]
include
include
int i;
int nierowne(char *l1, char *l2) {
for(i = 0; l1[i]; i++)
if(l1[i] != l2[i])
return 1;
return 0;
}
int rowne(char *l1, char *l2) {
for(i = 0; l1[i]; i++)
if(l1[i] != l2[i])
return 0;
return 1;
}
int mniejsze(char *l1, char *l2) {
for(i = 0; l1[i]; i++) {
if(l1[i] < l2[i])
return 1;
else if(l1[i] > l2[i])
return 0;
}
return 1;
}
int wieksze(char *l1, char *l2) {
for(i = 0; l1[i]; i++) {
if(l1[i] > l2[i])
return 1;
else if(l1[i] < l2[i])
return 0;
}
return 1;
}
int main(void)
{
char l1[1024] = {0}, l2[1024] = {0}, z1, z2;
while(fscanf(stdin, "%s %c%c %s", l1, &z1, &z2, l2) != EOF) {
if(z1 == '!')
printf("%d\n", nierowne(l1, l2));
else if(z1 == '=')
printf("%d\n", rowne(l1, l2));
else if(z1 == '<')
printf("%d\n", mniejsze(l1, l2));
else if(z1 == '>')
printf("%d\n", wieksze(l1, l2));
memset(l1, 0, 1024 * sizeof(char));
memset(l2, 0, 1024 * sizeof(char));
}
return 0;
}
[/bbone]
Będę wdzięczny jakby ktoś na to zerknął.