Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос о контроле границ 
:(
    Опции темы
555shiro
Дата 17.5.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 3.1.2010

Репутация: нет
Всего: нет



Доброе время суток!
  у меня такой вопрос,почему данная программа резко закрыается,ведь компилятор должен вывести символ "у" и "r"  ?
помогите с разрешением? заранее благодарю!

Код

#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
class array {
int size;
char *p;
public:
array(){p=NULL;}
array(int num);
~array (){if(p)delete[]p;}  

char& put(int i);
char get(int i);

};

array::array (int num )
{
        p=new char[num];
        if(!p)
        {       cout<<"oshibka";
                exit(1);
        }
        size=num;
}

char & array::put(int i)
{
        if(i<0 || i>=size)
        {
                cout<<"naryshenie graniz";
                exit(1);
        }
        return p[i];
}

char array :: get(int i)
{
        if(i<0 || i>=size)
        {
                cout <<"oshibka v narushenii graniz";
                exit(1);
        }
        return p[i];
}
int main()
{       int i;
        array a(5);
        a.put(4)='y';
        a.put(2)='r';
        
cout<<a.get(4)<<a.get(2)<<"\n";   // я дмаю,он должен вывести символы указанные выше....а почему то  это не так....
 
       a.put(6)='!';
        getch();
        return 0;

}


PM MAIL   Вверх
toxx
Дата 17.5.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



http://codepad.org/nqoycy5t

так он и выводит, то что нужно =)
PM MAIL   Вверх
kemiisto
Дата 17.5.2010, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Как вариант - использовать (всегда) std::endl для... to flush the output buffer, короче. Что-то не могу по-русски сформулировать... smile 
Код
std::cout << ... << std::endl;




--------------------
PM MAIL WWW GTalk Jabber   Вверх
djamshud
Дата 17.5.2010, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Или сделать fflush(stdout).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
kemiisto
Дата 17.5.2010, 16:57 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(555shiro @  17.5.2010,  17:35 Найти цитируемый пост)
данная программа резко закрыается

Хм... Что-то я не прочитал внимательно. Пробовать всё равно не буду. Ибо от богомерзкой смеси С и С++ тошнит.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
toxx
Дата 17.5.2010, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Цитата

Хм... Что-то я не прочитал внимательно. Пробовать всё равно не буду. Ибо от богомерзкой смеси С и С++ тошнит.

а я попробовал и работает! smile
PM MAIL   Вверх
kemiisto
Дата 17.5.2010, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата
In file included from /usr/include/c++/4.0.0/backward/iostream.h:31,
                 from /Users/kemiisto/Documents/Learning/Temp2/main.cpp:1:
/usr/include/c++/4.0.0/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
/Users/kemiisto/Documents/Learning/Temp2/main.cpp:3:19: error: conio.h: No such file or directory
/Users/kemiisto/Documents/Learning/Temp2/main.cpp: In function ‘int main()’:
/Users/kemiisto/Documents/Learning/Temp2/main.cpp:50: error: ‘getch’ was not declared in this scope
/Users/kemiisto/Documents/Learning/Temp2/main.cpp:42: warning: unused variable ‘i’

 smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
toxx
Дата 17.5.2010, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



kemiisto
а я исправил эти ошибки...интересно какой компилятор еще сумел пропустить их и "программа резко закрыается"

PM MAIL   Вверх
djamshud
Дата 17.5.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



kemiisto, 
Код

s/iostream.h/iostream/
s/conio.h//
s/getch();//


smile

Это сообщение отредактировал(а) djamshud - 17.5.2010, 17:15


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
kemiisto
Дата 17.5.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



djamshud, да я, как бы, в курсе. В этом треде не меня нужно учить программировать.

И да, getch(); лучше заменит на std::cin.get();  smile

Добавлено @ 17:54
Код

#include <iostream>

class array 
{
public:
  array()
  {
    p = NULL;
  }

  array(int num);

  ~array()
  {
    if(p) delete[] p;
  }  

  char& put(int i);

  char get(int i);
  
private:    
  int size;
  char* p;
};

array::array (int num)
{
  p = new char[num];
  if (!p)
  {       
    std::cout << "oshibka" << std::endl;
    exit(1);
  }
  size=num;
}

char& array::put(int i)
{
  if (i < 0 || i >= size)
  {
    std::cout << "naryshenie graniz" << std::endl;
    exit(1);
  }
  return p[i];
}

char array::get(int i)
{
  if (i < 0 || i >= size)
  {
    std::cout <<"oshibka v narushenii graniz" << std::endl;
    exit(1);
  }
  return p[i];
}

int main()
{
  //int i;
  array a(5);
  a.put(4)='y';
  a.put(2)='r';
        
  std::cout << a.get(4) << a.get(2) << std::endl;
 
  a.put(6)='!';
  std::cin.get();
  return 0;
}


C минимальными правками.

Это сообщение отредактировал(а) kemiisto - 17.5.2010, 17:54


--------------------
PM MAIL WWW GTalk Jabber   Вверх
toxx
Дата 17.5.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Цитата

В этом треде не меня нужно учить программировать.

Мало ли, вдруг не знаете  smile   smile 
PM MAIL   Вверх
GoldFinch
Дата 17.5.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Цитата(kemiisto @  17.5.2010,  17:50 Найти цитируемый пост)
Как вариант - использовать (всегда) std::endl для... to flush the output buffer, короче.

как раз рекомендуют без необходимости не использовать endl, т.к. зачастую это не нужный оверхед из за "flush the output buffer"

PM MAIL ICQ   Вверх
kemiisto
Дата 17.5.2010, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(GoldFinch @  17.5.2010,  19:50 Найти цитируемый пост)
как раз рекомендуют без необходимости не использовать endl, т.к. зачастую это не нужный оверхед из за "flush the output buffer"

Ссылку в студию. Кто там и чего не рекомендует. Оверхед? В галимой учебной поделке на 20 строк? Не нужный? Тут очень даже нужный.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
GoldFinch
Дата 17.5.2010, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



kemiisto, 
вы писали "использовать (всегда)" а не для этой "учебной поделке на 20 строк".
endl следует использовать только если надо явно указать что кроме завершения строки, надо еще и сбросить буферы.

>Кто там и чего не рекомендует
Герб Саттер "Новые сложные задачи на С++", задача 1, замечание 5.
PM MAIL ICQ   Вверх
555shiro
Дата 17.5.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 3.1.2010

Репутация: нет
Всего: нет



возможно я неправильно выразился,так как начинающий только,я хотел сказать что на экране что то выходит,но затем он резко исчезает...а хотелось бы чтобы он задержался,чтобы можно было увидеть что там написано...для этого я использовал getch()...но почему то все равно экран не задерживается.......
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.