C++ и русский
программирую в Visual studio 2008.
пишу программу для игры в города. вот ошибка, которая возникает: а когда введешь английский то: то бишь программа работает и ошибка где то в алгоритме. помогите пожалуйста)) текст программы: #include "stdafx.h" #include <iostream> #include <cstdio> #include <fstream> #include <cctype> #include <string> using namespace std; int main() { setlocale(LC_ALL,"Russian"); //русские буквы в консоли char gor[1200][100]; //массив для хранения городов ifstream da("input.txt"); //здесь хранятся названия городов int i=0; int j=0; int h=0; int f=0; while (!da.eof()) //считываю { //названия da >> gor[i]; //городов i++; j++; } for (i=0;i<=j;i++) { gor[i][0]=tolower(gor[i][0]);//первую букву каждого города делаю маленькой. } //поскольку города наз-ся "Анапа" а надо "анапа" char b[1200][100];//массив для хранения названий городов, который ввел пользователь bool a[1200];//был ли город выведен программой for (;; ) //тут как бы логика игры { for (i=0;i<1200;i++) a[i]=0;//устанавливаем все значения на ложь char s[50]; cin >> s;//считываем название города h++;//считаем ход int k=strlen(s);//определяем длину названия города for (i=0; i<k; i++){if (isupper(s[i])) s[i]=tolower(s[i]);}//приводим название города к формату "анапа" strcpy(b[h],s);//заносим название города в ходы for (i=0;i<h;i++) if (!strcmp(b[h],b[i])) f=1;//проверяем, не вводили ли его раньше for (i=0;i<=j;i++) {if (strcmp(gor[i],s)) a[i]=1;}//проверяем, есть ли он в базе наших городов i=0; if (s[k]=='ь' || s[k]=='ъ') k--;//"Казань" нет города начинающегося с "ь" while ((s[k]!=gor[i][0] || !a[i])&& i<1200) {i++;}//ищем город if (i==1200) f=2; else {cout<< (unsigned char)gor[i] << endl;}// если не нашли мы проиграли, иначе выводим город if (f==1) {cout<< "ЖУЛИК!"; break;} if (f==2) {cout<< "ПОБЕДИЛ! Молодец"; break;} } da.close(); f system ("pause"); return 0; } |
Ответ: C++ и русский
Цитата:
И кстатти, только я рисунков не вижу? |
Ответ: C++ и русский
накладка))
я рисунки вижу. проблема осталась. |
Ответ: C++ и русский
|
Ответ: C++ и русский
не знаю, лично я не могу понять что там твориться. Могу только посоветывать пройтись построчно дебагом и понять когда именно валиться, или скинуть проект.
Потом: 1)Называй переменные осмыслено. 2) Код:
for (i=0; i<k; i++){if (isupper(s[i])) s[i]=tolower(s[i]);} кастуй слова в нижний регистр, а не побуквено. 3) тступы делай. и когда постишь код обрамляй в соответствующий тег. 4) проштудируй работу со строками в С++. потому что то что ты написал выглядит ужасно. Удачи |
Ответ: C++ и русский
Цитата:
|
Часовой пояс GMT +4, время: 12:41. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot