Моё меню Общее меню Пользователи Правила форума Все прочитано
Вернуться   uForum.uz > ИКТ и телеком > IT-индустрия > Софт > Программирование > C/C++, Прикладные вопросы
Знаете ли Вы, что ...
...до того как открыть новую тему, стоит использовать поиск: такая тема уже может существовать.
<< Предыдущий совет - Случайный совет - Следующий совет >>

C/C++, Прикладные вопросы Программирование на C++. No VCL, no MFC, pure C++ only. Прикладные библиотеки и компоненты для C или C++ и тому подобные вопросы.


Ответить

 
Опции темы Опции просмотра
Старый 17.03.2009 18:48   #1  
Real ID Group
Аватар для Botirbek Samandarov
Оффлайн
AKA:sbssoft
Сообщений: 138
+ 1  2/2
– 0  0/0

UzbekistanОтправить сообщение для Botirbek Samandarov с помощью Skype™Мой КругМой мир
Вырезать подстроку из строки S с SBEGIN позиции до SEND позиции?

Написал вот такой код
Код:
#include <iostream.h>
#include <string.h>
char *copystr(char *s, int sbegin, int send);
main()
{
cout <<"Satrni kiriting -> ";
char satr[256];
cin.getline(satr, 256);
cout<<copystr(satr, 5, 3);
}

char *copystr(char *s, int sbegin, int send)
{
int i,j=0;
char *rez = new char[send];
for (i=sbegin-1; i<sbegin+send-1; i++)
{
	rez[j]=s[i];
	j++;
}
return rez;
}
Где допустил ошибку?
Ответить 
Старый 17.03.2009 19:49   #2  
Аватар для shumbola
Оффлайн
Сообщений: 3,327
+ 337  892/590
– 3  31/25

Uzbekistan
Цитата:
Сообщение от Botirbek Samandarov Посмотреть сообщение
Где допустил ошибку?
Ошибка в выборе книжки для изучения С++.
Ответить 
Старый 17.03.2009 20:18   #3  
uParty Member Known ID Group
Аватар для DarkUser
Оффлайн
Служу Его Божественной Тени!
Сообщений: 1,671
+ 4,505  1,372/657
– 164  33/27

Uzbekistan
Цитата:
Сообщение от Botirbek Samandarov Посмотреть сообщение
Где допустил ошибку?
это типа загадка, да?!
__________________
Are you my mommy?
Ответить 
Старый 17.03.2009 20:38   #4  
Known ID Group uParty Member
Аватар для Dolphin
Оффлайн
Imperium of Man
Inquisitor
Сообщений: 5,990
+ 5,680  4,442/2,033
– 128  137/102

Russian FederationОтправить сообщение для Dolphin с помощью ICQОтправить сообщение для Dolphin с помощью Skype™Facebook
Судя по инклудам в стиле "<>", копилятор с++. Собственно класс стринга уже подключен. Почему бы не юзать стандартные процедуры для работы со строками? Или нужен код именно в ANSI C?
Ответить 
Старый 17.03.2009 20:49   #5  
Аватар для shumbola
Оффлайн
Сообщений: 3,327
+ 337  892/590
– 3  31/25

Uzbekistan
Цитата:
Сообщение от Eclipse Посмотреть сообщение
Или нужен код именно в ANSI C?
Код написан ни на ANSI C, ни на ANSI/ISO С++. Скорее всего код написан человеком, который только начал изучение С++ и выбрал себе плохой учебник. ;-)
Ответить 
Старый 17.03.2009 20:59   #6  
uParty Member Known ID Group
Аватар для DarkUser
Оффлайн
Служу Его Божественной Тени!
Сообщений: 1,671
+ 4,505  1,372/657
– 164  33/27

Uzbekistan
Цитата:
Сообщение от shumbola Посмотреть сообщение
человеком, который только начал изучение С++
Суровые каракалпакские кодеры сначала преподают С++ в университете, а уже потом его-же изучают...
__________________
Are you my mommy?
Ответить 
Старый 18.03.2009 10:40   #7  
Real ID Group
Аватар для Botirbek Samandarov
Оффлайн
AKA:sbssoft
Сообщений: 138
+ 1  2/2
– 0  0/0

UzbekistanОтправить сообщение для Botirbek Samandarov с помощью Skype™Мой КругМой мир
Цитата:
Сообщение от Eclipse Посмотреть сообщение
Судя по инклудам в стиле "<>", копилятор с++. Собственно класс стринга уже подключен. Почему бы не юзать стандартные процедуры для работы со строками? Или нужен код именно в ANSI C?
Я не нашел стандартную функцию для вырезки подстроки, наверно и нету (Как в паскале copy(s, sbegin, send) )

Последний раз редактировалось Botirbek Samandarov; 18.03.2009 в 10:43.
Ответить 
Реклама и уведомления
Старый 18.03.2009 10:57   #8  
Real ID Group
Аватар для Botirbek Samandarov
Оффлайн
AKA:sbssoft
Сообщений: 138
+ 1  2/2
– 0  0/0

UzbekistanОтправить сообщение для Botirbek Samandarov с помощью Skype™Мой КругМой мир
Всем спасибо
Я просто забыл добавить конец строки
Код:
#include <iostream.h>
char *copystr(char *s, int sbegin, int send);
main()
{
cout <<"Satrni kiriting -> ";
char satr[256];
cin.getline(satr, 256);
cout<<copystr(satr, 5, 3);
}

char *copystr(char *s, int sbegin, int send)
{
int i,j=0;
char *rez = new char[send];
for (i=sbegin-1; i<sbegin+send-1; i++)
{
	rez[j]=s[i];
	j++;
}
rez[j]='\0';
return rez;
}
если ест другие варианты, жду

Последний раз редактировалось Botirbek Samandarov; 18.03.2009 в 11:01.
Ответить 
Старый 18.03.2009 11:21   #9  
Known ID Group uParty Member
Аватар для Dolphin
Оффлайн
Imperium of Man
Inquisitor
Сообщений: 5,990
+ 5,680  4,442/2,033
– 128  137/102

Russian FederationОтправить сообщение для Dolphin с помощью ICQОтправить сообщение для Dolphin с помощью Skype™Facebook
Код:
// string::substr
#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str="We think in generalities, but we live in details.";
                             // quoting Alfred N. Whitehead
  string str2, str3;
  size_t pos;

  str2 = str.substr (12,12); // "generalities"

  pos = str.find("live");    // position of "live" in str
  str3 = str.substr (pos);   // get from "live" to the end

  cout << str2 << ' ' << str3 << endl;

  return 0;
}
Ответить 
Старый 21.04.2009 09:30   #10  
Аватар для vcoder
Оффлайн
RedOxygen
Ведущий программист
Сообщений: 41
+ 1  6/5
– 0  1/1

Australia
Цитата:
Сообщение от Timur Rasulov Посмотреть сообщение
Судя по инклудам в стиле "<>", копилятор с++. Собственно класс стринга уже подключен. Почему бы не юзать стандартные процедуры для работы со строками? Или нужен код именно в ANSI C?
Тимур, Вы подтруниваете над человеком, который только начал изучение С++, однако Ваш код тоже не безупречен.
Все мы когда-то начинали...
Объявление всех переменных в самом начале функции это тоже стиль С, а не С++.

IMHO, так больше на С++ похоже:

Код:
// string::substr
#include <iostream>
#include <string>
using namespace std;

int main ()
{
  const string str = "We think in generalities, but we live in details.";
                             // quoting Alfred N. Whitehead

  const string str2 = str.substr (12,12); // "generalities"

  const size_t pos = str.find("live");    // position of "live" in str
  const string str3 = str.substr(pos);   // get from "live" to the end

  cout << str2 << ' ' << str3 << endl;

  return 0;
}
__________________
С уважением, Дмитрий
Ответить 
Ответить
Опции темы
Опции просмотра




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Advertisement System V2.5 By Branden
OOO «Единый интегратор UZINFOCOM»


Новые 24 часа Кто на форуме Новички Поиск Кабинет Все прочитано Вверх