Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2011, 18:44   #21
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

потому что указатель на первый символ строки принимается, а не весь массив.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.01.2011, 21:52   #22
BrutalSnowflake
Пользователь
 
Аватар для BrutalSnowflake
 
Регистрация: 22.01.2011
Сообщений: 25
По умолчанию

Ааа, спс. Ну вроде понятно стало. Буду разбираться
BrutalSnowflake вне форума Ответить с цитированием
Старый 24.01.2011, 13:41   #23
BrutalSnowflake
Пользователь
 
Аватар для BrutalSnowflake
 
Регистрация: 22.01.2011
Сообщений: 25
По умолчанию

Вроде во всём разобрался, но в ходе написания программы появилась проблемма. В программе при вводе неверного числа должна выбиваться надпись Ошибка ввода! и возвращаться на начало программы для ввода правильного числа. Надпись выбиваеться, но на начало не возвращаеться. В ходе проверки числа основная программа получает значение ошибки от подпрограммы Error. При значении true программа дожна писать ошибку и возвращаться на начало, при значении false прерывать цикл и продолжать работу (в данном случае пока ещё ничего не делать). Проблема заключаеться в том, что после завершения первого круга цикла значение Error с true изменяеться на false, хотяв самом цикле оно было ещё true
Основная программа
Код:
	
void main()
   {char chislo[30]="";
   	do
      {
      	char chislo[30]="";
      	cout<<"Vvedite chislo:\n";
			cin>>chislo;
      	if (Error(chislo)==true) cout<<"Oshibka vvoda!";
      		else {cout<<chislo<<" = "<<rimTranslate(chislo)<<endl;
            cout<<"Error = "<<Error(chislo);
            		}
      }
      while (Error(chislo)==true);
      cout<<"Error = "<<Error(chislo);
		getch();
   }
Подпрограмма проверки:
Код:
int Error(char *a)
   {  bool error=false;
   	int strl=strlen(a);
      for (int i=0;i<strl;i++)
      {	switch (a[i]){
      		case 'M':case 'D': case 'C': case 'L': case 'X':case 'V': case 'I': case ' ': break;
            default: error=true;
            break;}
      }
	  return error;
   }
BrutalSnowflake вне форума Ответить с цитированием
Старый 24.01.2011, 15:46   #24
BrutalSnowflake
Пользователь
 
Аватар для BrutalSnowflake
 
Регистрация: 22.01.2011
Сообщений: 25
По умолчанию

Ну этот вопрос решил, изворотился немного но всё же.

Теперь проблема появилась при создании обратного преобразователя, т.е. из обычных в римские. Код функци:
Код:
   int Otvet(res)
   {char b[10000];
   int i=0;
   while (res>=1000)
   	{res-=1000;
      b[i]='M';
      i++;
      }
   while (res>=900)
      {res-=900;
      b[i]='C';
      i++;
      b[i]='M';
      i++;
      }
   while (res>=500)
   	{res-=500;
      b[i]='D';
   	i++;
      }
   while (res>=400)
   	{res-=400;
      b[i]='C';
      i++;
      b[i]='D';
      i++;
   	}
   while (res>=100)
   	{res-=100;
      b[i]='C';
      i++;
      }
   while (res>=90)
   	{res-=90;
      b[i]='X';
      i++;
      b[i]='C';
      i++;
      }
   while (res>=50)
   	{res-=50;
      b[i]='L';
      i++;
      }
   while (res>=40)
   	{res-=40;
      b[i]='X';
      i++;
      b[i]='L';
      i++;
      }
   while (res>=10)
   	{res-=10;
      b[i]='X';
      i++;
      }
   while (res>=5)
   	{res-=5;
      b[i]='V';
      i++;
      }
   while (res==4)
   	{res-=4;
      b[i]='I';
      i++;
      b[i]='V';
      i++;
      }
   while (res>=1)
   	{res-=1;
      b[i]='I';
      i++;
      }
   return b;
   }
Кусок кода основной программы:
Код:
      cout<<"Celaja chast = "<<celoe<<"\n"<<" = "<<Otvet(celoe)<<"\n";
Я в функцию посылаю числовое значение, хочу получить на выходе строку из римских цифр. Но вот выбивает ошибку : cannot convert char* to int
Я так понял, что оно подняло кипишь из-за того что я в функцию подал числовое значение,а возвращает оно строку. Что нужно исправить, чтобы всё правильно было?

Последний раз редактировалось BrutalSnowflake; 24.01.2011 в 16:46.
BrutalSnowflake вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$I: автоматический контроль операций ввода-вывода. Викдон Паскаль, Turbo Pascal, PascalABC.NET 10 21.11.2008 20:45
Римские цифры Sergeevich Помощь студентам 2 26.05.2008 18:21
Контроль ввода данных в классе oleg kutkov Общие вопросы C/C++ 1 14.04.2008 22:19