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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2009, 13:18   #1
bboba
 
Регистрация: 02.06.2009
Сообщений: 7
Вопрос Проблема с программой по строкам

Здравствуйте! Собственно для начала объясню саму задачку, покажу код и объясню проблему. Сам пытался решить но ошибка все та же.

Вводится последовательность символов и целое число n. Определять номера последних n символов, имеющих нечетный код.

Вощем суть задачи - это ввод числа n, или говоря точнее - число последних символов с нечетным кодом.

Моя проблема в том, что в программе находится не ПОСЛЕДНИЕ n-количество символов, а ИЗ последних n-кол-ва символов.

Вот собственно сам код:

Код:
#include "stdafx.h"
#include <iostream>
using namespace std ;





int _tmain(int argc, _TCHAR* argv[])
{
 const int n=2;
 char const* pS [ n ] = 
 { "1. Last character task ", "0. Exit" } ;
 int v ;
 do
 {
  cout << "Menu\n" ;
  for ( int i = 0; i < n; i++ ) cout << pS [ i ] << endl ;
  cout << "\nYour choice - > " ;
  cin >> v ;
  cin.get();
  
  switch ( v )
  {
  case 1 : {
   cout << '\n' << pS [ 0 ] << "\n\n" ; 
   cout << "Please enter maximum string length: ";
 int length = 0;
 cin >> length;
 cin.get();
 

 char* str = new char[length];

 cout << "Please enter a string: ";
 cin.get(str, length);
 cin.get();


 cout << "Please enter amount of last string characters to work with: ";
 int n = 0;
 cin >> n;
 cin.get();
 
 int char_count;
 for (char_count = 0; str[char_count]; char_count++) {}

 cout <<"\n\n";
 
 int i = char_count - 1;
 while (n > 0 && i >= 0) {
  if ( (int)str[i] % 2 ) {
   cout << "symbol: ";
   cout << str[i];
   cout << ", ";
   cout << "code: ";
   cout << (int)str[i];
   cout << "\n";
  
  }
  i--;
  n--;
 }


   
 delete [] str;
     }
   break ;

  case 0 : break ;
  default  : cout << "\nIllegal choice\n\n";
  }
 } while ( v != 0 ) ;
 return 0;
}
bboba вне форума Ответить с цитированием
Старый 02.06.2009, 13:38   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Занесите n-- в блок if:
Код:
while (n > 0 && i >= 0) {
  if ( (int)str[i] % 2 ) {
   cout << "symbol: ";
   cout << str[i];
   cout << ", ";
   cout << "code: ";
   cout << (int)str[i];
   cout << "\n";
    //  << -- сюда
  }
  i--;
  n--;  //  <--- вот это
 }
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.06.2009, 13:51   #3
bboba
 
Регистрация: 02.06.2009
Сообщений: 7
По умолчанию

спасибо большое) недодумался как то)
bboba вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с программой Delphi Middle.Cry Помощь студентам 2 24.03.2009 20:12
У меня тут проблема с программой MAKEDON Свободное общение 1 10.03.2008 23:16
Проблема с программой eks-s Общие вопросы Delphi 9 06.02.2008 09:47
проблема с программой dima00 Общие вопросы Delphi 2 20.11.2007 13:56
Проблема с программой Dues Помощь студентам 1 19.11.2007 01:46