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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Flashik66
17 / 9 / 7
Регистрация: 05.11.2012
Сообщений: 119
#1

Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. - C++

12.03.2014, 19:08. Просмотров 454. Ответов 13
Метки нет (Все метки)

Вывести на консоль те строки, длина которых меньше (больше) средней, а
также длину.
Собственно вот проблема..Мне помогали писать данную программу но она что-то все равно не работает. Она просто тупо зависает. Может кто помочь объяснить что в ней не так? Мб я просто неправильно заполняю строки?

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>
#include <conio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
    char str[100][256];// 100 строк длиной <256
    int avg,len,i;
// заполнил 2 строки
    strcpy(str[1], "user1");
    strcpy(str[13], "userr1");
    
    avg=0;
    for(i=0;i<100;i++)
    {
           len=strlen(str[i]);
           avg+=len;
    }
    avg/=100;
    for(i=0;i<100;i++)
    {
           len=strlen(str[i]);
           if(len<avg)
               printf("%s %len\n",str[i],len);
    }
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2014, 19:08     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину.
Посмотрите здесь:

Определить количество слов в строке, длина которых меньше заданного числа К C++
C++ Перепишите из входного файла в выходной только те строки, длина которых меньше 70
Напечатать все строки, длина которых меньше заданного числа C++
C++ Определить среднюю длину строк в тексте и вывести строки с длиной меньше средней
C++ Удаление из строки слов, длина которых меньше заданной
Ввести строку. Выдать все слова, которые имеют длину больше, чем длина последнего слова строки C++
C++ Из заданной строки удалить слова, длина которых меньше указанной.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
saden
 Аватар для saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
12.03.2014, 19:16     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #2
строки автоматически не обнуляются, strlen может работать некорректно
Flashik66
17 / 9 / 7
Регистрация: 05.11.2012
Сообщений: 119
12.03.2014, 22:24  [ТС]     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #3
А как можно поправить?
saden
 Аватар для saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
12.03.2014, 22:26     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #4
Обнулить в цикле
Или уменьшить кол-во на время дизайна и задать все строки
Flashik66
17 / 9 / 7
Регистрация: 05.11.2012
Сообщений: 119
12.03.2014, 22:30  [ТС]     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #5
я попробовал поставить 4 и заполнил 4 строки. Но все равно. Программа при запуске зависает...

Вот что сделал:

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
    char str[4][256];// 100 ñòðîê äëèГ*îé <256
    int avg,len,i;
// Г§Г*ïîëГ*ГЁГ« 2 ñòðîêè
    strcpy(str[1], "user1");
    strcpy(str[2], "userr1");
    strcpy(str[3], "userrr1");
    strcpy(str[4], "userrrr1");
    
    avg=0;
    for(i=0;i<4;i++)
    {
           len=strlen(str[i]);
           avg+=len;
    }
    avg/=4;
    for(i=0;i<4;i++)
    {
           len=strlen(str[i]);
           if(len<avg)
               printf("%s %len\n",str[i],len);
    }
    getch();
    return 0;
}
saden
 Аватар для saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
12.03.2014, 22:31     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #6
ну-у-у,
нумерация массива идет с нуля
str[4] - причина висяка
Flashik66
17 / 9 / 7
Регистрация: 05.11.2012
Сообщений: 119
12.03.2014, 22:35  [ТС]     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #7
Так это количество строк. Смысл ставить там 0? 4 строки размером 256? Я просто не очень силен..прошу объяснять подробнее если не сложно..
saden
 Аватар для saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
12.03.2014, 22:36     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #8
C++
1
2
3
4
strcpy(str[0], "user1");
strcpy(str[1], "userr1");
strcpy(str[2], "userrr1");
strcpy(str[3], "userrrr1");
Flashik66
17 / 9 / 7
Регистрация: 05.11.2012
Сообщений: 119
12.03.2014, 22:37  [ТС]     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #9
Я так сделал но все равно тоже самое..

Добавлено через 36 секунд
Пишет Debug error
saden
 Аватар для saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
12.03.2014, 22:37     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #10
тогда еще раз код полностью
Flashik66
17 / 9 / 7
Регистрация: 05.11.2012
Сообщений: 119
12.03.2014, 22:39  [ТС]     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
    char str[4][256];// 100 ñòðîê äëèГ*îé <256
    int avg,len,i;
// Г§Г*ïîëГ*ГЁГ« 2 ñòðîêè
    strcpy(str[0], "user1");
    strcpy(str[1], "userr1");
    strcpy(str[2], "userrr1");
    strcpy(str[3], "userrrr1");
    
    avg=0;
    for(i=0;i<4;i++)
    {
           len=strlen(str[i]);
           avg+=len;
    }
    avg/=4;
    for(i=0;i<4;i++)
    {
           len=strlen(str[i]);
           if(len<avg)
               printf("%s %len\n",str[i],len);
    }
    getch();
    return 0;
}
Вот со всеми последними поправками.
saden
 Аватар для saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
12.03.2014, 22:42     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #12
printf("%s %len\n",str[i],len);
->
printf("%s %d\n",str[i],len);
Flashik66
17 / 9 / 7
Регистрация: 05.11.2012
Сообщений: 119
12.03.2014, 22:43  [ТС]     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #13
Все работает! Спасибо огромное! Можете только объяснить что было не так и почему заработало? Чтобы я смог понять ошибки..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2014, 22:46     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину.
Еще ссылки по теме:

Удалить из строки все слова, длина которых меньше пяти символов C++
Вывести на экран строки длиной больше 5 и меньше 20 символов из контейнера multiset<string> C++
C++ Определить длину введенной строки, и, если длина больше заданной, то удалить символы от a до z
C++ Массив структур: вывести информацию об изданиях стоимостью меньше средней
C++ Вывести все слова из строки длина которых меньше заданной

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

Или воспользуйтесь поиском по форуму:
saden
 Аватар для saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
12.03.2014, 22:46     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. #14
такой вот он printf
Yandex
Объявления
12.03.2014, 22:46     Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину.
Ответ Создать тему
Опции темы

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