Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удалить из матрицы строки, имеющие наибольшую и наименьшую разницы между максимальным и минимальным элементами https://www.cyberforum.ru/ cpp-beginners/ thread1762548.html
Дана матрица размером 12х6. Удалить из неё строки, имеющие наибольшую и наименьшую разницы между максимальным и минимальным элементами. На С++. Срочно надо, помогите
C++ C++ экзамена
Привет. Если кто-нибудь может мне помочь с этими задачами? Я из Болгарии. Прошу прощения за плохой русский язык. Отправить задачи на болгарском языке. Я надеюсь, что вы их понимаете. Если вы...
Реализация Алгоритма Грэхема на С++ C++
Доброго времени суток, пожалуйста помогите разобраться с написанием программы. Что непонятно: 1) Каким образом вводятся точки? В ручную (Что-то типа "Введите значения x и y для точки p0=1 2" ? Для...
C++ Запутался с IF. Может кто-то знает в чём ошибка? Программа, нужно ввести значение "х" и "а", и определить значение функции в зависимости от значения аргумента... Ошибку начинает писать с строки if #include <iostream> using namespace std; int... https://www.cyberforum.ru/ cpp-beginners/ thread1762488.html
C++ Операции над обыкновенными дробями https://www.cyberforum.ru/ cpp-beginners/ thread1762485.html
Нужно написать программу для того чтобы полноценно показать возможные операции над обыкновенными дробями посредством C++, желательно с использованием библиотеки айстриам
C++ Вычислить значение тригонометрического выражения по формуле
Кто-нибудь знает, как программно решаются такие выражения: {z}_{1}=2{\sin }^{2}(3\pi -2\alpha ){\cos }^{2}(5\pi +2\alpha )
C++ Заполнить матрицу целыми числами в интервале от 40 до 60, вывести ее в виде таблицы
помогите пожалуйста с задачей "заполнить массив A элементы массива -целые числа в интервале от 40 до 60. выведите массивы в виде таблицы. В С++" заранее спасибо большое!
C++ Вывести все слова на печать, которые встречаются в тексте один раз Доброго времени суток! На вход приходит текст, который вводит пользователь в консоли. На выход идут все слова, которые встречаются в тексте один раз. Работаю со string. Нужно брать каждое слово и... https://www.cyberforum.ru/ cpp-beginners/ thread1762450.html
C++ Расписать процедуру высчитывания ближайшего числа к случайному https://www.cyberforum.ru/ cpp-beginners/ thread1762446.html
Ребята, пишу свою мини-игру. И возникла загвоздка. Суть игры: чье число окажется ближе к случайно выпавшему числу, тот победил. Диапазон 1-99 Мы играем против Компьютера. Скажите как математически...
C++ Преобразовать строку, удалив каждый символ * и повторив каждый символ, отличный от * Дана строка. Преобразовать ее, удалив каждый символ * и повторив каждый символ, отличный от *. https://www.cyberforum.ru/ cpp-beginners/ thread1762435.html
0 / 0 / 0
Регистрация: 14.06.2016
Сообщений: 2
14.06.2016, 16:53  [ТС] 0

Нужно доделать поиск в программе

14.06.2016, 16:53. Просмотров 452. Ответов 1
Метки (Все метки)

Ответ

Вот нашел вроде как сделать, но всеравно не пашет, лучше смотреть на этот код, он более проработан, благодарю за помощь.
#include <iostream>
#include <stdio.h>
#include <string>
#include <Windows.h>
using namespace std;
void Menu();
void Pod_menu_1();
void Pod_menu_2();
void Pod_menu_3();
void Init_1();
void Viv_1();
void Search_1();
void Init_2();
void Viv_2();
void Search_2();
void Init_3();
void Viv_3();
void Search_3();
bool Compare(string source, string request);
struct Postavshik
{
string code;
string name;
string data;
string qbooks;
};
struct Book
{
string code;
string name;
string autor;
string qbooksall;
};
struct Vedomost
{
string num;
string code_b;
string data;
string srok;
};
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Menu();
system("pause");
return 0;
}

void Init_1()
{
Postavshik A;
int i,n = 0;
FILE*fp = fopen("Postavshik.txt", "a+");
if (fp == NULL)
{
puts("Невозможно открыть файл!\n"); system("pause"); return;
}
cout << "Введите кол-во записей которое вы хотите внести:" << endl;
cin >> n;
for (i = 0; i < n; i++)
{
fprintf(fp, "\t");
cout << "Введите код поставщика(3-х значное значение):" << endl;
cin >> A.code;
fprintf(fp, "%s\t", A.code);
cout << "Введите наименование поставщика: " << endl;
cin >> A.name;
fprintf(fp, "%s\t", A.name);
cout << "Введите дату поставки: " << endl;
cin >> A.data;
fprintf(fp, "%s\t", A.data);
cout << "Введите кол-во поставленных книг: " << endl;
cin >> A.qbooks;
fprintf(fp, "%s", A.qbooks);
fprintf(fp, "\n");
}
fclose(fp);
system("cls"); Menu();
}
void Viv_1()
{
FILE*fp = fopen("Postavshik.txt", "r");
if ( fp == NULL)
{
puts("Невозможно открыть файл!\n"); system("pause"); return;
}
printf("\tКод");
printf("\tНаименование");
printf("\tДата поставки");
printf("\tКол-во");
printf("\n");
char c;
while ((c = getc(fp)) != EOF)
putchar(c);
system("pause");
fclose(fp);
system("cls"); Menu();
}
void Init_2()
{
Book B;
int i, n = 0;
FILE*fp = fopen("Book.txt", "a+");
if (fp == NULL)
{
puts("Невозможно открыть файл!\n"); system("pause"); return;
}
cout << "Введите кол-во записей которое вы хотите внести:" << endl;
cin >> n;
for (i = 0; i < n; i++)
{
cout << "Введите код книги(3-х значное значение):" << endl;
cin >> B.code;
cout << "Введите наименование книги: " << endl;
cin >> B.name;
cout << "Введите наименование автора книги: " << endl;
cin >> B.autor;
cout << "Введите общее кол-во книг на складе: " << endl;
cin >> B.qbooksall;
fprintf(fp, "%s\t", B.code);
fprintf(fp, "%s\t", B.name);
fprintf(fp, "%s\t", B.autor);
fprintf(fp, "%s\t", B.qbooksall);
fprintf(fp, "\n");
}
fclose(fp);
system("cls"); Menu();
}
void Viv_2()
{
FILE*fp = fopen("Book.txt", "r");
if (fp == NULL)
{
puts("Невозможно открыть файл!\n"); return;
}
printf("\t Код");
printf("\t Наименование");
printf("\t Автор");
printf("\t Кол-во");
printf("\n");
char c;
while ((c = getc(fp)) != EOF)
putchar(c);
system("pause");
fclose(fp);
system("cls"); Menu();
}
void Init_3()
{
Vedomost C;
int i, n = 0;
FILE*fp = fopen("Vedomost.txt", "a+");
if (fp == NULL)
{
puts("Невозможно открыть файл!\n"); system("pause"); return;
}
cout << "Введите кол-во записей которое вы хотите внести:" << endl;
cin >> n;
for (i = 0; i < n; i++)
{
cout << "Введите номер поставки:" << endl;
cin >> C.num;
cout << "Введите код книги: " << endl;
cin >> C.code_b;
cout << "Введите дату выдачи книги: " << endl;
cin >> C.data;
cout << "Введите срок выдачи книги(в днях): " << endl;
cin >> C.srok;
fprintf(fp, "%s\t", C.num);
fprintf(fp, "%s\t", C.code_b);
fprintf(fp, "%s\t", C.data);
fprintf(fp, "%s\t", C.srok);
fprintf(fp, "\n");
}
fclose(fp);
system("cls"); Menu();
}
void Viv_3()
{
FILE*fp = fopen("Vedomost.txt", "r");
if (fp == NULL)
{
puts("Невозможно открыть файл!\n"); system("pause"); return;
}
printf("\t Номер");
printf("\t Код книги");
printf("\t Дата выдачи");
printf("\t Срок(дни)");
printf("\n");
char c;
while ((c = getc(fp)) != EOF)
putchar(c);
system("pause");
fclose(fp);
system("cls"); Menu();
}
void Menu()
{
int n;
cout << "\n Программа для ведения БД в библиотеке. \n" << endl;
cout << "\n Главное меню: \n" << endl;
cout << "[1] Ввод данных\n" << endl;
cout << "[2] Вывод дынных\n" << endl;
cout << "[3] Поиск\n" << endl;
cout << "[4] ВЫХОД\n" << endl;
cin >> n;
system("cls");
switch (n)
{
case 1: Pod_menu_1(); break;
case 2: Pod_menu_2(); break;
case 3: Pod_menu_3(); break;
case 4: exit(0);
default: cout << "Введите корректный запрос\n" << endl; Menu();
}
}
void Pod_menu_1()
{
int n;
cout << "\n Ввод данных по: \n" << endl;
cout << "[1] Поставщикам и поставкам\n" << endl;
cout << "[2] Книгам в библиотеке\n" << endl;
cout << "[3] Учету выданых книг\n" << endl;
cout << "[4] Вернуться в главное меню\n" << endl;
cin >> n;
system("cls");
switch (n)
{
case 1: Init_1(); break;
case 2: Init_2(); break;
case 3: Init_3(); break;
case 4: Menu();
default: cout << "Введите корректный запрос\n" << endl; Menu();
}
}
void Pod_menu_2()
{
int n;
cout << "\n Вывод данных по: \n" << endl;
cout << "[1] Поставщикам и поставкам\n" << endl;
cout << "[2] Книгам в библиотеке\n" << endl;
cout << "[3] Учету выданых книг\n" << endl;
cout << "[4] Вернуться в главное меню\n" << endl;
cin >> n;
system("cls");
switch (n)
{
case 1: Viv_1(); break;
case 2: Viv_2(); break;
case 3: Viv_3(); break;
case 4: Menu();
default: cout << "Введите корректный запрос\n" << endl; Menu();
}
}
void Pod_menu_3()
{
int n;
cout << "\n Поиск данных по: \n" << endl;
cout << "[1] Поставщикам и поставкам\n" << endl;
cout << "[2] Книгам в библиотеке\n" << endl;
cout << "[3] Учету выданых книг\n" << endl;
cout << "[4] Вернуться в главное меню\n" << endl;
cin >> n;
system("cls");
switch (n)
{
case 1: Search_1(); break;
case 2: Search_2(); break;
case 3: Search_3(); break;
case 4: Menu();
default: cout << "Введите корректный запрос\n" << endl; Menu();
}
}
void Search_1()
{
Postavshik A;
FILE*fp = fopen("Postavshik.txt", "r");
if (fp == NULL)
{
puts("Невозможно открыть файл!\n"); system("pause"); return;
}
int n = 0;
cout << "[1] Поиск по коду: " << endl;
cout << "[2] Поиск по дате: " << endl;
cin >> n;
char reqest[50];
cout << "Найти: ";
cin >> reqest;
while (fscanf(fp, "%s %s %s %s", &A.code, &A.name, &A.data, &A.qbooks) != EOF)
{
if (n == 1)
{
bool result = Compare(A.code, reqest);
if (result)
cout << A.code << " " << A.name << " " << A.data << " " << A.qbooks << "\n";
}
else if (n == 2)
{
bool result = Compare(A.data, reqest);
if (result)
cout << A.code << " " << A.name << " " << A.data << " " << A.qbooks << "\n";
}
system("pause");
system("cls");
Menu();
}
}
void Search_2()
{
Book B;
FILE*fp = fopen("Book.txt", "r");
if (fp == NULL)
{
puts("Невозможно открыть файл!\n"); system("pause"); return;
}
int n = 0;
cout << "[1] Поиск по коду: " << endl;
cout << "[2] Поиск по автору: " << endl;
cin >> n;
char reqest[50];
cout << "Найти: ";
cin >> reqest;

while (fscanf(fp, "%s %s %s %s", &B.code, &B.name, &B.autor, &B.qbooksall) != EOF)
{
if (n == 1)
{
bool result = Compare(B.code, reqest);
if (result)
cout << B.code << " " << B.name << " " << B.autor << " " << B.qbooksall << "\n";
}
else if (n == 2)
{
bool result = Compare(B.autor, reqest);
if (result)
cout << B.code << " " << B.name << " " << B.autor << " " << B.qbooksall << "\n";
}
system("pause");
system("cls");
Menu();
}
}
void Search_3()
{
Vedomost C;
FILE*fp = fopen("Vedomost.txt", "r");
if (fp == NULL)
{
puts("Невозможно открыть файл!\n"); system("pause"); return;
}
int n = 0;
cout << "[1] Поиск по номеру: " << endl;
cout << "[2] Поиск по сроку: " << endl;
cin >> n;
char reqest[50];
cout << "Найти: ";
cin >> reqest;

while (fscanf(fp, "%s %s %s %s", &C.num, &C.code_b, &C.data, &C.srok) != EOF)
{
if (n == 1)
{
bool result = Compare(C.num, reqest);
if (result)
cout << C.num << " " << C.code_b << " " << C.data << " " << C.srok << "\n";
}
else if (n == 2)
{
bool result = Compare(C.srok, reqest);
if (result)
cout << C.num << " " << C.code_b << " " << C.data << " " << C.srok << "\n";
}
system("pause");
system("cls");
Menu();
}
}
bool Compare(string source, string request)
{
bool result = false;
bool first = false;
int position = 0;
if (request.length() > source.length()) { return false; }
for (int i = 0; i < (int)source.length(); i++)
{
if (source[i] == request[position] && !first)
first = true;

if (first)
{
result = source[i] == request[position];
if (!result)
{
first = false;
position = 0;
}
else
position++;

if (i == (int)source.length() - 1 && position < request.length())
result = false;
}
}
return result;
}

Вернуться к обсуждению:
Нужно доделать поиск в программе
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2016, 16:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Задача на времена года, нужно доделать
Код такой. С зимой всё вроде правильно, а остальные не могу понять как делать, помогите доделать...

нужно доделать игру немного)(кому не сложно)
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; using namespace std; void main() {...

Нужно доделать программку (найти наибольшее из нечетных и количество четных чисел)
Всем привет! Помогите пожалуйста доделать програмку, скелет я сделал, сообразить не могу как...

Доделать код. Тема массивы. Нужно использовать массив для хранения ответа
Дана целочисленная прямоугольная матрица. Определить: 1. количество строк, содержащих хотя бы один...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.