В компилятор ничего не выводиться
Суть вопроса:Как вывести на экран название туроператора, и цену путевки, если название курорта начинается на «Трус», а количество дней более 18. Вот что написано в текстовом файле 1) Название курорта 2)Цена 3)Название туроператора 4)колличество дней
Трустровка:10000 Феерия@24
Лазаревское:20000 Альянс@10
Гострусо:30000 Сиеста@19
Трустоба:5900 Корал@17
Алдер:6780 Веди@20
Трустервазия:25000 Туристическая@20 Мой код:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include<fstream>
#include <WINDOWS.h>
using namespace std;
struct pytivka
{
char nazvaniekyrorta[100];
int cenapytivki[100];
char nazvanieoperatora[100];
int colvodnei[100];
}object;
int main()
{
setlocale(LC_ALL, "Ru");
ifstream phile("pytivka.txt");
if (!phile.is_open())
{
cout << "Ошибка открытия файла!";
return 0;
}
pytivka data;
char buffer[256];
const char pattern[] = "Трус";
while (phile.getline(buffer, 256))
{
char* token = strtok(buffer, ": @");
strcpy(data.nazvaniekyrorta, token);
token = strtok(NULL, ": @");
data.cenapytivki = atoi(token);
token = strtok(NULL, ": @");
strcpy(data.nazvaniekyrorta, token);
token = strtok(NULL, ": @");
data.colvodnei = atoi(token);
if (strncmp(data.nazvaniekyrorta, pattern, sizeof(pattern) - 1) == 0 && data.colvodnei > 18 )
{
cout << data.nazvanieoperatora << data.cenapytivki;
}
}
phile.close();
}
Ответы (1 шт):
Зачем вам массив
intв структуре? Правильно он вам не нужен, а нужна просто переменная типаintstrtokвозвращает подстроку разделенную по переданному в неё разделителю. В вашем случае данные в файле хранятся таким образом:Название курорта:Цена Название туроператора@кол-во днейЧтобы получить название курорта, нужно разделить строку по
:, чтобы получить цену по(пробел), для название туроператора по@и кол-во дней не важно по какому разделителю.Поподробней про
strtokможете почитать тутТам где нужно записать
nazvanieoperatoraвы записываете еще разnazvaniekyrorta.
Вот измененная внутри цикла часть:
char* token = strtok(buffer, ":");
strcpy(data.nazvaniekyrorta, token);
token = strtok(NULL, " ");
data.cenapytivki = atoi(token);
token = strtok(NULL, "@");
//Записываете название оператора
strcpy(data.nazvanieoperatora, token);
token = strtok(NULL, "");
data.colvodnei = atoi(token);