Форум программистов, компьютерный форум CyberForum.ru

Строки(вывод) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
09.01.2010, 23:53     Строки(вывод) #1
такая проблема...
дана задача Вывести на экран последние 5 символов заданной строки. Длина строки должна быть не менее 10.





через функцию работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//---------------------------------------------------------------------------
 
 
#include <vcl.h>
#include <conio.h>
#include<iostream.h>
 
    void main()
{
char*str;
void fstr(char*s);
cout<<"vvedite stroku: " ;
cin>>str;
fstr(str);
}
void fstr(char*s)
{
cout<<"stroka posle :  " ;
for(int i=strlen(s)-5;i<strlen(s);i++)
{
 
 
cout<<*(s+i);
 
 
}
 
 
getch();
}




как все это сделать в void main()?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2010, 23:53     Строки(вывод)
Посмотрите здесь:

Вывод части строки C++
C++ Вывод строки
C++ Вывод строки в файл
C++ Вывод числа из строки
C++ Вывод строки на экран
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.01.2010, 00:01     Строки(вывод) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void main()
{
  char str[125];
  cout << "vvedite stroku: " ;
  cin >> str;
  
  cout<<"stroka posle :  " ;
 
  for(int i = strlen(str) - 5; i < strlen(str); i++)
    cout << *(str+i);
 
  getch();
}
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
10.01.2010, 00:22  [ТС]     Строки(вывод) #3
Спасибо! я так понимаю вся проблема в моем коде была в том , что не была определена длина строки?
Андрейка
410 / 214 / 24
Регистрация: 25.03.2009
Сообщений: 716
10.01.2010, 00:44     Строки(вывод) #4
либо
C++
1
2
char s[size];
       std::cin >> s;
либо
C++
1
char *s = "HELLO WORLD";
но не
C++
1
2
char *s;
       std::cin >> s;
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.01.2010, 01:48     Строки(вывод) #5
Цитата Сообщение от dmitryz Посмотреть сообщение
Спасибо! я так понимаю вся проблема в моем коде была в том , что не была определена длина строки?
В принципе можно считать, что так.
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
10.01.2010, 02:47  [ТС]     Строки(вывод) #6
Вывести на экран строку, начиная с последнего символа.



насколько я понимаю это делается через указатели))но вот как не знаю
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.01.2010, 02:59     Строки(вывод) #7
Цитата Сообщение от dmitryz Посмотреть сообщение
Вывести на экран строку, начиная с последнего символа.



насколько я понимаю это делается через указатели))но вот как не знаю
C++
1
2
3
4
char s[] = "abcde";
char *p = s + strlen(s) - 1;
for(; p >= s; p--)
    std::cout << *p;
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
10.01.2010, 03:14  [ТС]     Строки(вывод) #8
Цитата Сообщение от Gravity Посмотреть сообщение
C++
1
2
3
4
char s[] = "abcde";
char *p = s + strlen(s) - 1;
for(; p >= s; p--)
    std::cout << *p;





СПАСИБО!!! а как она работает..не могли бы вы объяснить, хотя бы вкратце.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.01.2010, 03:29     Строки(вывод) #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
 
using namespace std;
 
// Вывести на экран последние 5 символов заданной строки.
int main(){
    char str[128];
    size_t len;
    
    cout << "String: ";
    cin >> str;
    if ( ( len = strlen(str) ) < 5 ){
        cout << "Too short!" << endl;
        return 1;
    }
    cout << "Last 5 characters: " << (char*)( str + len - 5 ) << endl;
    return 0;
}
Добавлено через 12 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstring>
 
using namespace std;
 
// Вывести на экран строку, начиная с последнего символа.
int main(){
    char str[128];
    int len;
    
    cout << "String: ";
    cin >> str;
    for ( len = strlen(str) - 1; len >= 0; --len )
        cout << (char)str[len];
    cout << endl;
    return 0;
}
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
10.01.2010, 03:32  [ТС]     Строки(вывод) #10
Цитата Сообщение от easybudda Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
 
using namespace std;
 
// Вывести на экран последние 5 символов заданной строки.
int main(){
    char str[128];
    size_t len;
    
    cout << "String: ";
    cin >> str;
    if ( ( len = strlen(str) ) < 5 ){
        cout << "Too short!" << endl;
        return 1;
    }
    cout << "Last 5 characters: " << (char*)( str + len - 5 ) << endl;
    return 0;
}
Добавлено через 12 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstring>
 
using namespace std;
 
// Вывести на экран строку, начиная с последнего символа.
int main(){
    char str[128];
    int len;
    
    cout << "String: ";
    cin >> str;
    for ( len = strlen(str) - 1; len >= 0; --len )
        cout << (char)str[len];
    cout << endl;
    return 0;
}
Благодарю.Очень помог
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.01.2010, 03:34     Строки(вывод) #11
Цитата Сообщение от dmitryz Посмотреть сообщение
а как она работает..не могли бы вы объяснить, хотя бы вкратце.
Ставим указатель на конец строки, затем посимвольно смещаем его к началу, попутно выводя то, на что он указывает.
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
10.01.2010, 03:53  [ТС]     Строки(вывод) #12
Цитата Сообщение от Gravity Посмотреть сообщение
Ставим указатель на конец строки, затем посимвольно смещаем его к началу, попутно выводя то, на что он указывает.
отлично!!теперь понял)

Добавлено через 18 минут
Задача:посчитать количество пробелов в заданной строке.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <vcl.h>
#include <conio.h>
#include<iostream.h>
 
void main()
{
char str[125];
cout<<"vvedite stroku: " ;
cin>>str;
int b=0;
for(int i=0;i<strlen(str);i++)
{
if (*(str+i)=='a')
{
b++;
}
}
cout<<"koli4estvo a : "<<b;
getch();
}


как посчитать пробелы...потому что если ставить вместо 'a' , ' '. то он считает неправильно
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.01.2010, 04:06     Строки(вывод) #13
Цитата Сообщение от dmitryz Посмотреть сообщение
cin>>str;
У тебя популярная ошибка, когда строку считывают через cin, в этом случае чтение идет до первого пробела.
Для ввода char-строки поставь cin.get(str, sizeof(str)).
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
10.01.2010, 04:10  [ТС]     Строки(вывод) #14
Цитата Сообщение от Gravity Посмотреть сообщение
У тебя популярная ошибка, когда строку считывают через cin, в этом случае чтение идет до первого пробела.
Для ввода char-строки поставь cin.get(str, sizeof(str)).
Спасибо.Очень выручаешь)
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
10.01.2010, 05:31  [ТС]     Строки(вывод) #15
Вывести на экран заданную строку, но без чисел и гласных букв.



Каким образом из строки можно удалить все гласные буквы и числа, кроме как прописывать каждый символ руками в коде(ASCII использовать нельзя)?

Также надо учитывать заглавные буквы
и русский алфавит желательно



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <vcl.h>
#include <conio.h>
#include<iostream.h>
 
void main()
{
char str[125];
cout<<"vvedite stroku: " ;
cin.get(str, sizeof(str));
cout<<"stroka posle:";
for(int i=0;i<strlen(str);i++)
{
if (*(str+i)!='1')
if (*(str+i)!='2')
if (*(str+i)!='3')
if (*(str+i)!='4')
if (*(str+i)!='5')
if (*(str+i)!='6')
if (*(str+i)!='7')
if (*(str+i)!='8')
if (*(str+i)!='9')
if (*(str+i)!='0')
if (*(str+i)!='a')
if (*(str+i)!='q')
if (*(str+i)!='e')
if (*(str+i)!='y')
if (*(str+i)!='u')
if (*(str+i)!='i')
if (*(str+i)!='o')
cout<<*(str+i);
}
getch();
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.01.2010, 05:56     Строки(вывод) #16
Цитата Сообщение от dmitryz Посмотреть сообщение
и русский алфавит желательно
Это Вы уж сами как-нибудь
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
 
int isVowel(int c){
    static char vowels[] = "AEIOU";
    return ( strchr(vowels, toupper(c)) != NULL );
}
 
int main(void){
    char buf[BUFSIZ], *p;
    printf("String: ");
    if ( !fgets(buf, BUFSIZ, stdin) )
        exit(1);
    for ( p = buf; *p; ++p )
        if ( !isVowel(*p) && !isdigit(*p) )
            putchar(*p);
    exit(0);
}
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
10.01.2010, 16:42  [ТС]     Строки(вывод) #17
ВСЕМ ОГРОМНОЕ СПАСИБО!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2010, 01:44     Строки(вывод)
Еще ссылки по теме:

Некорректный вывод строки C++
C++ Вывод слов из строки
Ввод/вывод строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dmitryz
 Аватар для dmitryz
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 27
13.02.2010, 01:44  [ТС]     Строки(вывод) #18
Спасибо всем большое!Я сдал экзамен и C++ для меня закончился!!
Yandex
Объявления
13.02.2010, 01:44     Строки(вывод)
Ответ Создать тему

Метки
Строки
Опции темы

Текущее время: 15:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru