grizzz
(griz zirg)
#1
Может кто помочь осуществить потоковый ввод-вывод этого кода?(нужно оооочень срочно)
#include <string.h>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
struct library
{
char author[30];
char book[30];
int year;
} p[5];
int i, j;
char author[30];
int n = sizeof(p) / sizeof(library);
for (i = 0; i < n; ++i)
{
cout << " Vvedi avtora ";
gets_s(p[i].author);
cout << " Vvedi knigu ";
gets_s(p[i].book);
cout << " Vvedi god ";
cin >> p[i].year;
cin.ignore();
}
cout << " Vvedi imya avtora ";
gets_s(author);
for (i = 0, j = 0; i < n; ++i)
{
if (strcmp(p[i].author, author) != 0)
{
p[j] = p[i];
++j;
}
}
n = j;
for (i = 0; i < n; ++i)
cout << p[i].author << " \t" << p[i].book << "\t"<< p[i].year<<"\n";
system("pause");
}
grizzz
(griz zirg)
#2
Наделал чего-то такого, но это такая каша
#include <iostream>
#include <fstream>
using namespace std;
#define LINES 100 // максимальное количество строк в файле
#include <conio.h>
int main()
{
struct library
{
char author[30];
char book[30];
int year;
} p[5];
char line[LINES][100];
char s[] = "| | | |";
int i, j;
char author[30];
int n = sizeof(p) / sizeof(library);
for (i = 0; i < n; ++i)
{
cout << " Vvedi avtora ";
gets_s(p[i].author);
for (int i = 0; p[i].author != '\0'; i++) // копируем в строку без 0
s[i + 2] = p[i].author[i];
cout << " Vvedi knigu ";
gets_s(p[i].book);
for (int i = 0; p[i].book != '\0'; i++)
s[i + 33] = p[i].book[i];
cout << " Vvedi god ";
cin >> p[i].year;
s[i + 50] = p[i].year;
cin.ignore();
}
cout << " Vvedi imya avtora ";
gets_s(author);
for (i = 0, j = 0; i < n; ++i)
{
if (strcmp(p[i].author, author) != 0)
{
p[j] = p[i];
++j;
}
}
n = j;
fstream inOut;
inOut.open("file.txt", ios::in); // открываем файл для ввода
// Считываем из файла имеющиеся данные
int count = 0;
while (inOut.getline(line[count], 100)) count++;
inOut.close(); // закрываем файл
inOut.open("file.txt", ios::out); // открываем файл для вывода
inOut << "--------------------------------------------------------------------------------" << endl;
inOut << "| Автор | Книга | Год |" << endl;
inOut << "--------------------------------------------------------------------------------" << endl;
inOut << s << endl; // выводим сформированную строку
inOut << "--------------------------------------------------------------------------------" << endl;
// Выводим обратно в файл все строки кроме "шапки" (первые 3 строки)
for (int j = 3; j < count; j++)
{
inOut << line[j] << endl;
}
inOut.close();
//cin.get();
system("pause");
return 0;
}
AlexP
(Alex P.)
#4
О чем именно речь? cin
/cout
это тоже потоковый ввод/вывод )
Надо в файл записывать?
Краткий туториал и примеры: http://www.cplusplus.com/doc/tutorial/files/
AlexP
(Alex P.)
#5
Так не надо код бездумно копипастить, year это не массив/строка, а число, что такое i
-й элемент числа и зачем он нужен?)
grizzz
(griz zirg)
#6
я уже понял) просто очень спешу, не успеваю все обдумать
grizzz
(griz zirg)
#8
А что можно сделать, если:
!=: нет преобразования “int” в “char [30]” (24 и 29 строки)
AlexP
(Alex P.)
#9