Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 10.03.2013
Сообщений: 125
1

Ввод строк целиком

23.12.2016, 06:45. Показов 606. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал программу, в которой сортируются структуры данных.
Т.е. пользователь вводит кол-во книг и информацию о книгах. Поля имеют соответствующий тип данных.
Как ВЫВЕСТИ строковые данные полностью, а не 1 слово из каждой строки?
Ввод цело строки я смог реализовать с использованием
C++
1
  cin.sync();
как теперь вывести СТРОКИ. (например Имя и фамилия автора, название книги - ввожу несколько слов, но после сортировки
программа выдает на экран только первые слова из соответствующей строки)


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
84
85
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <windows.h>
 
using namespace std;
const LENGTH=256;
 
struct BOOK {
    char author[256], title[256];
    int year, page;
    double price;
}
;
 
void set_max_size()
{
    HANDLE out_handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD maxWindow = GetLargestConsoleWindowSize(out_handle); // размер самого большого возможного консольного окна
    SMALL_RECT srctWindow = { 0, 0, maxWindow.X - 5, maxWindow.Y - 5 };
    SMALL_RECT minWindow = { 0, 0, 0, 0 };
    SetConsoleWindowInfo(out_handle, true, &minWindow);
    SetConsoleScreenBufferSize(out_handle, maxWindow);
    SetConsoleWindowInfo(out_handle, true, &srctWindow);
    cout << "max console size X = " << maxWindow.X << "; " << "max console size Y = " << maxWindow.Y <<endl;
}
 
int cmp(const void* a, const void* b) {
    return ((BOOK*)a)->year-((BOOK*)b)->year;
}
 
 
void main ()
{
int i, n, j;
set_max_size();     // размер окна
system("color F0"); // цвет
 
printf("Enter quantity of books n=");
    scanf("%d", &n);
    BOOK base[256];
    for(i=0; i<n; i++)
    {
    cout<<"Book "<<i+1<<":"<<endl;
    cout<<"Title: ";
    cin>>base[i].title;
    cin.sync();
    cout<<"Author: ";
    cin>>base[i].author;
    cin.sync();
    cout<<"Year of release: ";
    cin>>base[i].year;
    cout<<"Quantity of pages: ";
    cin>>base[i].page;
    cout<<"Price: $";
    cin>>base[i].price;
    }
    cout<<"Unsorted Book list:"<<endl;
    for(i=0; i<n;i++)
    {
    cout<<"Book "<<i<<": ";
    cout<<"Title: "<<base[i].title;
    cout<<" Author: "<<base[i].author;
    cout<<" Year: "<<base[i].year;
    cout<<" Pages: "<<base[i].page;
    cout<<" Price: $"<<base[i].price<<endl;
    }
 
qsort(base,n,sizeof(base[n]),cmp);
   cout<<"Sorted Book list:"<<endl;
for (i = j; j < n; j++)
{
cout<<"Book "<<j<<": ";
    cout<<"Title: "<<base[j].title;
    cout<<" Author: "<<base[j].author;
    cout<<" Year: "<<base[j].year;
    cout<<" Pages: "<<base[j].page;
    cout<<" Price: $"<<base[j].price<<endl;
 
}
 
 
system("Pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2016, 06:45
Ответы с готовыми решениями:

Ввод и вывод строки целиком
Здравствуйте. Как реализовать ввод и вывод строки целиком, с пробелами и прочим? Спасибо.

Ввод строки из потокового файла целиком
В файле строка format ascii 1.0, оператор File&gt;&gt;Buffer; вводит только &quot;format&quot;. А как ввести...

Путем перестановок строк и столбцов (целиком) элемент надо переместить в правый верхний угол подмассива (Перевести программу в c++)
program zadanie_5; uses crt; const nn=5; var i, j, imax, jmax, n, k, m: integer; a:...

Копирование масива строк без открытия файла целиком
Здарова форумчане. Есть база sql 12gb (пробывал разбивать но прога виснет) хочу выдернуть к...

1
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
23.12.2016, 09:08 2
Цитата Сообщение от Teapot1488 Посмотреть сообщение
Ввод цело строки я смог реализовать с использованием
C++
1
cin.sync();
Это здесь при чём?
Цитата Сообщение от Teapot1488 Посмотреть сообщение
ввожу несколько слов, но после сортировки
программа выдает на экран только первые слова из соответствующей строки)
Вводить нужно используя не cin >> (читает до пробельного символа), а cin.getline() (читает, по умолчанию, до '\n').
http://www.cplusplus.com/refer... m/getline/
Не забывать, перед cin.getline(), убирать '\n' из потока (если перед этим использовался cin >> или scanf (кстати, зачем здесь эта отрыжка Си?)).
Распространенные ошибки
0
23.12.2016, 09:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2016, 09:08
Помогаю со студенческими работами здесь

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

Ввод массива строк и поиск среди них строк, содержащих заданную подстроку
Необходимо сделать вывод каждой строки, содержащей подстроку, а не только первой using System;...

Ввод массива строк и поиск среди них строк, содержащих заданный строковый фрагмент
Необходимо разработать консольное приложение для ввода с клавиатуры массива строк и поиска среди...

Ввод нескольких строк или массив строк
У меня есть массив строк. Нужно ввести несколько строк, но не получается. Вот код: int main()...

Ввод N строк
Пользователь может ввести n количество строк, с помощью чего можно считать эти строки в массив?

Ввод строк
Доброго дня. Проблема такая: при вводе нескольких строк программа вылетает #include&lt;iostream&gt;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru