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

Центрирование - расположение строки s1 посередине строки s2 длины L. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
VolodiaVoz
 Аватар для VolodiaVoz
31 / 31 / 1
Регистрация: 17.11.2010
Сообщений: 140
17.07.2011, 18:38     Центрирование - расположение строки s1 посередине строки s2 длины L. #1
Центрирование - расположение строки s1 посередине строки s2 длины L. Свободные символы заполнить пробелы. Функция должна иметь вид void Center (L, s1, s2).
Нельзя использовать библиотеку <string.h> ...
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2011, 18:38     Центрирование - расположение строки s1 посередине строки s2 длины L.
Посмотрите здесь:

С++ ограничение длины строки C++
C++ Функция копирует строку в другую строку заданой длины и помещает текст первой строки по центру второй строки
C++ Ввести строку символов, если ее длина нечетная, удалить символ, стоящий посередине строки.
C++ Получение длины строки в пикселях?
Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
17.07.2011, 19:30     Центрирование - расположение строки s1 посередине строки s2 длины L. #2
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
#include <iostream>
 
using namespace std;
 
void center(int l, char* s1, char* s2)
{
    cout << s1 << endl;
    for(int i = 0; i < (strlen(s1)-strlen(s2))/2; i++)
        cout << " ";
    cout << s2 << endl; 
}
 
int main()
{
    int maxSize;
    cout << "Ââåäèòå äëèГ*Г*Гі: ";
    cin >> maxSize;
    char* s1;
    char* s2;
    s1 = new char[maxSize];
    s2 = new char[maxSize];
    cout << "Ââåäèòå ïåðâóþ ñòðîêó: " << endl;
    cin >> s1;
    cout << "Ââåäèòå âòîðóþ ñòðîêó: " << endl;
    cin >> s2;
    center(maxSize, s1, s2);
    return 0;   
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
17.07.2011, 19:40     Центрирование - расположение строки s1 посередине строки s2 длины L. #3
Не совсем по заданию, но наглядно...
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
 
#define CONS_WIDTH 80
 
int mystrlen(const char * s){
    const char * p;
    
    for ( p = s; *p; ++p )
        ;
        
    return p - s;
}
 
char * mystrcat(char * dst, const char * src){
    char * ret = dst;
    
    while ( *dst )
        ++dst;
    while ( *dst++ = *src++ )
        ;
    
    return ret;
}
 
 
char * aligned(const char * s, int width){
    int slen, pos;
    static char tmp[BUFSIZ];
    
    pos = 0;
    if ( ( slen = mystrlen(s) ) < width )
        for ( ; pos < ( width - slen ) / 2; ++pos )
            tmp[pos] = ' ';
    tmp[pos] = '\0';
    
    return mystrcat(tmp, s);
}
 
int main(void){
    const char * s1 = "Morgen, morgen, nur nicht heute,";
    const char * s2 = "sagen alle faulen Leute!";
    const char * ast = "******************************************************************************";
    
    printf("%s\n", aligned(ast, CONS_WIDTH));
    printf("%s\n", aligned(s1, CONS_WIDTH));
    printf("%s\n", aligned(s2, CONS_WIDTH));
    printf("%s\n", aligned(ast, CONS_WIDTH));
    
    return 0;
}
VolodiaVoz
 Аватар для VolodiaVoz
31 / 31 / 1
Регистрация: 17.11.2010
Сообщений: 140
17.07.2011, 19:52  [ТС]     Центрирование - расположение строки s1 посередине строки s2 длины L. #4
Mayonez, но здесь мы используем функцию strlen () а она из библиотеки string.h а ее не надо использовать. Если бы это изменить было бы все правильно!
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
17.07.2011, 20:46     Центрирование - расположение строки s1 посередине строки s2 длины L. #5
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
34
35
36
#include <iostream>
 
using namespace std;
 
int mystrlen(char* str)
{
    int i = 0;
    while(str[i]!='\0')
        i++;
    return i;   
}
 
void center(int l, char* s1, char* s2)
{
    cout << s1 << endl;
    for(int i = 0; i < (mystrlen(s1)-mystrlen(s2))/2; i++)
        cout << " ";
    cout << s2 << endl; 
}
 
int main()
{
    int maxSize;
    cout << "Ââåäèòå äëèГ*Г*Гі: ";
    cin >> maxSize;
    char* s1;
    char* s2;
    s1 = new char[maxSize];
    s2 = new char[maxSize];
    cout << "Ââåäèòå ïåðâóþ ñòðîêó: " << endl;
    cin >> s1;
    cout << "Ââåäèòå âòîðóþ ñòðîêó: " << endl;
    cin >> s2;
    center(maxSize, s1, s2);
    return 0;   
}
так?
VolodiaVoz
 Аватар для VolodiaVoz
31 / 31 / 1
Регистрация: 17.11.2010
Сообщений: 140
17.07.2011, 20:57  [ТС]     Центрирование - расположение строки s1 посередине строки s2 длины L. #6
Да ето верно!!! Спасибо ти мне очен помог!
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
17.07.2011, 20:59     Центрирование - расположение строки s1 посередине строки s2 длины L. #7
Мой вариант.
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
#include <stdio.h>
 
 
void   scenter(int len, const char*  s1, char*  s2) {
      int  sz = 0, i;
      const char* str =  s1;
      while( *str++)
           ++sz;
      for(i = 0; i < len / 2 - sz / 2; i++, ++s2)
           *s2 = ' ';
      while(*s1)
           *s2++ = *s1++;
      sz = len - (len / 2 + sz / 2);
      while(sz--)
           *s2++ = ' ';
      *s2 = '\0';
}
 
 
void   main(void) {
 
    char str[19];     // указываем на один больше + '\0'
    int    len = 18;
 
    scenter(len,  "ATOM", str);
    puts(str);
 
    getchar();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2011, 21:09     Центрирование - расположение строки s1 посередине строки s2 длины L.
Еще ссылки по теме:

Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки C++
C++ Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки)
C++ Автоопределение длины строки

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

Или воспользуйтесь поиском по форуму:
VolodiaVoz
 Аватар для VolodiaVoz
31 / 31 / 1
Регистрация: 17.11.2010
Сообщений: 140
17.07.2011, 21:09  [ТС]     Центрирование - расположение строки s1 посередине строки s2 длины L. #8
Тоже не плохо!!!

У меня еще одна программка по строковых переменных:
Установка L символов строки s в значение t, начиная с позиции n. Функция StrSet (s, n, L, t).
Также не использовать библиотеку <string.h> это важно!
Заранее спасибо!
Yandex
Объявления
17.07.2011, 21:09     Центрирование - расположение строки s1 посередине строки s2 длины L.
Ответ Создать тему
Опции темы

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