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

не могу понять что не так - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразовать строку, удалив каждый символ * и повторив каждый символ, отличный от * http://www.cyberforum.ru/cpp-beginners/thread78946.html
Кто может решить задачки по С++? Решите плиз 1. Дана строка. Указать те слова, которые содержат хотябы одну букву k. 2. Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три ьуквы. 3. Дана строка. Преобразовать ее, удалив каждый символ * и повторив каждый символ, отличный от *. 4. Дана строка символов, среди которых есть одна открывающаяся и одна...
C++ Сортировка выводимых данных в алфавитном порядке у меня вот такое задание Дан файл, состоящий из записей, которые содержат следующие поля: - фамилия, имя; - знак Зодиака; - дата рождения. Написать программу, выдающую - информацию о заданном человеке; - информацию о людях, родившихся под заданным знаком Зодиака, в алфавитном порядке. все сделал кроме последнего пункта, информацию выводит но как сделать в алфавитном порядке? http://www.cyberforum.ru/cpp-beginners/thread78940.html
не найден fstream.h ..... C++
#include <iostream> #include <fstream.h> #include "int.h" using namespace std; fatal error C1083: Cannot open include file: 'fstream.h': No such file or directory у меня Вижуал 2005... что за ерунда?
При запуске программы пишет Run-Time Check Failure #2 Stack around the variable 'mas' was corrupted C++
Программа, которая генерирует 20 случайных чисел от 3.5 до 9.7, и потом сравнивает, есть ли два числа, сумма которых меньше другого числа. Компилируется без ошибок, но при запуске пишет: Run-Time Check Failure #2 Stack around the variable 'mas' was corrupted Run-Time Check Failure #2 Stack around the variable 'c' was corrupted #include <iostream> #include <windows.h> #include...
C++ Найти отрезок максимальной длины в массиве А http://www.cyberforum.ru/cpp-beginners/thread78913.html
Найти отрезок максимальной длинны в массиве А из К элементов и вывести его на экран ,состоящий из элементов данного массива по правилу a1=an, a2=an-1(предпоследний),a3=an-2 итд где a1-'это первый элемент отрезка,an-последний элемент. Ребят помогите пожалуйста...Это моя курсовая задача. Я не знаю что делать , а у меня сдача в пятницу. Прошу вас
C++ Файлы и функции Народ... помогите с задачкой: Написать программу, вводящую в файл или читающую из файла ведомость студентов. Для получения места в общежитии формируется список студентов, который включает ФИО студента, группу, средний балл, доход на члена семьи. Вывести информацию о студентах, у которых доход на члена семьи менее двух минимальных зарплат, и записать эту информацию в текстовой файл. Я как бы... подробнее

Показать сообщение отдельно
zoker
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 8

не могу понять что не так - C++

24.12.2009, 11:33. Просмотров 539. Ответов 5
Метки (Все метки)

задание такое :
Структура "книга почтой":-наименование книги;-ФИО автора;-номер по каталогу;-издательство;-колличество в наличии(шт.);-стоимость книги.
Пользователь вводит номера по каталогу книг через пробел.Программа должна вывести список на экран ,с итоговой стоимостью.При этом каждой из них в списке необходимо уменьшить на 1 значение в поле "количество в наличии".Если количество равно 0,то такую запись необходимо удалить.Добавить новую "книгу почтой " в конец списка с введенными пользователем характеристиками.

Проблема: функция gets не срабатывает, следствие то что перебрасывает через 2 пункт меню в программе

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include "stdafx.h"
#include "stdio.h"
#include "student.h"
#include "stdlib.h"
#include "conio.h"
 
struct books
{
    char name[50];
    char writer[100];
    int number;
    char publisher[50];
    int amount;
    int price;  
}book[50];
 
int num_book=0,size=0;
 
void input ()
{
    char a[2];
    FILE *fp=fopen("books.txt", "wb");
    if (fp==NULL){printf(Rus("Ошибка при создании файла\n"));exit(0);};
    for(int i=0;i<99;i++)
    {
        printf(Rus("Название: "));  gets(book[i].name);
        printf(Rus("Автор: "));     gets(book[i].writer);   
        book[i].number=i+1;
        printf(Rus("Издательство: "));gets(book[i].publisher);
        printf(Rus("На складе: ")); scanf("%d",&book[i].amount);
        printf(Rus("Цена: "));      scanf("%d",&book[i].price);
        fwrite(&book[i], sizeof(book[i]),1,fp);
        num_book++;
        if (ferror(fp)!=NULL){printf(Rus("Ошибка при записи файла\n"));exit(0);};
        printf(Rus("\nЕсли хотите добавить еще одну книгу, нажмите Y ")); scanf("%s",&a);
        printf("\n");
        if(a[0]!='Y')break;
    }
    fclose(fp);
}
 
 
void number()
{
    int i,a,itog=0;
    char number[100];
    FILE *fp=fopen("books.txt", "r+b");
    if (fp==NULL){printf(Rus("Ошибка при создании файла\n"));exit(0);};
    printf("\n");
    printf(Rus("Введите номера книг по каталогу(меньше %d):\n"),num_book);
    gets(number);
    for(i=0;i<99;i++)
    {
        if(number[i]=='\0')break;
        if(number[i]>=0x30 && number[i]<=0x39)
        {
            if(number[i+1]>=0x30 && number[i+1]<=0x39)
            {
                if((number[i]+10*number[i+1])<=num_book)
                {
                    fread(&book[number[i]+10*number[i+1]], sizeof(book[i]), 1, fp);
                    printf(Rus("Название: %s\n"),book[i].name);
                    printf(Rus("Автор: %s\n"),book[i].writer);  
                    printf(Rus("Номер по каталогу: %d\n"),book[i].number);
                    printf(Rus("Издательство: %s\n"),book[i].publisher);
                    printf(Rus("На складе: %d\n"),book[i].amount);
                    printf(Rus("Цена: %d\n\n"),book[i].price);
                    book[i].amount--;
                    itog+=book[i].price;
                }
            }
        }
    }
    printf("\n-------------------------\n");
    printf(Rus("Итоговая сумма: %d\n"),itog);
    for(i=0;i<num_book;i++)
    {
        size+=sizeof(book[i]);
        fwrite(&book[i], sizeof(book[i]),1,fp);
    }
    fclose(fp);
}
 
void add()
{
    FILE *fp=fopen("books.txt", "r+b");
    if (fp==NULL){printf(Rus("Ошибка при открытии файла\n"));exit(0);};
    printf("\n");
    fseek(fp,long(size),SEEK_SET);
    printf(Rus("Название: "));  gets(book[num_book].name);
    printf(Rus("Автор: "));     gets(book[num_book].writer);    
    book[num_book].number=num_book+1;
    printf(Rus("Издательство: "));gets(book[num_book].publisher);
    printf(Rus("На складе: ")); scanf("%d",&book[num_book].amount);
    printf(Rus("Цена: "));      scanf("%d",&book[num_book].price);  
    printf("\n");
    num_book++;
    fwrite(&book[num_book], sizeof(book[num_book]),1,fp);
    fclose(fp);
}
 
void print()
{
    int i;
    FILE *fp=fopen("books.txt", "rb");
    if (fp==NULL){printf(Rus("Ошибка при создании файла\n"));exit(0);};
    printf("\n");
    printf(Rus("\nКаталог:\n\n"));
    if(num_book==0)num_book=1;
    for(i=0;i<num_book;i++)
    {
        fread(&book[i], sizeof(book[i]), 1, fp);
        printf(Rus("Название: %s\n"),book[i].name);
        printf(Rus("Автор: %s\n"),book[i].writer);  
        printf(Rus("Номер по каталогу: %d\n"),book[i].number);
        printf(Rus("Издательство: %s\n"),book[i].publisher);
        printf(Rus("На складе: %d\n"),book[i].amount);
        printf(Rus("Цена: %d\n\n"),book[i].price);
        printf("\n");
    }
    printf("\n");
    fclose(fp);
}
 
int main()
{
    int choise;
    bool flag=1;
    while(flag)
    {
        printf(Rus("Нажмите\n\t1-Для ввода книг в каталог\n\t2-Для ввода номеров и получения списка нужных книг\n\t3-Для добавления книги в конец каталога\n\t4-Для получения списка книг в наличии\n\t5-Для выхода из программы\n"));
        scanf("%d",&choise);
        printf("\n");
        switch(choise)
        {
            case 1:input();break;
            case 2:number();break;
            case 3:add();break;
            case 4:print();break;
            case 5:flag=0;break;
            default:printf("Неизвестная комманда\n");
        }
    }
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru