2014-08-29 25 views
0

我有这样的代码从vector.txt文件打印出来的矢量(1 2 3)但每当我运行的代码把载体引入matrix0的,填补了matrix来作为-85993460。请帮助阵列0的现身为-85993460而不是0的

#include<iostream> 
#include<conio.h> 
#include <stdio.h> 

using namespace std; 

void main() 
{ 
    cout << "Loading vector.txt" << endl; 
    FILE *file = fopen("vector.txt", "r"); 
    int vector[3]; 
    int b = 0; 

    do{ 
     fscanf(file, "%i", &vector[b]); 
     b++; 
    }while(feof(file) == 0); 


    //clear the screen. 
    fclose(file); 

    cout << "Loading matrix" << endl; 

    int a[3][3],i,j; 
    for(int i=0;i<3;i++) 
    { 
     for(b=0; b<3;b++); 
     a[0][i] = vector[i]; 
    } 

    cout << " Vector rotation" << endl; 


//Display the original matrix 
    for(i=0;i<3;i++) 
    { 
     for(j=0;j<3;j++) 
    { 
     cout<<a[i][j]<<" "; 
    } 
     cout<<endl; 
    } 
     cout<<"Transpose of above matrix is: "<<endl; 
//Display the transpose matrix 
    for(j=0;j<3;j++) 
    { 
     for(i=0;i<3;i++) 
     { 
     cout<<a[i][j]<<" "; 
     } 
    cout<<endl; 
    } 
//get character 
    getch(); 
} 
+7

'使用命名空间标准;'和命名变量作为矢量在**非常**糟糕的主意:'int vector [3];' – 2014-08-29 15:01:08

+3

我不知道任何当前的编译器会编译这段代码。 'void main'不是C++。其余的只是技术上的C++,但实际上是C.为什么不使用'std :: string','std :: vector'和C++流? – 2014-08-29 15:02:16

+1

你为什么3 *试图在'a'中分配相同的值? in:'for(b = 0; b <3; b ++); a [0] [i] = vector [i];' – 2014-08-29 15:02:51

回答

2

使用={} 0初始化你的矩阵:

int a[3][3] = {},i,j; 
+0

我可否知道为什么添加{}将垃圾值转换为0?我只是想知道原因。谢谢。 – 2014-08-29 15:38:57

+0

@JeremyGonzales:http://en.cppreference.com/w/cpp/language/aggregate_initialization – 2014-08-29 15:42:58

+0

再次感谢你! – 2014-08-29 15:46:03

1

您未初始化矩阵。 for循环for(b=0; b<3;b++);什么也不做,它下面的行只执行一次。如果要在此循环中执行下一行或任何其他内容,请在此for循环结尾处删除分号。

由于矩阵未在循环中初始化,因此您正在读取垃圾值。 -85993460就是矩阵创建时的任何东西。

+0

感谢您的提示,但结果并没有改变:( – 2014-08-29 15:03:24

+0

无论如何,它看起来并不像你初始化你正在实例化的矩阵。你在哪里试图这样做? – 2014-08-29 15:05:20

0

我猜你有一个错字,它更可能是你未初始化值显示为-858993460,这是十六进制0xCCCCCCCC,共同用于在调试模式下编译时填充未初始化内存的值。