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

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

Войти
Регистрация
Восстановить пароль
 
viktorrrr
43 / 43 / 1
Регистрация: 11.02.2010
Сообщений: 363
#1

Массив структур - C++

17.07.2011, 20:59. Просмотров 455. Ответов 6
Метки нет (Все метки)

Эксперементирую тут с файлами. Что-то полная ерунда получается. ВОт я объявил массив структур, а при заполнении ерунда какая-то получается. Результатом записывается адрес в памяти как я понял и , после выхода из заполнения файла начинается рекурсивный бесконечный вызов инструкции cout<<"Нажмите один, чтобы начать заполнять список"<<endl; Подскажите, пожалуйста, ошибку. Да плюс, конечно, хотелось бы произвольно заполнять массив структур а не подряд

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
#include<iostream>
#include<fstream>
 
using namespace std;
void Record();
const int i=100;
struct Bibliotek{
    char Name[30];
    char Family[30];
    char Name_of_book[50];
};
Bibliotek Size[i];
void Record(){
 
 
    ofstream File("bibl.dat");
    if(!File){
        cerr<<"Problemi s failom";
        exit(1);
    }
    int a;
    cout<<"Введите слов"<<endl;
    for(a=0;a<i;a++){
    cin>>Size[a].Name;
    
    }
    File<<Size;
    File.close();
}
 
 
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int vibor;
    do{
        cout<<"Нажмите один, чтобы начать заполнять список"<<endl;
        cin>>vibor;
        switch(vibor){
        case 1:
    Record();
    break;
    
        }
    }while(vibor!=0);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2011, 20:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив структур (C++):

Блочная сортировка структур (Отсортировать массив структур по фамилии) - C++
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив структур по фамилии.

Массив структур, сохранение начала каждой из структур - C++
Я создал такую структуру class Lancuch { public: char cos; Lancuch * nastepny; }; Lancuch * poczatek=NULL; cin &gt;&gt;...

Как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю? - C++
Ребята подскажите как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю.

Массив структур в массиве структур - C++
Всем добрый день. Делаю менюшку для управления и терзаю Arduino IDE слегка подвис со следующей задачей. Я хочу определить две...

Ввести массив структур; рассортировать массив в алфавитном порядке - C++
Пришел из армии восстановился в универе и тут сразу курсавай. Помогите Исходные данные(описание структуры): Информация об...

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив? - C++
Допустим есть структура struct Base { int a; int b; int c; }; В основном методе main() объявим массив...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
17.07.2011, 21:33 #2
произвольно - это как? Имеете ввиду, что вводить не именно n штук записей, а пока сами не захотите закончить? Если да, то можно использовать некий "флаг окончания ввода"...
C++
1
2
3
4
5
do
    //...
    std::cout << "Message... ( y or n ) ";
    std::cin >> flag;
while ( flag != 'n' );
grizlik78
17.07.2011, 21:46
  #3

Не по теме:

Цитата Сообщение от viktorrrr Посмотреть сообщение
C++
1
const int i=100;
Ой какой неудачный выбор имени константы для обозначения размера массива...

viktorrrr
43 / 43 / 1
Регистрация: 11.02.2010
Сообщений: 363
17.07.2011, 21:48  [ТС] #4
Поняли правильно и при этом мочь проверять на пустоту . Не понял, как использовать флаг окончания ввода. Я же ввожу любые символы, как при этом выскочить из цикла-то? Как-то, наверно, по-другому надо заставить реагировать программу?
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
17.07.2011, 21:51 #5
viktorrrr, а вот здесь - фигня:
C++
1
2
for(a=0;a<i;a++){
        cin>>Size[a].Name;
i = 100, а размер Name - только 30.
Кроме того, тут до ближайшего пробела будет вводить.
Кроме того, имя i - очень неудачное.
Кроме того, глобальную константу не сразу в проге видать...
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
17.07.2011, 23:00 #6
Автор, я видел быдлкодеров, сам былокодер, но такого...

Короче, ты просишь чтобы можно было ввродить нужное количество структур и тут же устанавливаешь его минимум 100. ТЕбе самому не смешно? Если i это максимум, то вводи минимум дополнительно, вот так:

C++
1
2
3
4
5
        cout<<"Введи количество записей и слова"<<endl;
        int temp;
        cin>> temp;
        //очистим буфер
        fflush (stdin);
Дальше, давай сразу: если буфер массив char, используешь gets

C++
1
         gets (Size[a].Name);
Так, а в файл хорошо перегонять строки, то есть каждое имя дОлжно преобразовать в строку

C++
1
         File<<string (Size[a].Name)<< " Фамилии нет названия книги тоже нет"<< endl;
Теперь, а что ты только имя вводишь? Без фамилии иназвания книги? Ну у нас демократия.

Далее: чё ты не позаботился об окончании этой всей бодяги? Пишем так:

C++
1
                cout<<"Нажмите один, чтобы начать заполнять список или ноль чтобы прекратить этцу бодягу к чертям"<<endl;
И. кстати, если ты второй раз вздумаешь нажать на 1, то то, что ты записал в файл вначале, затрётся к матери. Поэтому окрытие и закрытие файла вынеси в основную функцию. Короче с учётом всех замечаний и местных условий:


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
#include <windows.h>
#include<iostream>
#include<fstream>
 
using namespace std;
void Record();
const int i=100;
struct Bibliotek{
        char Name[30];
        char Family[30];
        char Name_of_book[50];
};
Bibliotek Size[i];
void Record(){
 
 
        ofstream File("bibl.txt");
        if(!File){
                cerr<<"Problemi s failom";
                exit(1);
        }
        int a;
        cout<<"Введи количество записей и слова"<<endl;
        int temp;
        cin>> temp;
        //очистим буфер
        fflush (stdin);
 
           
        for(a=0;a<temp;a++){
         gets (Size[a].Name);
         File<<string (Size[a].Name)<< " Фамилии нет названия книги тоже нет"<< endl;
        }
 
        File.close();
}
 
 
 
int main()
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
        setlocale(LC_ALL,"Russian");
        int vibor;
        do{
                cout<<"Нажмите один, чтобы начать заполнять список или ноль чтобы прекратить этцу бодягу к чертям"<<endl;
                cin>>vibor;
                switch(vibor){
                case 1:
        Record();
        break;
        
                }
        }while(vibor!=0);
        return 0;
}
Плюс тебе, что вроде сам писал.

Добавлено через 1 минуту
Ещё: придётся тебе, друже, отслеживать вручную длину имени и всех вводимых величин если надумаешь их вводить. Иначе кранты.
viktorrrr
43 / 43 / 1
Регистрация: 11.02.2010
Сообщений: 363
17.07.2011, 23:13  [ТС] #7
Каюсь! Стыдно!! ))
Но я мало еще понимаю что.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2011, 23:13
Привет! Вот еще темы с ответами:

«Массив структур» - C++
Написал программу на написание функции чтения в массив структур из файла. Данные «Пациент». Программа не работает, а именно при...

Массив структур - C++
Информация о дисциплине содержит название, количество часов лекций, количество часов практических занятий, фамилию преподавателя. Вывести...

Массив структур - C++
Задача:создать массив структур а,содержащий фамилию и 3 оценки.Найти студентов,чей средний балл выше среднего группы и упорядочить по...

массив структур - C++
Вопрос собственно говоря простой: как объявить функции, работающие с массивом структур как то ввод, вывод и т.д. и т.п. Это первый вопрос....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.07.2011, 23:13
Ответ Создать тему
Опции темы

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