С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76

Присвоение индекса при записи фрагмента в документ

26.05.2010, 21:50. Показов 918. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <fstream.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
 
struct TUser {char name[30]; int clas; double vid;} ;
 
fstream f;
const int n=3;
void ievadit(TUser User)
{  int k;
if (sizeof(f)==0) f.open("u4eniki.dat", ios::out);
else f.open("u4eniki.dat",ios::app);
cout<<"Imja ucenika"<<" ";
gets(User.name);
cout<<"Srednija ocenka"<<" ";
cin>>User.vid;
cout<<"Nomer klasa ucenika"<<" ";
cin>>User.clas;
f.write((char*)&User,sizeof(TUser));
f.close();
};
void list(int nr,TUser User)
{
int n=0,k;
f.open("u4eniki.dat",ios::in);
cout<<"\n       Imja    Klass  Srednija ocenka";
f.seekg(0);
while(n<nr)
{     
        if(f.read((char*)&User, sizeof(TUser)));{ n++;
cout<<"\n  "<<User.name<<"   "<<User.clas<<"  "<<User.vid;
} }
f.close();
 
getch();
}
 
 
int SizeofFile()
{int nr=0;
f.open("u4eniki.dat",ios::ate);
nr=f.tellp()/sizeof(TUser);
f.close();
return nr;
}
 
 
void viens(int nr,TUser User)
{}
 
void main()
{
int i,k,nr; struct TUser User;
do
{
clrscr();
 nr=SizeofFile();
 if (nr==0)      cout << "\n Menu"<<"                    "<<"Number of Records: " << "Zapisej net";
else cout << "\n Menu"<<"                    "<<"Number of Records: " << nr;
cout<<"\n 1 - vvod";
cout<<"\n 2 - poisk";
cout<<"\n 3 - pokazatj vseh";
cout<<"\n 4 - Exit";
cout<<"\n\n Vibirite dejstvie: ";
cin>>i;
if(i==1) ievadit(User);
if(i==3)
{  list(nr,User);
getch();if(sizeof(f)==0)
                f.open("u4eniki.dat", ios::out);
}
 
if(i==2)
{  viens(nr,User);
getch();}
 
}
while (i!=4);
}
Вопрос, вот программа записи информации в файл, как, не используя масивов, можно осуществить поиск используя индекс. Тоесть, запускаю компилятор, ввожу н-тое количество записей, что сохраняется в документ, по выборы могу закрыть,продолжить, посмотреть существующую работу, но не могу к примеру посмотреть 2-ую совершённую запись, как этого можно добится?

Добавлено через 2 часа 3 минуты
Помогите дописать...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2010, 21:50
Ответы с готовыми решениями:

Искажения фрагмента изображения при копировании или записи
Добрый день, Знатоки! Помогите пожалуйста с проблемой! Пытаюсь вырезать заданный фрагмент из хорошего файла изображения и записать в...

Присвоение индекса к месяцу
Добрый день, требуется построить график в виде: OX - месяца, ОУ - цены. Месяца не получается представить в виде чисел (Январь - 1, февраль...

Присвоение индекса элементу
Подскажите как присвоить индекс элементу в DOM? Например: &lt;div class=&quot;wrap&quot;&gt; &lt;div class=&quot;bar&quot;&gt;bar&lt;/div&gt; ...

6
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
26.05.2010, 22:12
1) Если ты используешь функции read/write для записи структуры, содержащей числовые переменные int, double и т.д., то файл следует открывать в бинарном режиме. В противном случае возможен неприятный эффект.
2) При использовании тех же функций read/write становится очень просто считывать произвольную запись из файла при помощи функции seekg
C++
1
2
f.seekg(sizeof(TUser)*(n-1), ios_base::beg);// n - номер записи
f.read((char*)&User, sizeof(TUser));
0
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76
26.05.2010, 22:29  [ТС]
Цитата Сообщение от kazak Посмотреть сообщение
1) Если ты используешь функции read/write для записи структуры, содержащей числовые переменные int, double и т.д., то файл следует открывать в бинарном режиме. В противном случае возможен неприятный эффект.
2) При использовании тех же функций read/write становится очень просто считывать произвольную запись из файла при помощи функции seekg
C++
1
2
f.seekg(sizeof(TUser)*(n-1), ios_base::beg);// n - номер записи
f.read((char*)&User, sizeof(TUser));
не совсем понел, у меня идёт подсчёт записей, как сделать так, что бы введя индекс записи, я бы увидел нужную запись, тоесть у первой записи индекс 1 у второй 2 и тдп. Но дело в том что я ввожу 3 строчки. 1-Имя 2-средняя оценка 3-класс. Где симболы и int и char и double
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
26.05.2010, 22:49
Да вроде правильно понял
C++
1
2
3
4
5
cin >> n;//Ввел номер записи
f.open(...);//Открыл файл с записями
f.seekg(sizeof(TUser)*(n-1), ios_base::beg);//Переместил указатель на начало нужной записи
f.read((char*)&User, sizeof(TUser));// Считал нужную запись
//Дальше делай с этой записью что хочешь
Добавлено через 5 минут
Цитата Сообщение от Apmyp /7 Посмотреть сообщение
int SizeofFile()
{int nr=0;
f.open("u4eniki.dat",ios::ate);
nr=f.tellp()/sizeof(TUser);
f.close();
return nr;
}
=>
C++
1
2
3
4
5
6
7
8
9
int SizeofFile()
{
   int nr=0;
   f.open("u4eniki.dat",ios::in | ios::out | ios::binary | ios::app);
   f.seekp(0, ios::end);
   nr=f.tellp()/sizeof(TUser);
   f.close();
   return nr;
}
Цитата Сообщение от Apmyp /7 Посмотреть сообщение
if (sizeof(f)==0) f.open("u4eniki.dat", ios::out);
else f.open("u4eniki.dat",ios::app);
бред
C++
1
f.open("u4eniki.dat",ios::in | ios::out | ios::binary | ios::app);
1
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76
26.05.2010, 23:09  [ТС]
вписал в код, всё что вы мне вписали, но запись которую хочу вызвать так и так не появляется...


ОТРОМНОЕ СПАСИБО ВАМ! ВСЁ СДЕЛАЛ! ПРЯТНО, ЧТО ЕСТЬ ЛЮДИ КОТОРЫЕ ГОТОВЫ ПОМОЧ!!!
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
26.05.2010, 23:10
А файл содержит нужную запись, он случаем не пустой?
0
3 / 3 / 1
Регистрация: 14.10.2009
Сообщений: 76
26.05.2010, 23:16  [ТС]
Всё работает как нужно! Провер, ещё раз спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2010, 23:16
Помогаю со студенческими работами здесь

Присвоение значения новой записи по значению предыдущей (при условии)
Добрый день. Есть форма для заполнения справочника (внесение по одной записи за раз). При внесении нескольких новых записей значения...

Model/View: создание индекса, присвоение внутреннего указателя
Создаю таблицу, которая (на данном раннем этапе) должна с помощью addTown добавлять в себя новые строку и столбец, первыми ячейками которых...

Разрыв строк при записи в текстовый документ
Делаю считывание с textbox_ов и запись в текстовый документ все записывается... но как сделать чтоб записывалось в столбик то есть с...

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru