İş arkadaşım Jimmy , C / C ++ için yeni. Aynı zamanda yavaş öğrenen biri. Şimdi, adil olmak gerekirse, kodu her zaman derlenir, ancak gerçekten özensiz alışkanlıkları vardır. Örneğin, herkes şöyle bir dizi tanımlayabileceğinizi bilir:
int spam[] = {4, 8, 15, 16, 23, 42};
Jimmy hariç herkes. Bir dizi yapmanın tek yolunun böyle olduğuna ikna olmuş :
int spam[6];
spam[0] = 4;
spam[1] = 8;
spam[2] = 15;
spam[3] = 16;
spam[4] = 23;
spam[5] = 42;
Bunu kod incelemesinde düzeltmeye devam ediyorum ama öğrenmiyor. Bu yüzden taahhütte bulunduğunda kendisi için bunu otomatik olarak yapan bir araç yazmanıza ihtiyacım var¹.
Meydan okuma
Tam bir program yazmanızı veya çok satırlı bir dizgede girdi olarak kullanılan ve C dizisinin daha kompakt sürümünü çıkaran bir işlev yazmanızı istiyorum. Girdi daima boşluk dahil bu formatı izleyecektir:
identifier_one identifier_two[some_length];
identifier_two[0] = some_number;
identifier_two[1] = some_number;
identifier_two[2] = some_number;
...
identifier_two[some_length - 1] = some_number;
Kısacası, giriş her zaman geçerli ve iyi tanımlanmış C olacaktır. Daha ayrıntılı olarak:
Tüm tanımlayıcılar sadece harflerden ve alt çizgilerden oluşacaktır. Uzunluk her zaman en az bir olacak ve hiçbir zaman sınırlayıcı veya sınırsız indeksler olmayacak. Dizinlerin sıralı olduğunu da varsayabilirsiniz. Örneğin:
foo bar[3];
bar[0] = 1
bar[2] = 9;
foo bar[1];
bar[0] = 1;
bar[1] = 3;
ve
foo bar[3];
bar[2] = 9;
bar[0] = 1
bar[1] = 3
tümü geçersiz girdilerdir ve gönderiminizde tanımsız davranışlara neden olabilirler. Ayrıca, tüm sayıların geçerli ondalık sayılar, negatif veya pozitif olacağını varsayabilirsiniz. Girdide fazladan boşluk yok. Çıktı her zaman bu formatı izlemelidir, boşluk dahil:
identifier_one identifier_two[] = {n1, n2, n3, ...};
İşte bazı örnek veriler:
Input:
spam eggs[10];
eggs[0] = 0;
eggs[1] = 4;
eggs[2] = 8;
eggs[3] = -3;
eggs[4] = 3;
eggs[5] = 7;
eggs[6] = 888;
eggs[7] = 555;
eggs[8] = 0;
eggs[9] = -2;
Output:
spam eggs[] = {0, 4, 8, -3, 3, 7, 888, 555, 0, -2};
Input:
char ans[2];
ans[0] = 52;
ans[1] = 50;
Output:
char ans[] = {52, 50};
Input:
blah_blah quux[1];
quux[0] = 105;
Output:
blah_blah quux[] = {105};
Girişinizi ve çıkışınızı STDIN / STDOUT, fonksiyon argümanları ve dönüş değeri, dosya okuma ve yazma vb. Gibi herhangi bir makul formatta alabilirsiniz. Standart boşluklar geçerlidir. Bayt cinsinden en kısa cevap kazanır!
His Bu pasif-agresif ve berbat bir fikir. Sen mi değil benden bu fikri olsun.