2016-04-04 34 views
2

myArray ve q print 0 ve nedenini anlayamıyorum.2 boyutlu dizideki değerler

printf("Diameter: %f Flow rate: %f\n",myArray[rows][columns],q); 

program akış hızını hesaplar ve ben çapa içeren bir tablo yazdırmak ve akış oranı değerleri çalışıyorum.

#include <stdio.h> 
#include <stdlib.h> 

void printArray(float myArray[5][3], float v); 

int main() 
{ 
    float q, a, d, v, array[5][3]; 
    int rows, columns; 

    printf("Enter: "); 
    scanf("%f",&v); 

    for (rows = 0; rows < 5; rows++) 
    { 
     for (columns = 0; columns < 3; columns++) 
     { 
      printf("Enter value for %d, %d",rows,columns); 
      scanf("%d",&array[rows][columns]); 
     } 
    } 
    printArray(array, v); 

} 

void printArray(float myArray[5][3], float v) 
{ 
    int i, rows, columns; 
    float q, a; 

    for (rows = 0; rows < 5; rows++) 
    { 
     for (columns = 0; columns < 3; columns++) 
     { 
      a=(3.14*(myArray[rows][columns]*myArray[rows][columns]))/4; 
      q=a*v; 
      printf("Diameter: %f Flow rate: %f\n",myArray[rows][columns],q); 
     } 
    } 
    printf("\n"); 
} 
+1

Bir sorun, bir şamandıra içine bir int okuma olmasıdır. Diziye okunan scanf için yanlış format belirticiniz var. – Pemdas

cevap

2
scanf("%d",&array[rows][columns]); 

Sen tanımsız davranış olan float içine tarama %d kullanıyor. Bunun yerine %f kullanmanız gerekir. Ayrıca, bir şeyleri başarıyla taradığından emin olmak için scanf'un dönüş değerini kontrol etmelisiniz. scanf, başarıyla taranan öğelerin sayısını döndürür, bu nedenle sizin durumunuzda geri dönmelidir. 1. Uygun bir giriş olmadığında, 0 döndürecek ya da girişi okuyan bir hata varsa, EOF döndürülecektir.

Örneğin, olabilir:

if (scanf("%f", &array[rows][columns]) != 1) 
{ 
    fprintf(stderr, "Unable to read input\n"); 
    return 1; 
} 
+0

Teşekkürler, gerçekten yardımcı oldu. – stc

İlgili konular