Lütfen ingilizcemi affedin.Kodumdaki mantık yanlış nerede?
C'ye giriş dersi alıyorum ve programımın mantığı ile ilgili bazı problemlerim var. Sadece bazen gerekli çıktıyı üretecektir.
Görev, dizinin öğelerini alan, öğedeki en büyük çift basamağı döndüren bir işlev yazmaktır.
int ary1[] = {123, 456, -7890, 12};
-7890
8
ile en büyük değeri ve en büyük değeri olarak döndürür.
int ary2[5] = {-123, 654, 78, 15, 189};
189
8
ile en büyük değeri ve en büyük değeri olarak döndürür.
int ary3[2] = {9, 9};
Hiçbir şey döndürmez.
123
, en büyük çift rakam ve oluşumları olan en büyük değer olarak 2
döndürür.
int ary5[] = {24, 45, -789, 24, 1};
-789
8
ile en büyük değeri ve en büyük değeri olarak döndürür.
int ary6[] = {-749, -241, 1, 45};
45
, en büyük çift rakam ve oluşumları olan en büyük değer olarak döndürür. İşte
6
hatta rakamı üretecek ve onu
8
olmalıdır zaman olaylar var
ary2[]
gelince bir hata benim mantık olduğunu biliyorum
#include <stdio.h>
void digitExtract(int[], int);
int main() {
int ary1[] = { 123, 456, -7890, 12 };
int ary2[5] = { -123, 654, 78, 15, 189 };
int ary3[2] = { 9, 9 };
int ary4[] = { 123, 123, 0, 12 };
int ary5[] = { 24, 45, -789, 24, 1 };
int ary6[] = { -749, -241, 1, 45 };
int ary7[] = { 1, 3, 5 };
printf("\nCalling function in ary1[]:\n");
digitExtract(ary1, 4);
printf("\nCalling function in ary2[]:\n");
digitExtract(ary2, 5);
printf("\nCalling function in ary3[]:\n");
digitExtract(ary3, 2);
printf("\nCalling function in ary4[]:\n");
digitExtract(ary4, 4);
printf("\nCalling function in ary5[]:\n");
digitExtract(ary5, 5);
printf("\nCalling function in ary6[]:\n");
digitExtract(ary6, 4);
printf("\nCalling function in ary7[]:\n");
digitExtract(ary7, 3);
}
void digitExtract(int Array[], int array_size) {
int tempValue;
int x;
int myArr[10] = { 0 };
int evenCount = 0;
int max = Array[0];
for (int i = 1; i < array_size; i++)
{
if (Array[i] < 0) {
Array[i] = -Array[i];
if (Array[i] > max) {
max = Array[i];
}
}
}
tempValue = (max < 0) ? -max : max;
do {
myArr[tempValue % 10]++;
tempValue /= 10;
} while (tempValue != 0);
for (x = 8; x > 0; x -= 2) {
if (myArr[x]>0) {
printf("Displaying from inside of function():\n");
printf("\nThe largest even digit: %d\n", x);
printf("\nThe digit %d occurs %d times.\n", x, myArr[x]);
evenCount++;
break;
}
} if (evenCount == 0)
printf("\nNo even digits found!\n\n");
}
, ama yok nerede olduğunu bil.
Bu işlev, öğe olarak tek değerleri olan bir dizi için çalışacaktır.
Nerede veya ne yapıyorum?
Teşekkür ederiz.
Soruyu biraz daha açıklayabilir misiniz; Int ary6 [] = {-749, -241, 1, 45}; ', -241'' -749'dan daha büyüktür, bu yüzden cevap -241' olmalıdır? –
@ MattMcNabb-Şartların büyüklüğü açısından konuşarak mutlak değeri dikkate almanız gerekir. –
Kod, algoritmayı uygular: "en büyük" sayıyı bulun ve sonra bu sayıdaki en büyük çift haneyi bulun. Ancak örnekler şu şekildedir: en büyük çift basamağı bulun ve daha sonra bu rakamı içeren sayıların "en büyük" değerini bulun. Lütfen bu yaklaşımlardan hangisinin yapmaya çalıştığınız olduğunu açıklığa kavuşturun! –