Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C (СИ) Задача на скобочную последовательность https://www.cyberforum.ru/ c-beginners/ thread3119017.html
Здравствуйте, задача на скобочную последовательность выглядит следующим образом : Вупсень очень любит давать задачи на поиск наибольшей общей подпоследовательности. Пупсень очень любит давать задачи на поиск наибольшей правильной скобочной подпоследовательности. Нет ничего удивительного в том, что они решили объединиться и подготовить очень сложную задачу на поиск наибольшей общей правильной...
Простой калькулятор в консоли C (СИ)
Здравствуйте, уважаемые форумчане! Подскажите, пожалуйста, где я мог довольно сильно упростить код, при условии, что из теории успел узнать: - преобразования типов данных - циклы - булевы переменные - break, continue, switch - операторы if, if-else - оператор условия (condition ? expression1 : expression2;)
C (СИ) Перевести из C++ в С https://www.cyberforum.ru/ c-beginners/ thread3118755.html
Помогите перевести код из С++ в С. Возникает проблема с типом string в С. Все что знал попробовал. Вместо string создаю массив char он не дает его изменять((( #include <iostream> #include <math.h> #include <windows.h> using namespace std; int main() { const int length_c = 20;
C (СИ) Задача из учебника Кочана о простых числах Здравствуйте, уважаемые форумчане! Помогите, пожалуйста, понять, почему данный код не хочет работать как надо - находятся только первые две цифры (2 и 3). Как я понимаю, внешний цикл почему-то решает, что уже конец, не смотря на проставленное условие p<=100... #include <stdio.h> #include <stdlib.h> #include <locale.h> https://www.cyberforum.ru/ c-beginners/ thread3118738.html
Почему тест программа не проходит? C (СИ)
Тестирую свою программу и выводит следующую ошибку alex-conquer@LAPTOP-EVM4AADF:/mnt/c/Users/USER/Desktop/prep_C$ make test cc -Wpedantic -Wall -Wextra -Werror -I project/include -o ./main.out project/src/main.c project/src/utils.c project/src/case_3.c project/src/case_4.c ./btests/run.sh...
C (СИ) Создание двумерного массива случайными символами в файл У меня не получается создать двумерный массив и заполнить его рандомными символами. сам массив заполняется мусором, до этого я делал с одномерным и все было хорошо, но при создании двумерного, заполнение идет криво. #define N 10 #define SET "abcdefghijklmnaoqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" int main() { FILE* file; int kolvostrok= 0; printf_s("enter kolvo strok: "); https://www.cyberforum.ru/ c-beginners/ thread3118424.html
C (СИ) Азы программирования на C Объясните пожалуйста функцию, которая получает на вход адрес начала текстовой строки и возвращает в качестве значения количество пробелов в этой строке. int count_spaces(const char *s) { Int t=*p; p=0; return t; } Не могу понять как она возвращает количество пробелов https://www.cyberforum.ru/ c-beginners/ thread3118420.html Посчитать кол-во пятёрок в наборе из 5 чисел C (СИ)
На вход подаются 5 чисел через пробел, нужно вывести количество цифр 5. Нельзя использовать if/else и циклы. Заранее спасибо.
C (СИ) Найти корень уравнения методом Ньютона с введенной точностью Заданы коэффициенты полинома 3 степени и точность. Найти корень уравнения методом ньютона с введенной точностью? #include <stdio.h> #include <math.h> #include<stdlib.h> int main() { system("chcp 1251"); system("cls"); https://www.cyberforum.ru/ c-beginners/ thread3117546.html C (СИ) Проблема со сравнением строковой переменной https://www.cyberforum.ru/ c-beginners/ thread3117531.html
Попытался сравнить значение строковой переменной, но выяснилось что результат не соответствует ожидаемому. С чем это может быть связано? Ниже полный код с примером. Ожидалсь {var_internal = "y=2";}, а получил {var_internal = "UNDEF";}. #include <stdio.h> #include <stdlib.h> const char var_external = "x1";
Подсчитать количество символов в файле с переносом строк C (СИ)
Выводится 0. Что я делаю не так? int kchar = 0; while (fgetc(F) != EOF) kchar++; Добавлено через 10 минут такой вариант тоже возвращает 0 int kchar = 0; while (!feof(F)) {
C (СИ) Как в Си перевести string в integer https://www.cyberforum.ru/ c-beginners/ thread3117367.html
Допустим в строковом массиве содержится следующее: "12.03.2000" или "24.12.2009" Необходимо извлечь значение месяца, т.е. 03=>3 или 12 в приведенных примерах. Затем требуется уменьшить значение на единицу (в примерах): 3-1=2 12-1=11 Полученное вновь преобразовать в строковый массив содержащий только полученное значение.
0 / 0 / 0
Регистрация: 04.07.2023
Сообщений: 6
04.07.2023, 13:21  [ТС] 0

Разработать схемы алгоритмов, структуру и текст программы для обработки структурных данных текстового и бинарного файлов - C++ - Ответ 16963275

04.07.2023, 13:21. Показов 1455. Ответов 11
Метки (Все метки)

Ответ

1) Объявить структурный тип, для описания характеристик объекта вашего варианта. Объявить внешнюю структуру.
Например:
C++
1
struct stud { char fio [20]; char gr [7]; unsigned int no ; float rs; } st;
2) Объявить входной, выходной и двунаправленный файловые потоки.

3) Определить функцию (filtr()) для удаления пробелов (ведущих и замыкающих) в строковых данных.

4) Объявить функцию перегрузки операций вставки в поток "<<" (операции вывода) и извлечения из потока ">>" (операции ввода) для данного структурного типа по формату текстового файла данных, который будет программно создаваться.
При перегрузке операции вывода "<< " на каждое поле структуры выделять нужное количество позиций и производить вывод с левым выравниванием, вывод полей вещественных типов производить с двумя десятичными знаками.
Операция ввода данных из потока должна учитывать форматы файла данных.
Ниже приведены функции перегрузки операций ввода / вывода для структурного типа stud:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// перегрузка операции  вывода структурных данных в стандартный 
//выходной поток и во все  выходные потоки производных типов (напр., //файловые)
#include <iostream>
#include <iomanip>
using namespace std;
…
ostream &     operator <<    ( ostream & out , stud &st) { out.setf(ios::left,ios::adjustfield);    //сбросили правое выравнивание
                                                          //установили  левое
out << setw(20) << st.fio << setw(7) << 
st.gr << setw(8) <<st.no   << setw(7)<< setprecision(2) << st.rs<<endl;
return out;
 }
//--------------------------------------------------------------------------------------
// перегрузка операции ввода данных (“>>”) из стандартного потока, 
// наследуемая и файловыми входными потоки
istream &   operator >>   (istream & in , stud &st ) {  
char T[80]; 
in.getline (st.fio, 21);  filtr( st.fio); 
in.getline ( st.gr, 8) ;  filtr(st.gr ); 
in >> st.no >>st.rs ;
in.getline (T, 80);
return in; 
 }
5) Определить функцию создания текстового файла данных sozdat().
Каждая строка файла будет содержать элементы одной из структур, вводимых с клавиатуры.
Параметр функции - имя создаваемого текстового файла. В теле функции создается файл с данным именем для записи данных в текстовом режиме.
Далее алгоритм функции строится в диалоговом режиме:
Функция запрашивает данные. С клавиатуры вводятся значения полей и заносятся в оперативную память внешней структуры st. Значения введенных строковых полей “очищаются” от ведущих и завершающих пробелов. Ввод осуществляется с помощью перегруженной операции ввода данных из стандартного потока “>>”. Затем структура “целиком” из оперативной памяти копируется в текстовой файл, используя перегруженную операцию вывода
“ <<”.
Далее следует запрос о продолжении записи в файл. В случае положительного ответа, продолжается ввод/вывод данных, в противном случае, функция завершает свою работу с помощью оператора return, при этом, перед завершением закрывается созданный файл.

C++
1
2
3
4
5
6
7
8
9
10
void sozdat (char*file) { 
fout.open(file) ;                  // fout- файловый выходной поток
m: cout<< "введите данные одной структуры"<<endl ;
cin>> st;    fout<<st;
cout<<"Нажмите любую клавишу, если хотите продолжить запись и  " 
   " 0 – , если нет" <<endl
char c ;    c=getch();
 if(c=='0') {fout.close(); return;}
else  goto m; 
 }
6) Определить функцию создания бинарного файла.
Бинарный файл содержит плотно упакованные двоичные представления структур, при этом составляющие их элементы располагаются подряд без разделения и различные структуры также друг от друга ничем не разделяются, так, например, нет деления на строки, содержащие данные одной структуры как в текстовом файле.
Параметрами функции создания являются имена файлов: текстового файла с данными и создаваемого бинарного файла.
В теле функции открывается файл данных для чтения данных в текстовом режиме.
Новый файл создается для записи данных в файл в бинарном режиме.
Организуется цикл, в котором, пока не будет достигнут конец файла данных, из файла считываются построчно данные в переменную st, используя перегруженную операцию извлечения (">>") и “целиком” st записывается в бинарный файл, используя компонентную функцию выходных потоков write () для двоичного (бинарного) вывода данных.
Функция завершается закрытием файлов.

7) Создать с клавиатуры файл для тестирования функции удаления данных из бинарного файла. В каждую строку этого файла записать значение одного из полей структур, по которому будет производиться поиск удаляемых структур в бинарном файле.
Файл следует составить следующим образом:
- значение, равное полю последней структуры бинарного файла;
- отсутствие поискового признака (пустая строка);
- значение, не совпадающее с полями структур в бинарном файле;
- значение, совпадающее с полем первой структуры бинарного файла.

8) Определить функцию удаления записей из бинарного файла. Параметрами функции являются имена файлов: бинарного файла, в котором хранятся структурные данные и файла данных – с поисковыми данными для удаления.
Открыть файлы:
- файл данных для удаления в режиме текстового чтения;
- файл с записями структурных данных (бинарный) в режиме
бинарного чтения и записи;
- новый рабочий файл для записи данных в бинарном режиме.
Объявить переменную, в которую будут читаться данные для удаления.
Организовать цикл (пока не будет достигнут конец файла данных для удаления), в теле которого выполнять следующие действия:
- считывать значение для удаления;
- если значение для удаления представляет собой символьную строку, удалить из этой строки пробелы, ведущие и замыкающие;
- если значение для удаления отсутствуют (например, это пустая строка), вывести на экран (и в файл результатов) соответствующую фразу об отсутствии поискового признака и с помощью оператора continue перейти к следующей итерации цикла;
- в противном случае, если данное для удаления не пустое значение, выполнить следующие действия:
1. установить указатель в бинарном файле с записями на начало файла;
2. организовать вложенный цикл (до конца бинарного файла), в теле которого:
- считывать по одной структуре из файла в переменную st, используя компонентную функцию входных потоков read () для двоичного (бинарного) ввода данных;
- проверять совпадение контрольного поля структуры st со значением для удаления;
- в случае совпадения, надо присвоить этому полю структуры st характерное значение, например, пустую строку (“пометить” удаляемую структуру);
- и перезаписать откорректированную структуру на старое место в бинарный файл (для этого надо переместить указатель записи в файле “назад” на одну структуру);
3. если по завершению внутреннего цикла были прочитаны все записи бинарного файла, и совпадение полей не обнаружилось, вывести фразу, что таких данных в бинарном файле нет;
Когда завершится внешний цикл, следует опять установить указатель в бинарном файле на начало.
Организовать цикл, в котором считывать по одной записи из бинарного файла в структуру st, используя функцию read () двоичного чтения. Если значение контрольного поля в структуре st отличается от характерного значения (пустой строки), следует записывать структуру в рабочий файл, используя функцию write (). Цикл выполнять до конца бинарного файла.
Закрыть бинарный и рабочий файлы. Бинарный файл удалить с диска, а рабочему файлу дать имя бинарного файла.
Вызвать функцию коррекции файла данных.

9) Функция коррекции файла данных.
Параметры функции имена файлов: текстового файла данных и бинарного файла, содержащего записи структур.
Открыть бинарный файл в режиме бинарного чтения.
Открыть файл данных для записи данных в текстовом режиме (создается новый файл)
Организовать цикл (до конца бинарного файла), в котором считывать из бинарного файла по одной записи в оперативную память структуру st и выводить эту структуру “целиком” в файл данных, используя перегруженную операцию "<<".
Закрыть файлы.

Вернуться к обсуждению:
Разработать схемы алгоритмов, структуру и текст программы для обработки структурных данных текстового и бинарного файлов C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2023, 13:21
Готовые ответы и решения:

Составить схемы алгоритмов, разработать проект формы и программы алгоритмическим языком C++ для выполнения индивидуально
Поменять местами элементы первой строки матрицы вещественных чисел размерностью 4x4 и элементы ёё...

Составить схемы алгоритмов, разработать проект формы и программы алгоритмическим языком C++ для выполнения индивидуально
В матрицы целых чисел размерностью 3x5 заменить отрицательные элементы нулями. Пожалуйста помогите...

Разработать приложение для создания и обработки бинарного файла, выполняющего роль «базы данных»
Требуется разработать приложение на языке программирования C# для создания и обработки бинарного...

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

Разработать схемы алгоритмов и программы приближения функции
Здравствуйте, помогите пожалуйста переделать данную функцию в квадратичную (y=ax^2+bx+c), методом...

11
04.07.2023, 13:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2023, 13:21
Помогаю со студенческими работами здесь

Разработать схемы алгоритмов и программы приближения функции
Здравствуйте, помогите пожалуйста переделать данную функцию в квадратичную (y=ax^2+bx+c), методом...

разработать текст программы на турбо паскале для обработки таблици
разработать текст программы на турбо паскале для обработки таблици.Строки таблици должны иметь два...

Разработать модуль(схемы алгоритмов и программы), содержащие процедуры и функции
Разработать модуль(схемы алгоритмов и программы), содержащие процедуры и функции, решающие...

Составить текст программы обработки текстового файла
Составить текст программы обработки текстового файла 1. Содержащий процедуру создания нового...

Составить блок-схемы алгоритмов решения задач, используя структуру цикла «для»
В заданном массиве A(N) положительные элементы уменьшить вдвое, а отрицательные заменить на...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru