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

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

14.12.2011, 16:32. Показов 1001. Ответов 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 символов, содержащая слова, т.е....

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

7
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 2
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
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 2
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
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 2
15.12.2011, 02:13 8
Цитата Сообщение от go Посмотреть сообщение
И как же с двумерными массивами?
Прошу прощения, не понял вопроса В цикле само собой.
Тут кстати массив статический, можно вообще одним memcpy всю таблицу кинуть
0
15.12.2011, 02:13
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.12.2011, 02:13
Помогаю со студенческими работами здесь

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

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

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

Даны три слова. Напечатать те буквы слов, которые есть в одном из слов
Условие: Даны три слова. Напечатать только те буквы слов, которые есть только в одном из слов....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru