Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C/C++] Строки

43K
21 мая 2009 года
InterWay
17 / / 21.05.2009
Помогите с решением. Спасибо. Язык Borland C++

Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L четная, то удаляются 2 первых и 2 последних символа.

вот код на Visual C++.
не могу переделать под Borland С++
#include <iostream>
#include <string>
int main()
{
std::string str;
std::getline(std::cin, str);
if (!(str.length()%2)&&(str.length()>4))
{
str.erase(0,2);
str.erase(str.length()-2,2);
std::cout << str << std::endl;
}
return 0;
}
-----------------------------------
9
21 мая 2009 года
Lerkin
3.0K / / 25.03.2003
Версия Borland C++? Просто номер версии.
43K
21 мая 2009 года
InterWay
17 / / 21.05.2009
Borland C++ 5.02
9
21 мая 2009 года
Lerkin
3.0K / / 25.03.2003
А так не заработает?
Код:
#include <iostream.h>
#include <string.h>
using namespace std;

int main()
{
    string str;

    getline(cin, str);
    if (!(str.length() % 2) && (str.length() > 4))
    {
        str.erase(0, 2);
        str.erase(str.length() - 2, 2);
        cout << str << endl;
    }

    return 0;
}


Какие ошибки даёт?
43K
21 мая 2009 года
InterWay
17 / / 21.05.2009
ошибки в скрине.
дело в том что Borland C++ не понимает коды с Visual C++. Нужен старый код СИ.
9
21 мая 2009 года
Lerkin
3.0K / / 25.03.2003
Блин, неохота 5-ку борландовскую ставить. но если подождешь - поможем (если раньше не поможут ;)). На С переписывать - геморно очень.

А принципиально использовать Borland C++ 5.02?
43K
21 мая 2009 года
InterWay
17 / / 21.05.2009
да... обязательно(
времени чуть есть, буду ждать, да и других вариантов нет(
спс)))
9
22 мая 2009 года
Lerkin
3.0K / / 25.03.2003
Ну, попробуй эту бяку:

Код:
#include <stdio.h>
#include <string.h>
#include <malloc.h>

int main()
{
    char* p = (char*)malloc(256);
    scanf( "%254s", p );

    if (!(strlen( p ) % 2) && (strlen( p ) > 4))
    {
    char* str = p + 2;
    *(str + strlen( str ) - 2) = '\0';
    printf( "%s\n", str );
    }

    free( p );

    return 0;
}
43K
22 мая 2009 года
InterWay
17 / / 21.05.2009
Запускается, но после ввода символов при нажатии Enter выкидывает из программы(
9
22 мая 2009 года
Lerkin
3.0K / / 25.03.2003
Из консольки запускай, она просто не успевает показаться. Или допиши:
Код:
#include<conio.h>
...

int main
{
    ...


    while( !kbhit() );

    return 0;
}
43K
22 мая 2009 года
InterWay
17 / / 21.05.2009
ммм... даже не знаю дописал. всё тоже самое.
запускаю из консоли.
9
22 мая 2009 года
Lerkin
3.0K / / 25.03.2003
Просто скопируй:
Код:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <conio.h>

int main()
{
    char* p = (char*)malloc(256);
    scanf( "%254s", p );

    if (!(strlen( p ) % 2) && (strlen( p ) > 4))
    {
    char* str = p + 2;
    *(str + strlen( str ) - 2) = '\0';
    printf( "%s\n", str );
    }

    free( p );

    while( !kbhit() );

    return 0;
}

Все работает...
43K
22 мая 2009 года
InterWay
17 / / 21.05.2009
Да, всё работает. Огромное спасибо.

ЗЫ Это конечно мне не обязательно, но самому интересно: можете дать пояснение, какая функция что делает? Хочу разобраться
9
22 мая 2009 года
Lerkin
3.0K / / 25.03.2003
Простая работа с указателями.
Код:
// тут выделяем память под 256 символов
    char* p = (char*)malloc(256);

    // тут читаем строку с клавиатуры (не больше 254 символов)
    scanf( "%254s", p );

    // strlen - узнать длину строки
    if (!(strlen( p ) % 2) && (strlen( p ) > 4))
    {

    // убираем 2 символа спереди
    char* str = p + 2;

    // убираем 2 символа сзади
    *(str + strlen( str ) - 2) = '\0';

    // выводим на экран
    printf( "%s\n", str );
    }

    // освобождаем выделенную под строку память
    free( p );

    // ждем, пока юзер не нажмет anykey (чтобы успеть увидеть результат на экране
    while( !kbhit() );

    // выходим в ОС
    return 0;
}
43K
22 мая 2009 года
InterWay
17 / / 21.05.2009
Ещё раз спасибо))) Утро вечера мудренее, завтра буду разбираться более подробно)

ЗЫ (я наглею)))) Есть ещё одна задача, с Массивами, решенная, только я не понимаю там код, что и как делалось. Смог бы прокомментировать?
9
22 мая 2009 года
Lerkin
3.0K / / 25.03.2003
Цитата: InterWay
Ещё раз спасибо))) Утро вечера мудренее, завтра буду разбираться более подробно)

ЗЫ (я наглею)))) Есть ещё одна задача, с Массивами, решенная, только я не понимаю там код, что и как делалось. Смог бы прокомментировать?


Можно попробовать.

43K
22 мая 2009 года
InterWay
17 / / 21.05.2009
Определить, является ли заданная целая квадратная матрица размером N ортонормированной, т.е. такой, в которой скалярное произведение каждой пары различных строк равно 0, а скалярное произведение каждой строки на себя равно 1.

Код:
int main()
{
int a[10][10];
int i,j,n,p,t,y,r;
cout<<"Vvedite razmernost matrici: ";
if(n<10)if(n>0)cin>>n;
cout<<endl;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
cout<<"A["<<i<<","<<j<<"]= ";
cin>>a[j];
}
t=0;
y=0;
r=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
p+=a[j]*a[j];
}
if(p==1){y++; p=0;}else{p=0;}
}
p=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
p+=a[j]*a[i+1][j];
}
if(p==0){p=0;r++;}else p=0;
}
if(r==n-1)y=(y+n);
if(y==2*n){cout<<"Matrica ortonormirovannaya!!!! ";}else{cout<<"Matrica ne ortonormirovannaya!!!!";}
for(i=0;i<n;i++)
{
cout<<" "<<endl;
for(j=0;j<n;j++)
{
cout<<" "<<a[j];
}
}
getch();
return 0;
}


Кстати, не факт, что программа работает правильно.
9
22 мая 2009 года
Lerkin
3.0K / / 25.03.2003
А что именно не ясно? Алгоритм, или функции\ключевые слова\и т.д.?

P.S. Нихрена она не правильная. С самых первых строк.
43K
22 мая 2009 года
InterWay
17 / / 21.05.2009
Непонятно всё что ты перечислил...)))
Млин... плохо(((
9
22 мая 2009 года
Lerkin
3.0K / / 25.03.2003
Цитата: InterWay
Непонятно всё что ты перечислил...)))
Млин... плохо(((


Извиняй браток. Программированию не обучаю ;)

43K
22 мая 2009 года
InterWay
17 / / 21.05.2009
Ну это да))) Мне как в прошлой задаче, комментарии к функциям, дальше я сам как-нибудь)
9
22 мая 2009 года
Lerkin
3.0K / / 25.03.2003
Легко.

cout - вывод на экран
cin - чтение из клавиатуры
endl - завершение строки вывода
getch() - ожидание нажатия anykey (как в прошлом примере)

А остальные страшности - ключевые слова языка (организация циклов и проверка по условиям (ветвление) ).
43K
22 мая 2009 года
InterWay
17 / / 21.05.2009
Спасибо и на этом))) Помог мне сегодня оочень. СПС) :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог