Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 19
1

Найти слова, которые удовлетворяют условию: длина слов максимальна

14.12.2011, 16:32. Показов 1020. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача на Си:
Дана не пустая последовательность слов (не более 50), в каждом слове не больше 8 символов. Слова разделены пробелами, за последним словом стоит точка. Найти слова, которые удовлетворяют условию: длина слов максимальна.

Вот что написал:
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
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define N 9 
#define M 50
 
void main(){
 
int z, max=0;
 
char ch = ' ', a[M][N], d[M][N];
int i=0, j=0, t=0;
 
while (ch!= '.')
{
    scanf_s("%c", &ch);
 
    while (ch != ' ' && ch != '.')
    {
        a[i][j] = ch;
        j++;
        scanf("%c", &ch);
    }
    a[i][j]='\0'; 
    i++;
    j=0;
}
 
z = strlen (a[j]);
 
t = 0;
i=0;
while (a[i] != '\0'){
    if (z>max){
        max = z;
        t=1;
        d[t] = a[i];
    } else if (z == max){
        t = t+1;
        d[t] = a[i];
    }
    i++;
}
 
}
ругается в этих местах: d[t] = a[i]
error C2106: '=' : left operand must be l-value
Что делаю не так?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.12.2011, 16:32
Ответы с готовыми решениями:

Найти те слова, которые отличаются от последнего слова и длина слов максимальная
Дана непустая последовательность слов (не более 50), в каждом слове не более восьми символов. Слова разделены пробелом, за последним словом...

Вывести те слова, которые отличаются от последнего слова и удовлетворяют условию
Дана строка длиной n символов, содержащая слова, т.е. группы символов, разделенные пробелами и другими разделителями (знаками ...

Вывести те слова, которые отличаются от последнего слова и удовлетворяют условию
Помогите,пожалуйста,написать программу. Дана строка длиной n символов, содержащая слова, т.е. группы символов, разделенные пробелами и...

7
Эксперт С++
 Аватар для fasked
5044 / 2623 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
14.12.2011, 16:35 2
Цитата Сообщение от Antojkee Посмотреть сообщение
Что делаю не так?
d - двумерный массив, Вы к нему обращаетесь как к одномерному. d[i] в данном случае будет указатель, а d[i][j] - символ.
Цитата Сообщение от Antojkee Посмотреть сообщение
a[i] != '\0'
Всегда истинно. По той же причине.
0
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 19
14.12.2011, 16:51  [ТС] 3
Цитата Сообщение от fasked Посмотреть сообщение
d - двумерный массив, Вы к нему обращаетесь как к одномерному. d[i] в данном случае будет указатель, а d[i][j] - символ.

Всегда истинно. По той же причине.
Как тогда всю строку из одного двумерного массива присвоить другому?
0
Эксперт С++
 Аватар для fasked
5044 / 2623 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
14.12.2011, 16:56 4
Цитата Сообщение от Antojkee Посмотреть сообщение
Как тогда всю строку из одного двумерного массива присвоить другому?
Используйте функцию strcpy
1
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 19
14.12.2011, 21:33  [ТС] 5
Цитата Сообщение от fasked Посмотреть сообщение
Используйте функцию strcpy
исправил на strcpy (d[t], a[i]);

программа запускается, но выдает ошибку в процессе работы:
Unhandled exception at 0x0100107d in laba4.exe: 0xC0000005: Access violation writing location 0x00000000.
Добавлено через 4 часа 20 минут
Вроде бы всё исправил, кроме этого:
Цитата Сообщение от fasked Посмотреть сообщение
a[i] != '\0'
Всегда истинно. По той же причине.
Как это исправить? тоже через какую-то функцию?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2011, 21:45 6
Цитата Сообщение от fasked Посмотреть сообщение
Используйте функцию strcpy
И как же с двумерными массивами?
Цитата Сообщение от Antojkee Посмотреть сообщение
исправил на strcpy (d[t], a[i]);
программа запускается, но выдает ошибку в процессе работы:
Используйте strncpy...

Добавлено через 4 минуты
А вообще лучше так
C
1
2
3
4
5
6
7
8
char *A[N];
char buf[BUFSIZ];
 
for ( i = 0 ; i < N ; ++i )
{
        fgets (buf, BUFSIZ, stdin);
        A[i] = strdup (buf);
}
1
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 19
14.12.2011, 23:37  [ТС] 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define N 8
#define M 50
 
void main(){
 
int max=0;
 
char ch = ' ', a[M][N], d[50][N];
int i=0, j=0, t=0,k;
 
while (ch!= '.')
{
    scanf("%c", &ch);
 
    while (ch != ' ' && ch != '.')
    {
        a[i][j] = ch;
        j++;
        scanf("%c", &ch);
    }
    a[i][j]='\0'; 
    i++;
    j=0;
}
k = i-1;
max = 0;
i=0;
 
while (i <= k){
    if ((strstr(a[i],a[k])) == NULL){
        if ( strlen (a[i]) > max ){
            max = strlen (a[i]) ;   
            t=0;
            strcpy (d[t], a[i]);
        } else if (strlen (a[i]) == max){
            t = t+1;
            strcpy (d[t], a[i]);
        }
    }
    i++;
}
 
k=t;
 
for (t = 0; t <= k; t++ ) puts(d[t]);
 
_getch();
}
Всем спасибо за помощь
0
Эксперт С++
 Аватар для fasked
5044 / 2623 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
15.12.2011, 02:13 8
Цитата Сообщение от go Посмотреть сообщение
И как же с двумерными массивами?
Прошу прощения, не понял вопроса В цикле само собой.
Тут кстати массив статический, можно вообще одним memcpy всю таблицу кинуть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.12.2011, 02:13
Помогаю со студенческими работами здесь

Найти слова отличающиеся от последнего и длина слова максимальна
Дана непустая последовательность слов (не более 50), в каждом слове не более восьми символов. Слова разделены пробелом, за последним словом...

Строки. Напечатать слова, длина которых максимальна
Спасибо заранее за помощь

Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству
Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству в слове Нет повторяющихся букв

Найти среднюю длину слов и удалить из текста все слова длина, которых меньше найденного значения
Найти среднюю длину слов и удалить из текста все слова длина, которых меньше найденного значения. Количество слов уже нашёл, а вот как...

Даны три слова. Напечатать те буквы слов, которые есть в одном из слов
Условие: Даны три слова. Напечатать только те буквы слов, которые есть только в одном из слов. *Повторяющиеся буквы каждого слова...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
Tестирование Pull Request в Kubernetes с помощью vCluster
stackOverflow 03.03.2025
При работе с микросервисной архитектурой критически важно обеспечить качественное тестирование каждого изменения перед его слиянием в основную кодовую базу. Однако тестирование Pull Request в. . .
Использование пакета Context в Golang
bytestream 03.03.2025
Управление параллельными процессами в современных приложениях - сложная задача, особенно когда речь идет о микросервисной архитектуре и распределенных системах. Пакет context в Go - это гибкое. . .
WebAssembly и Go: Работа с DOM и обработка ошибок
bytestream 03.03.2025
WebAssembly представляет собой технологию, позволяющую запускать низкоуровневый код в браузере практически на нативной скорости. Особенно интересные возможности открываются при использовании. . .
WebAssembly и Go: Создание высокопроизводи­­тельных веб-приложений
bytestream 03.03.2025
WebAssembly - это технология, изменившая подход к созданию высокопроизводительных веб-приложений. До появления WebAssembly JavaScript оставался единственным языком программирования, который понимали. . .
Контексты в Go: отмена, тайм-ауты и распространение
bytestream 03.03.2025
В многопоточном программировании существует множество ситуаций, когда необходимо прерывать выполнение горутин или ограничивать время их работы. Отсутствие грамотного управления параллельными. . .
WebSocket в Go: создание масштабируемых real-time приложений
bytestream 03.03.2025
Веб-приложения все чаще требуют обработки данных в режиме реального времени. Традиционный подход с использованием HTTP-запросов имеет существенные ограничения для таких сценариев. При каждом запросе. . .
Как дебажить в Go: Руководство по отладке
bytestream 03.03.2025
Отладка в Go имеет свои особенности, связаные с строгой типизацией, моделью конкурентности и управлением памятью. Go предоставляет богатый набор встроеных средств для отладки, которые дополняются. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru