chương trình C++ của em là thực hiện tra số liệu từ bảng có sẵn trên file .txt
đầu vào là 3 key. key1 ứng với cột 1 , key2 ứng với cột 2 , key 3 ứng với hàng 1
nếu nhập key đúng trả về ans=? .
nếu nhập key 1 trong các key sai không đúng với khoảng xét yêu cầu nhập lại key cho tới khi nào đúng .
em bị mắc ở đoạn nhập key sai này ai giúp em với. chương trình e chạy trên visual studio 2010

file text của e như thế này:

15 8
000 000 001 002 004 010 025 050
001 001 195 174 155 129 102 082
001 002 220 200 179 150 122 100
001 003 201 186 172 153 129 105
001 004 294 265 236 190 145 107
002 001 211 193 175 150 122 097
002 002 176 166 156 141 123 104
002 003 308 280 247 201 153 112
003 001 270 251 233 206 172 137
003 002 284 256 230 192 149 112
003 003 370 321 276 212 152 106
003 004 477 445 404 038 290 238
003 005 162 152 142 130 113 096
004 001 299 265 234 186 140 104
004 002 251 221 192 151 119 101

Mã:
#include <fstream>
#include <iostream>
#include <conio.h>
using namespace std;


void in(int a[][100], int ma, int na)			//hàm lấy số liệu từ ma trận
{	
	int key1,key2,key3,ans;
	cout<<"nhap ma: "<<endl;
	cin>>key1>>key2>>key3;
	for(int i=0;i<ma;i++)
	{
		for(int j=0;j<na;j++)
			
			
			if((a[i][0]==key1)&&(a[i][1]==key2)&&(a[0][j]==key3))			
				{	
					ans=a[i][j];
					
					cout<<"thong so: "<<ans<<endl;
				
				}

			       // thực hiện nội suy nếu: a[0][j]<key3<a[0][j+1]

			else if((a[i][0]==key1)&&(a[i][1]==key2)&&((a[0][j]<key3)&&(key3<a[0][j+1])))		
				{
					ans=(a[i][j+1]*(key3 - a[0][j]) + a[i][j]*(a[0][j+1] - key3))/(a[0][j+1] -a [0][j]);
					
					cout<<"thong so: "<<ans<<endl;
					
				}

			/* các trường hợp key sai yêu cầu nhập lại key cho tới khi đúng 
                             nếu bỏ đoạn này đi chương trình chạy bình thường nhưng không có yêu cầu nhập lại key sai
                             thêm vào thì nó bị lỗi dù nhập đúng nó cũng yêu cầu nhập lại... */

			else if ((key1!=a[i][0])||(key2!=a[i][1])||(key3<0)||(key3>50))         
				{
					cout<<"nhap sai. nhap lai ma: "<<endl;
					in(a,ma,na);
				}
			
			
	}
}

void docfile(ifstream &f, int a[][100], int &ma, int &na)     //hàm đọc ma trận từ file .txt
{
	f>>ma>>na;
	for(int i=0;i<ma;i++)
		for(int j=0;j<na;j++)
			f>>a[i][j];
}

void main()
{
	int a[100][100], ma,na;
	ifstream f("phuluc15.txt");
	docfile(f,a,ma,na);
	in(a,ma,na);
	cout<<"
-----
";
	system("pause");
}
[IMG]images/smiliesot_talking.gif[/IMG][IMG]images/smiliesot_talking.gif[/IMG][IMG]images/smiliesot_talking.gif[/IMG]