| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > массивы |
| Автор: gerda 14.11.2005, 21:58 |
| помогите пожалуйсто с програмкойб никак не могу сделать дан буквенный рубеж с а до h и натуральное число n=<8. Например а1. Парное число расматривается на шахматном столике, на котором находится конь. Cоздать шахматний столик, отметив X те места которие конь прошел и остальние 0 как я понилаб это виглядит так если мы вводим b1, то; a b c d e f g h 1x x x x 2 x x 3x x x 4 5 6 7 8 а в пустих местах 0. конь просто должен с одного у4астка отпригать все места.... например если бы вместо коня нужно было бы поставить дамку то при вводе b2 1 2 3 4 5 6 7 a x x x b x x x x x x x x c x x x d x e x f x h x сделала маленький набросок в файлах но навсякий слу4ий напишу и сюда... #include<iostream> // Проверяем удовлетворяет ли конкретная клетка условиям int check(int ii,int jj,int horisontal, int vertical) { if((ii==horisontal-1)&&(jj==vertical-2)) return 0; if((ii==horisontal+1)&&(jj==vertical-2)) return 0; if((ii==horisontal-2)&&(jj==vertical-1)) return 0; if((ii==horisontal+2)&&(jj==vertical-1)) return 0; if((ii==horisontal-2)&&(jj==vertical+1)) return 0; if((ii==horisontal+2)&&(jj==vertical+1)) return 0; if((ii==horisontal-1)&&(jj==vertical+2)) return 0; if((ii==horisontal+1)&&(jj==vertical+2)) return 0; return 1; } int main(int argc, char* argv[]) { if(argc!=3) { cprintf("%s","Wrong parameters"); getch(); return -1; } int horisontal = StrToInt(argv[1])-1; int vertical = StrToInt(argv[2])-1; int desk[8][8]; for(int ii=0;ii<8;ii++) { for(int jj=0;jj<8;jj++) { if(check(jj,ii,horisontal,vertical)==0) desk[ii][jj]=1; else desk[ii][jj]=0; cprintf("%d%s",desk[ii][jj]," "); } cprintf("%s","\r\n"); } getch(); return 0; } |
| Автор: Бегемот 14.11.2005, 22:56 |
| Привет,gerda. Несовсем понятно в чём проблема-то. У тебя рабочий код, за исключением маленьких нюансов: - неподключены conio.h и stdio.h - непонятно зачем подключен iostream, - за место StrToInt применяй явное преобразование типов (int) ... или вопрос в выводе в те места, куда сходил конь, вместо единичек - "X"? |
| Автор: gerda 14.11.2005, 23:35 |
| в этом тоже проблема спасибо за советб попробаю |
| Автор: gerda 15.11.2005, 00:37 |
| #include <iostream> #include <conio.h> #include <stdio.h> int w; int check(int ii,int jj,int horisontal, int vertical) { if((ii==horisontal-1)&&(jj==vertical-2)) return 0; if((ii==horisontal+1)&&(jj==vertical-2)) return 0; if((ii==horisontal-2)&&(jj==vertical-1)) return 0; if((ii==horisontal+2)&&(jj==vertical-1)) return 0; if((ii==horisontal-2)&&(jj==vertical+1)) return 0; if((ii==horisontal+2)&&(jj==vertical+1)) return 0; if((ii==horisontal-1)&&(jj==vertical+2)) return 0; if((ii==horisontal+1)&&(jj==vertical+2)) return 0; return 1; } main(int argc, char* argv[]) { if(argc!=3) { cprintf("%s","Wrong parameters"); getch(); cin >> w; return -1; } int horisontal = int(argv[1])-1; int vertical = int(argv[2])-1; int desk[8][8]; for(int ii=0;ii<8;ii++) { for(int jj=0;jj<8;jj++) { if(check(jj,ii,horisontal,vertical)==0) desk[ii][jj]=1; else desk[ii][jj]=0; cprintf("%d%s",desk[ii][jj]," "); } cprintf("%s","\r\n"); } getch(); cin >> w; return 0; } не понимаю, по4ему не работаетб ПОМАГИТЕ, пожалуйсто |
| Автор: AntonChik 15.11.2005, 06:11 |
| а че выдает??? мне вломы так вот сразу разбираться тем более компилять твой исходник... |
| Автор: Neitron 15.11.2005, 13:18 | ||
Вообще я задание не понел, так как не вникал, но то чтобы код работал, если я правильно понел исходник, надо так.
|
| Автор: gerda 16.11.2005, 13:22 |
| програмка какбы работает... она виводит Wrong parameters... я ввожу, и она выклю4ается! |
| Автор: Neitron 16.11.2005, 13:42 |
| gerda Run->Parametrs Введи в поле Parametrs "5 5" например (без кавычек) |
| Автор: gerda 19.11.2005, 15:04 |
| сделала новый вариант, сдесь выводятся только парние числа, по которым прошелся конь, а что нужно сделать для тогоб, чтобы нарисовалась шахматная доска и на ней можно было бы видеть места, куда конь можен пригнуть с указ. участка??? #include <iostream> using namespace std; int main() {unsigned char koord[2],izvade[2]; int reizes,cikls; cikls=0; cout << "Дан буквенный рубеж с a до h и натуральное число n <= 8. Например, а2.\n"; cout << "-------------------------------------------------------------------------------------------------------------\n"; do { reizes=1; do { cout<<"\nВедити координати где находится конь:"; cin>>koord; if((koord[0]<97)||(koord[0]>104)||(koord[1]<49)||(koord[1]>56)) cout<<"Ведите провельные координаты!\n"; } while((koord[0]<97)||(koord[0]>104)||(koord[1]<49)||(koord[1]>56)); if((koord[0]-2>=97)&&(koord[1]-1>=49)) {izvade[0]=koord[0]-2;izvade[1]=koord[1]-1; cout<<reizes<<". Skaitlis ir "<<izvade[0]<<izvade[1]<<endl;reizes++;} if((koord[0]-2>=97)&&(koord[1]+1<=56)) {izvade[0]=koord[0]-2;izvade[1]=koord[1]+1; cout<<reizes<<". Skaitlis ir "<<izvade[0]<<izvade[1]<<endl;reizes++;} if((koord[0]-1>=97)&&(koord[1]-2>=49)) {izvade[0]=koord[0]-1;izvade[1]=koord[1]-2; cout<<reizes<<". Skaitlis ir "<<izvade[0]<<izvade[1]<<endl;reizes++;} if((koord[0]-1>=97)&&(koord[1]+2<=56)) {izvade[0]=koord[0]-1;izvade[1]=koord[1]+2; cout<<reizes<<". Skaitlis ir "<<izvade[0]<<izvade[1]<<endl;reizes++;} if((koord[0]+1<=104)&&(koord[1]-2>=49)) {izvade[0]=koord[0]+1;izvade[1]=koord[1]-2; cout<<reizes<<". Skaitlis ir "<<izvade[0]<<izvade[1]<<endl;reizes++;} if((koord[0]+1<=104)&&(koord[1]+2<=56)) {izvade[0]=koord[0]+1;izvade[1]=koord[1]+2; cout<<reizes<<". Skaitlis ir "<<izvade[0]<<izvade[1]<<endl;reizes++;} if((koord[0]+2<=104)&&(koord[1]-1>=49)) {izvade[0]=koord[0]+2;izvade[1]=koord[1]-1; cout<<reizes<<". Skaitlis ir "<<izvade[0]<<izvade[1]<<endl;reizes++;} if((koord[0]+2<=104)&&(koord[1]+1<=56)) {izvade[0]=koord[0]+2;izvade[1]=koord[1]+1; cout<<reizes<<". Skaitlis ir "<<izvade[0]<<izvade[1]<<endl;reizes++;} cout<<"\nНажмите 1, чтобы продолжить!\n"; cin>>cikls; }while (cikls==1); return 0; } |