2016-03-21 19 views
-4

Define a function CoordTransform() that transforms its first two input parameters xVal and yVal into two output parameters xValNew and yValNew. The function returns void. The transformation is new = (old + 1) * 2. Ex: If xVal = 3 and yVal = 4, then xValNew is 8 and yValNew is 10.Yanlış anlaşılan konu

Soru: Bu kodu yapmak zorundayım, bir kitaptaki ödev içindir. Bütün bölümü tam olarak anlamadım. Ben de yardım ve açıklama istiyorum. Teşekkür ederim!

Kodum takip gibidir: Eğer işaretçiler KQUEUE değerler elde etmek gerekir, sadece 2 kabul eder ve sizin fonksiyon CoordTransform bir işleve 4 parametre veriyoruz

#include <stdio.h> 

/* Your solution goes here */ 
void CoordTransform(int* xValNew, int* yValNew) 
{ 
    *xValNew = ((xValNew +1) * 2); 
    *yValNew = ((yValNew +1) * 2); 
    return; 
} 

int main(void) { 
    int xValNew = 0; 
    int yValNew = 0; 

    CoordTransform(3, 4, &xValNew, &yValNew); 
    printf("(3, 4) becomes (%d, %d)\n", xValNew, yValNew); 

    return 0; 
} 
+2

C kitaplığınızın "işaretçi" bölümünü okuyun. Ve tüm uyarıları etkinleştirin. –

+0

'xValNew + 1' ->' * xValNew + 1' vb. Ile başlamak için. –

+1

Daha spesifik olun. _do_ bölümlerini anladığınız kısımları ve _dokunmadınız kısımları. –

cevap

1

"... ilk iki girdisini dönüştürdüğünü söylüyorsunuz iki çıkış parametreleri xValNew ve yValNew içine parametreler xVal ve yVal "böylece fonksiyon dört parametreleri, iki değil olmalıdır:

/* Your solution goes here */ 
void CoordTransform(int xVal, int yVal, int* xValNew, int* yValNew) 
{ 
    *xValNew = ((xVal +1) * 2); 
    *yValNew = ((yVal +1) * 2); 
} 

int main(void) { 
    int xValNew; 
    int yValNew; 

    CoordTransform(3, 4, &xValNew, &yValNew); 
    printf("(3, 4) becomes (%d, %d)\n", xValNew, yValNew); 

    return 0; 
} 
+0

tamam tamam. Yani, yaptığım şey xVal'i xValNew'ye dönüştürmek ve y ile aynı mı? – pckofwolfs

+0

Güncellenen cevaba bakınız. –

0

/* Your solution goes here */ 
void CoordTransform(int* xValNew, int* yValNew) 
{ 
    *xValNew = ((*xValNew +1) * 2); 
    *yValNew = ((*yValNew +1) * 2); 
    return; 
} 

(işlevinizin türü geçersiz olduğundan dönüş ifadesi gerekli değildir)

+0

, bu bir ton hata oluşturur. Ayrıca iadenin gerekli olmadığını biliyorum. Ancak öğretmenim bunu yaptığımızı tercih ediyor. – pckofwolfs

1

CoordTransform (kod) olması gerektiği gibi:

#include <stdio.h> 

void CoordTransform(int xVal, int yVal, int *xValNew, int *yValNew) { 
    *xValNew = ((xVal +1) * 2); 
    *yValNew = ((yVal +1) * 2); 
} 

int main(void) { 
    int xValNew; 
    int yValNew; 

    CoordTransform(3, 4, &xValNew, &yValNew); 

    printf("(3,4) becomes (%d, %d)\n", xValNew, yValNew); 

    return 0; 
} 

Bu alıştırmanın ana amacı, değerleri değiştirmeden kullanmak, xValNew ve yValNew gibi parametrelerle veya bu parametrelerin değerini değiştirmek istediğinizde parametrelerin xVal ve yVal gibi değerlere göre geçirilmesidir. parametreleri.

+0

Değişkenler 'xVal' ve 'yVal' gerekli değildir. Diğer ikisine başlanılması gerekli değildir. –

+0

Biçim belirleyicilerini neden değiştirdiniz? '% ld' bir' ın int' değil, bir 'ın’dir. Bunun yerine '% d' kullanın. –

+0

haklısın, önerdiğin değişiklikleri yaptım. – Ameida