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

Работа с текстовым документом

15.09.2021, 07:27. Показов 1760. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
. Можно ли убрать из последовательности один элемент таким образом, чтобы
вся оставшаяся последовательность состояла из равных элементов? (последовательность из текстового документа)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2021, 07:27
Ответы с готовыми решениями:

Строки и работа с текстовым документом
Тип мне нужно найти наименьшую строку в текстовом документе и изменить ее. В общем я застрял на...

Как перевести программу с C# (работа с текстовым документом)
Пожалуйста помогите, у меня есть готовая программа на С# как мне её можно перекрутить на С ? вот...

Работа с текстовым файлом
Задача: В текстовом файле хранится некоторый текст. Определить количество строк, в которых...

Работа с текстовым файлом
В текстовом файле в первой и второй строке записано по 10 чисел.Считать данные из текстового файла...

31
Модератор
2668 / 1787 / 931
Регистрация: 16.10.2013
Сообщений: 5,154
Записей в блоге: 15
15.09.2021, 12:19 2
Цитата Сообщение от Dffftyyyt Посмотреть сообщение
. Можно ли убрать из последовательности один элемент таким образом, чтобы
вся оставшаяся последовательность состояла из равных элементов? (последовательность из текстового документа)
пример выходных и выходных данных напишите.
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
15.09.2021, 12:29  [ТС] 3
На вход любые числа, а на выходе должно быть написано "да" или "нет"
0
из племени тумба-юбма
2482 / 1804 / 418
Регистрация: 29.11.2015
Сообщений: 8,755
Записей в блоге: 15
15.09.2021, 16:39 4
Цитата Сообщение от Dffftyyyt Посмотреть сообщение
На вход любые числа, а на выходе должно быть написано "да" или "нет"
Не понял, должно просто сравниваться предыдущее число с последующим и писать равно, или не равно?
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
15.09.2021, 16:45  [ТС] 5
Я так понимаю надо посчитать количество разных чисел. И если оно больше 2, значит убрать 1 элемент так, чтобы все остальные были одинаковыми нельзя. А как это написать на СИ я не знаю.
0
из племени тумба-юбма
2482 / 1804 / 418
Регистрация: 29.11.2015
Сообщений: 8,755
Записей в блоге: 15
15.09.2021, 16:53 6
Цитата Сообщение от Dffftyyyt Посмотреть сообщение
И если оно больше 2, значит убрать 1 элемент так, чтобы все остальные были одинаковыми
Как такое возможно? Если из группы разных чисел убрать одно число, остальные числа не станут одинаковыми.

Добавлено через 1 минуту
Или группа чисел должна состоять из равных чисел, кроме одного.
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
15.09.2021, 16:56  [ТС] 7
Да, если больше 2 разных чисел на экране должно появиться "No" если меньше. "yes"
0
из племени тумба-юбма
2482 / 1804 / 418
Регистрация: 29.11.2015
Сообщений: 8,755
Записей в блоге: 15
15.09.2021, 22:32 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
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    int a, n=0, flag=0; 
    FILE *READ = fopen("f1.txt", "r");
    if(READ)
    {
        while(fscanf(READ, "%d", &a) == 1) n++;
        int *arr = (int*)malloc(n * sizeof(int));
        fseek(READ, 0, SEEK_SET);
 
        for(int i=0; i<n; i++)
            fscanf(READ, "%d", &arr[i]);
        fclose(READ);
 
        for(int i=0; i<n-1; i++)
            for(int j=i+1; j<n; j++)
                if(arr[i] > arr[j])
                {
                    arr[i] += arr[j];
                    arr[j] = arr[i] - arr[j];
                    arr[i] -= arr[j];
                }
 
        if(arr[0]==arr[1] && arr[n-2]==arr[n-1] && arr[0]!=arr[n-1]) flag++;
        if(arr[n-1]!=arr[n-2] || arr[n-2]!=arr[n-3]) flag++;
        free(arr);
        puts(flag == 0 ? "Yes" : "No");
    }
    else puts("Open file error");
    return 0;
}
1
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
15.09.2021, 22:36  [ТС] 9
Спасибо большое!!
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
16.09.2021, 09:29  [ТС] 10
Вот у меня ещё один вопрос. Эта программа даёт "No" даже если в последовательности всего 1 число не равное остальным. Подскажите пожалуйста как это исправить.
0
из племени тумба-юбма
2482 / 1804 / 418
Регистрация: 29.11.2015
Сообщений: 8,755
Записей в блоге: 15
16.09.2021, 10:34 11
Dffftyyyt, прошу прощения, вот доработал и исправил(с пояснениями)
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 <stdlib.h>
 
int main(void)
{
    int a, n=0, flag=0; 
    FILE *READ = fopen("f1.txt", "r");
    if(READ)
    {
// подсчет количества элементов в файле и создание массива
        while(fscanf(READ, "%d", &a) == 1) n++;
        int *arr = (int*)malloc(n * sizeof(int));
        fseek(READ, 0, SEEK_SET);
// чтение всех элеметнов из фйала в массив
        for(int i=0; i<n; i++)
            fscanf(READ, "%d", &arr[i]);
        fclose(READ);
// сравнение всех элементов между собой
        for(int i=0; i<n-1; i++)
            for(int j=i+1; j<n; j++)
                if(arr[i] != arr[j]) flag++;
        free(arr);
//      printf("Flag = %d - ", flag); // проверочная строка
// неравенств не должно быть больше чем за 2 цикла проверки
        puts(flag <= (n-1)*2-2 ? "Yes" : "No");
    }
    else puts("Open file error");
    return 0;
}
Добавлено через 7 минут
Код выдает <No>, если разных чисел больше 2. Если разных чисел должно быть не больше 2, тогда 25 срока будет такая:
C
1
        puts(flag <= (n-1) ? "Yes" : "No");
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
16.09.2021, 10:40  [ТС] 12
Спасибо большое! Уже лучше работает . Но почему то с последовательностью 1 1 1 11 11 не работает ( пишет yes) . А с последовательностью 1 1 1 11 11 11 уже работает. Подскажите пожалуйста,как это исправить.
0
из племени тумба-юбма
2482 / 1804 / 418
Регистрация: 29.11.2015
Сообщений: 8,755
Записей в блоге: 15
16.09.2021, 10:51 13
Цитата Сообщение от Dffftyyyt Посмотреть сообщение
Но почему то с последовательностью 1 1 1 11 11 не работает ( пишет yes)
все верно потому что в последовательности 1 1 1 11 11 основные преобладающие числа единицы, а чисел 11 не более двух.
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
16.09.2021, 10:58  [ТС] 14
Но в этом случае нельзя убрать 1 число так, чтобы все остальные были равны.
0
из племени тумба-юбма
2482 / 1804 / 418
Регистрация: 29.11.2015
Сообщений: 8,755
Записей в блоге: 15
16.09.2021, 11:17 15
Dffftyyyt, вы как просили, так и сделал:
если в последовательности чисел, более 2х чисел отличаются от остальных, написать <No>

Добавлено через 12 минут
А если хотите убрать 1 число из последовательности, чтоб остальные были равны, тогда должно только 1 число отличаться, а не 2 числа. Иначе это будет физически не выполнимо.
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
16.09.2021, 12:27  [ТС] 16
Простите, я неправильно написал. Надо убрать из последовательности один элемент так чтобы она состояла из равных членов.(если это возможно) Если возможно надо писать "yes" если невозможно "No". Например в последовательности 1 1 1 11 11 нельзя, а в 1 1 1 2 1 1 можно. Спасибо большое за то что помогаете!!!
0
из племени тумба-юбма
2482 / 1804 / 418
Регистрация: 29.11.2015
Сообщений: 8,755
Записей в блоге: 15
16.09.2021, 13:05 17
Dffftyyyt, для этого в посте#11, отдельно написана строка#25. Замените одну на другую и все будет работать.
Фактически это условие, когда в последовательности присутствует больше 1 отличающегося элемента, тогда выводится <No>, а если не более чем 1 - выводится <Yes>.
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
16.09.2021, 13:07  [ТС] 18
Спасибо большое!!!
0
0 / 0 / 0
Регистрация: 15.09.2021
Сообщений: 31
17.09.2021, 09:46  [ТС] 19
Здравствуйте! Появился ещё вопрос. Как реализовать эту задачу без массивов? Мне сказали что можно как то без них. Подскажите пожалуйста.
0
из племени тумба-юбма
2482 / 1804 / 418
Регистрация: 29.11.2015
Сообщений: 8,755
Записей в блоге: 15
17.09.2021, 10:26 20
Без массивов пока не знаю как.
0
17.09.2021, 10:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2021, 10:26
Помогаю со студенческими работами здесь

Работа с текстовым файлом на Си
Написать программу, которая считывает текст из файла и выводит на экран только предложения, не...

Работа с текстовым файлом
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000...

Работа с текстовым документом
Всем добрый вечер! Застопорился на 1 месте в создании бат файла @echo off setlocal...

Работа с текстовым документом
Доброго времени суток! Сегодня столкнулся с проблемой чтения файла. У меня есть файл в котором...

Работа с текстовым документом
Доброго времени суток! Сегодня столкнулся с проблемой чтения файла. У меня есть файл в котором...

Работа с текстовым документом С++
Язык: польский. Обьясняю что нужно сделать. Под номером 3 в главном меню есть выбор &quot;Usuwanie...

Работа с текстовым документом
Здравствуйте, помогите пжл, я в ступоре, задание такое, вывести информацию по последней букве...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru