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

Не знаю как выполнить - C++

Восстановить пароль Регистрация
 
Игорь Исаев
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 11
26.01.2012, 16:11     Не знаю как выполнить #1
Помогите пожалуйста с этой задачей:
Напишите функцию void compare (char str1, char str2), сравнивающую 2 символьных массива. Функция main должна считывать две строки с клавиатуры, вызывать функцию compare, вывести результат её работы на экран.
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
26.01.2012, 16:18     Не знаю как выполнить #2
Хм, а как быть с длиной массива? Ее бы тоже передавать как параметр в функцию compare.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.01.2012, 16:19     Не знаю как выполнить #3
C
1
2
3
4
void compare(char* s1, char* s2)
{
   printf ("%d", strcmp(s1, s2));
}
Игорь Исаев
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 11
26.01.2012, 16:26  [ТС]     Не знаю как выполнить #4
Ребят тут больше ничего не написано про массив...у меня сейчас экзамен, всеми способами стараюсь найти решение этой задачи.

Добавлено через 26 секунд
Цитата Сообщение от go Посмотреть сообщение
C
1
2
3
4
void compare(char* s1, char* s2)
{
   printf ("%d", strcmp(s1, s2));
}

это вся функция?
Pavel.fromBy
 Аватар для Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
26.01.2012, 16:27     Не знаю как выполнить #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void compare(char *str1, char *str2)
{
    if (strlen(str1) < strlen(str2))
    { cout << "Вторая строка больше!" << endl; return; }
    if (strlen(str1) > strlen(str2))
    { cout << "Первая строка больше!" << endl; return; }
 
    int a = strlen(str1);
    for (int i = 0; i < a; i++)
    {
        if (str1[i] > str2[i])
        { cout << "Первая строка больше!" << endl; return; }
        if (str1[i] < str2[i])
        { cout << "Вторая строка больше!" << endl; return; }
    }
 
    cout << "Строки равны!" << endl;            
}
p.s. не проверял, раз экзамен
p.s.s. Раз просят написать это, вряд ли разрешено использовать strcmp. Смысл писать функцию в 1 строку? Почесать правое ухо левой рукой?
Игорь Исаев
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 11
26.01.2012, 16:29  [ТС]     Не знаю как выполнить #6
Это точно эта функция? То что написано русскими буквами красным цветом нужно менять? Ребят извените за вопросы если что просто я не очень пока что рублю в программировании
Pavel.fromBy
 Аватар для Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
26.01.2012, 16:32     Не знаю как выполнить #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
#include <iostream>
#include <locale>
 
using std::cout;
using std::cin;
using std::endl;
 
void compare(char *, char *);
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    char *str1 = new char[20];
    char *str2 = new char[20];
 
    cout << "Введите первую строку: ";
    cin.getline(str1, 20);
    cout << "Введите вторую строку: ";
    cin.getline(str2, 20);
 
    compare(str1, str2); 
 
    return 0;
}
Игорь Исаев
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 11
26.01.2012, 16:34  [ТС]     Не знаю как выполнить #8
Да, тут пишут: "Функция main должна считывать две строки с клавиатуры вызывать функцию compare и вывести результат её работы на экран"
Pavel.fromBy
 Аватар для Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
26.01.2012, 16:36     Не знаю как выполнить #9
Выше смотри
Игорь Исаев
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 11
26.01.2012, 16:41  [ТС]     Не знаю как выполнить #10
Вторая функция это решение?
Pavel.fromBy
 Аватар для Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
26.01.2012, 16:43     Не знаю как выполнить #11
Копируй и компилируй
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
#include <iostream>
#include <locale>
 
using std::cout;
using std::cin;
using std::endl;
 
void compare(char *, char *);
 
int main()
{
        setlocale(LC_ALL, "rus");
 
        char *str1 = new char[20];
        char *str2 = new char[20];
 
        cout << "Введите первую строку: ";
        cin.getline(str1, 20);
        cout << "Введите вторую строку: ";
        cin.getline(str2, 20);
 
        compare(str1, str2); 
 
        return 0;
}
 
void compare(char *str1, char *str2)
{
        if (strlen(str1) < strlen(str2))
        { cout << "Вторая строка больше!" << endl; return; }
        if (strlen(str1) > strlen(str2))
        { cout << "Первая строка больше!" << endl; return; }
 
        int a = strlen(str1);
        for (int i = 0; i < a; i++)
        {
                if (str1[i] > str2[i])
                { cout << "Первая строка больше!" << endl; return; }
                if (str1[i] < str2[i])
                { cout << "Вторая строка больше!" << endl; return; }
        }
 
        cout << "Строки равны!" << endl;                        
}
Игорь Исаев
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 11
26.01.2012, 16:49  [ТС]     Не знаю как выполнить #12
Скопировал, жму Ctrl+F5 пишет что обнаружена ошибка: fatal error C1071: непредвиденное обнаружение конца файла в комментарии
1>
Pavel.fromBy
 Аватар для Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
26.01.2012, 16:51     Не знаю как выполнить #13
Visual Studio 2010 полет нормальный... Какой у тебя компилятор?
p.s. ты код без номеров строк копировал? Все, что в окошке нужно. Без 1 ... 2... 3... ..... 10
Игорь Исаев
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 11
26.01.2012, 17:07  [ТС]     Не знаю как выполнить #14
Это учебный компьютер, в аудитории Я незнаю что тут что, честно говоря...

Добавлено через 6 минут
Да конечно я без цифр скопировал

Добавлено через 6 минут
никак не хочет выводить результат..
Pavel.fromBy
 Аватар для Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
26.01.2012, 17:18     Не знаю как выполнить #15
Убрал локализацию, добавил использование всего пр-ва std. Но это бред. Я не знаю Попробуй:
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
#include <iostream>
 
using namespace std;
 
void compare(char *, char *);
 
int main()
{
        char *str1 = new char[20];
        char *str2 = new char[20];
 
        cout << "Vvedite pervyiy stroky: ";
        cin.getline(str1, 20);
        cout << "Vvedite vtoryy stroky: ";
        cin.getline(str2, 20);
 
        compare(str1, str2); 
 
        return 0;
}
 
void compare(char *str1, char *str2)
{
        if (strlen(str1) < strlen(str2))
        { cout << "Vtoraya bol'she!" << endl; return; }
        if (strlen(str1) > strlen(str2))
        { cout << "Pervaya bol'she!" << endl; return; }
 
        int a = strlen(str1);
        for (int i = 0; i < a; i++)
        {
                if (str1[i] > str2[i])
                { cout << "Pervaya bol'she!" << endl; return; }
                if (str1[i] < str2[i])
                { cout << "Vtoraya bol'she!" << endl; return; }
        }
 
        cout << "Stroki ravni" << endl;                        
}
p.s. Программа кстати на C++?
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
26.01.2012, 17:21     Не знаю как выполнить #16
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
#include <iostream>
#include <locale>
 
using std::cout;
using std::cin;
using std::endl;
 
void compare(char *, char *);
 
int main()
{
        setlocale(LC_ALL, "rus");
 
        char *str1 = new char[20];
        char *str2 = new char[20];
 
        cout << "Введите первую строку: ";
        cin.getline(str1, 20);
        cout << "Введите вторую строку: ";
        cin.getline(str2, 20);
 
        compare(str1, str2); 
 
        return 0;
}
 
void compare(char *str1, char *str2)
{
        if (strlen(str1) < strlen(str2))
        { cout << "Вторая строка больше!" << endl; return; }
        if (strlen(str1) > strlen(str2))
        { cout << "Первая строка больше!" << endl; return; }
 
        int a = strlen(str1);
        for (int i = 0; i < a; i++)
        {
                if (str1[i] > str2[i])
                { cout << "Первая строка больше!" << endl; return; }
                if (str1[i] < str2[i])
                { cout << "Вторая строка больше!" << endl; return; }
        }
 
        cout << "Строки равны!" << endl;                        
}
для не особо понятливых слепил два сообщения от Pavel.fromBy
Pavel.fromBy
26.01.2012, 17:24
  #17

Не по теме:

co6ak, Pavel.fromBy слепил их более 2ух постов назад

co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
26.01.2012, 17:26     Не знаю как выполнить #18
Цитата Сообщение от Pavel.fromBy Посмотреть сообщение

Не по теме:

co6ak, Pavel.fromBy слепил их более 2ух постов назад

не бывает, что уж
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2012, 17:31     Не знаю как выполнить
Еще ссылки по теме:

C++ Не знаю как отсортировать
Не знаю как реализовать C++
C++ Не знаю как написать

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

Или воспользуйтесь поиском по форуму:
Игорь Исаев
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 11
26.01.2012, 17:31  [ТС]     Не знаю как выполнить #19
Спасибо за помощь
Yandex
Объявления
26.01.2012, 17:31     Не знаю как выполнить
Ответ Создать тему
Опции темы

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