Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
exby
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 11
#1

Создать массив структур С++ - C++

07.06.2012, 11:51. Просмотров 1021. Ответов 10
Метки нет (Все метки)

Для книг, хранящихся в библиотеке, задаются регистрационный номер
книги, автор, название, год издания, издательство, количество страниц. Вывести список книг с фамилиями авторов, изданных после заданного года.

Вот что у меня получилось:
Работает, но на половину, т.е. Например: указываю что будет 3 книги, ввожу "год издания книги" (например 1950, 1930, 1960). Например требуется показать книги после 1945 года, НО в результате показывает ТОЛЬКО книгу 1950 года. Если бы был год 1950, 1948, 1960, то вывел бы все книги. В чем проблема? Где и что надо дописать?

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
#include <iostream.h> 
#include <string.h> 
int main () 
{ 
struct strc     // Объявление структуры strc 
     {  int id;
        char auth[40]; 
        char nazv[40];
        int year; 
        char izd[40];
        int str;
 
     } mstud[100];     // Объявление массива структур mstud 
int kng, i, y; 
cout << "Vvedite kol-vo knig" << endl;  
cin >> kng; 
  for (i=0; i < kng; i++)   // Ввод количество книг
 
    {   
cout << "Vvedite reg. nomer knigi" << endl; 
    cin >> mstud[i].id;          // Ввод регистрационного номера книги
cout << "Vvedite avtora" << endl; 
    cin >> mstud[i].auth;          // Ввод автора книги
cout << "Vvedite nazvanie knigi" << endl; 
    cin >> mstud[i].nazv;          // Ввод название книги
cout << "Vvedite god izdanija knigi" << endl; 
    cin >> mstud[i].year;          // Ввод года издания книги
cout << "Vvedite izdatel'stvo knigi" << endl; 
    cin >> mstud[i].izd;          // Ввод название книги
cout << "Vvedite kol-vo stranic knigi" << endl; 
    cin >> mstud[i].str;          // Ввод кол-во страниц книги
  }
 
 
{
cout << "Vvedite god knigi: ";
cin >> y;
 
for(i = 0; y < mstud[i].year; ++i)
  
        {
            cout << mstud[i].id;
 
        }
  
}
 
 
return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2012, 11:51     Создать массив структур С++
Посмотрите здесь:

Создать массив структур - C++
Создать массив структур и выполнить задание согласно своему варианту. Дана информация о шести вкладчиках в сберкассы. Структура имеет...

Создать массив структур - C++
Дайте плз рекомендации по решению. Дана информация о четырех вузах. Структура имеет вид: название вуза, число студентов, количество...

Создать массив структур на c++ - C++
Здраствуйте. Подскажите как развязать задание, которое задали. С + + учим 2 месяца, и мне трудно развязать его самой, а очень нужно....

Как создать массив структур? - C++
help

Создать массив структур из 10 элементов - C++
вот программа #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; struct human { private: char *_surname; ...

Создать динамический массив структур - C++
День добрый! Собственно задачка: Определить пользовательский тип (структуру), включающий в себя следующие поля: строка, целое число,...

Создать массив структур. Реализоать запросы - C++
Задача Создать массив структур, каждая из которых состоит из следующих элементов: факультет, курс, группа, фамилии студентов,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
22514 / 10919 / 1774
Регистрация: 12.02.2012
Сообщений: 18,067
07.06.2012, 11:57     Создать массив структур С++ #2
Голубчик!
Как только условие

C++
1
y < mstud[i].year;
будет нарушено - произойдет выход из цикла.

Надо написать так:

C++
1
2
for(i = 0; i < kng; ++i)
   if (mstud[i].year < y) cout << mstud[i].id;
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
07.06.2012, 12:04     Создать массив структур С++ #3
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
#include <iostream>
#include <conio.h>
#include<windows.h>
using namespace std;
void main () 
{ 
struct strc     // Объявление структуры strc 
     {  int id;
        char auth[40]; 
        char nazv[40];
        int year; 
        char izd[40];
        int str;
 
     } mstud[100];     // Объявление массива структур mstud 
int kng, i, y; 
cout << "Vvedite kol-vo knig" << endl;  
cin >> kng; 
  for (i=0; i < kng; i++)   // Ввод информации о студентах 
 
    {   
cout << "Vvedite reg. nomer knigi" << endl; 
    cin >> mstud[i].id;          // Ввод регистрационного номера книги
cout << "Vvedite avtora" << endl; 
    cin >> mstud[i].auth;          // Ввод автора книги
cout << "Vvedite nazvanie knigi" << endl; 
    cin >> mstud[i].nazv;          // Ввод название книги
cout << "Vvedite god izdanija knigi" << endl; 
    cin >> mstud[i].year;          // Ввод года издания книги
cout << "Vvedite izdatel'stvo knigi" << endl; 
    cin >> mstud[i].izd;          // Ввод название книги
cout << "Vvedite kol-vo stranic knigi" << endl; 
    cin >> mstud[i].str;          // Ввод кол-во страниц книги
  }
 
 
{
cout << "Vvedite god knigi: ";
cin >> y;
 
for(i = 0; i < kng; ++i)
  
        {
            if(y>= mstud[i].year)
            cout << mstud[i].id;
 
        }
  
}
 
 
_getch(); 
}
exby
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 11
07.06.2012, 12:05  [ТС]     Создать массив структур С++ #4
Цитата Сообщение от Catstail Посмотреть сообщение
Голубчик!
Надо написать так:

C++
1
2
for(i = 0; i < kng; ++i)
   if (mstud[i].year > y) cout << mstud[i].id;
спасибо помогло
Цитата Сообщение от Alt_Shift Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
for(i = 0; i < kng; ++i)
  
        {
            if(y>= mstud[i].year)
            cout << mstud[i].id;
 
        }
  
}
  
_getch(); 
}
спасибо, но в условии после заданного года
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
07.06.2012, 12:07     Создать массив структур С++ #5
Цитата Сообщение от exby Посмотреть сообщение
спасибо помогло

спасибо, но в условии после заданного года
значит знак поменять. не проблема ведь. Невнимательно прочитал просто
exby
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 11
07.06.2012, 12:08  [ТС]     Создать массив структур С++ #6
Цитата Сообщение от Alt_Shift Посмотреть сообщение
значит знак поменять. не проблема ведь. Невнимательно прочитал просто
Согласен, не проблема, в чем я и успешно справился
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
07.06.2012, 12:11     Создать массив структур С++ #7
п.с. вообще это лучше менюшкой оформить связкой свитч и дувайл
exby
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 11
07.06.2012, 12:20  [ТС]     Создать массив структур С++ #8
хочу сделать чтобы если нету книг по условии задачи, то писало бы предупреждение. Я сделал, но оно пишет столько раз, сколько заданных книг. В чем проблема?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
cout << "Vvedite god knigi: ";
cin >> y;
 
for(i = 0; i < kng; ++i)
   
if (mstud[i].year > y) 
cout << mstud[i].id;
 
else 
if (mstud[i].year <= y) 
cout << "nety knig posle" << y << "goda"<<endl;
   
  
}
Catstail
Модератор
22514 / 10919 / 1774
Регистрация: 12.02.2012
Сообщений: 18,067
07.06.2012, 12:25     Создать массив структур С++ #9
Надо так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cout << "Vvedite god knigi: ";
cin >> y;
 
int c=0;
for(i = 0; i < kng; ++i)
 
   if (mstud[i].year > y) 
      {
        cout << mstud[i].id;
        c=-1;
      }
      
if (c == 0) 
cout << "nety knig posle" << y << "goda"<<endl;
   
  
}
exby
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 11
07.06.2012, 12:36  [ТС]     Создать массив структур С++ #10
Цитата Сообщение от Catstail Посмотреть сообщение
Надо так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cout << "Vvedite god knigi: ";
cin >> y;
 
int c=0;
for(i = 0; i < kng; ++i)
 
   if (mstud[i].year > y) 
      {
        cout << mstud[i].id;
        c=-1;
      }
      
if (c == 0) 
cout << "nety knig posle" << y << "goda"<<endl;
   
  
}
а можно объяснить смысл переменнай "c". Может есть еще какие способы?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2012, 12:38     Создать массив структур С++
Еще ссылки по теме:

Создать указатель на массив структур ZODIAK. - C++
Народ, помогите плиз!!! Код: #include&quot;stdafx.h&quot; #include&lt;iostream&gt; using namespace std; struct ZODIAK

MALLOC Создать двумерный массив структур - C++
Доброго времени суток. Есть структура struct books { char* title; }; Как с помощью malloc создать двумерный массив? ...

Создать массив структур и выполнить задание - C++
Дана информация о 10 студентах. Структура имеет вид: фамилия, год рождения, факультет. Вывести данные о студентах по заданному факультету.

Как создать динамический массив структур? - C++
А как работать с вектором если я хочу динамический массив структур? т.е. допустим struct tovar { string name; int cost; ...

Создать массив структур, содержащий сведения о телепередаче - C++
Создать массив структур , содержащий сведения о телепередачи . Структура записи - № канала , название канала , тип передачи ( F -фильм , N-...


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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
22514 / 10919 / 1774
Регистрация: 12.02.2012
Сообщений: 18,067
07.06.2012, 12:38     Создать массив структур С++ #11
Переменная c - это индикатор (печаталось ли что-либо =-1; ничего не печаталось = 0).
Yandex
Объявления
07.06.2012, 12:38     Создать массив структур С++
Ответ Создать тему
Опции темы

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