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

Немного подправить. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ что не правильно? http://www.cyberforum.ru/cpp-beginners/thread89100.html
Я написал программу с помощью функций для транспонирования квадратной матрицы, но не пойму, как исправить ошибки. Подскажите, пожалуйста. И как можно доработать код, чтобы программа работала более эффективно. #include <iostream> #include <conio.h> using namespace std; const int size=4;
C++ Правильный ли код? Вот весь мой код в С++.Не пойму, где ошибка! Что то много всего.... Ругается С++ на "int main()" Если кто нить сможете, пожалуйста можете ошибки справить(( #include <vcl.h> #pragma hdrstop #include "main.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" http://www.cyberforum.ru/cpp-beginners/thread89084.html
Как создать таблицу в RichEdit? C++
Как создать таблицу в RichEdit?
C++ Циклы
Пожалуйста помогите решить задачу по С++! Вообще не понимаю в этом.... Задача состоит в следующем- Дано начальное число n=... и конечное m=...; при условии, что n<m. Найти сумму всех чисел от n до m.
C++ Две ошибки. только исправить. http://www.cyberforum.ru/cpp-beginners/thread89057.html
Выдает две ошибки: 1) 1>.\fg.cpp(110) : error C2360: initialization of 'year2' is skipped by 'case' label 1> .\fg.cpp(86) : see declaration of 'year2' 2) 1>.\fg.cpp(110) : error C2360: initialization of 'year1' is skipped by 'case' label 1> .\fg.cpp(86) : see declaration of 'year1' Разобраться сама не могу. Помогите. #define _CRT_SECURE_NO_DEPRECATE
C++ Сложение чисел ! недопуск на екзамен ! Нужно написать функцию, которая позволяет сложить ( + ) два целых положительных числа, без ограничения на величину чисел. Завтра нужно сдать, а то недопуск на экзамен, я набрасал прогу, вроде выводит результат, но что-то мне ,кажеться, я там нахомутал.... В общем нужно ваша помощь, гляньте что не так? ( #include <conio.h> #include <iostream.h> #include <stdlib.h> #include <string.h>... подробнее

Показать сообщение отдельно
Carpe
 Аватар для Carpe
0 / 0 / 0
Регистрация: 22.12.2009
Сообщений: 45
24.01.2010, 15:11     Немного подправить.
Имеется код программы. Он рабочий, но почему то при вводе данных в программу, в документе database.txt выводятся какие то символы, но ни как не то, что я ввела. Это первая проблема.
Вторая проблема в том, что не получается организовать поиск. Мне нужно, чтобы программа находила по автору и по промежутку годов все книги данного автора в введеный промежуток времени, но этого она не делает. (код пункта представлен ниже самой проги) и самое интересное, в консоли ввода\вывода, когда просишь программу показать, что в ней содержиться, программа пропечатывает кракозябры какие-то.
Мне очень нужно ее сделать. Помогите пожалуйста.

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
#define _CRT_SECURE_NO_DEPRECATE
 
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
 
 
struct knigi{
    char book[50];      // название книги
    char name[20];      // фамилия
    unsigned int year;          // год издания
};
 
FILE *f;
 
void menu(void) {
    printf(
        "\n"
        "1. Добавить.\n"
        "2. Просмотреть.\n"
        "3. Найти.\n"
        "9. Выйти.\n\n"
    );
}
 
int main() {
 
     setlocale(LC_ALL,"Russian");
 
    // открытие файла на запись
    FILE *f;
    f = fopen( "database.txt", "ab+" );
    if( f == NULL ) {
        printf( "Не удалось создать или перезаписать 'database.dat'. Нажмите клавишу...\n" );
        _getch();
        return -1;
    }
    menu();
 
    char c;
while(true) {
        printf( "\rВыберите режим работы: " );
        c = _getche();
        knigi t;
        switch (c) {
            case '1': // Добавление ----------------------------------
                printf( "\n\nПополнение базы 'database.txt'.\n"
                        "Для выхода в главное меню введите 0 вместо названия книги или фамилии автора.\n\n" );
                fseek( f, 0, SEEK_END );
 
    // работа с файлом
        while( true )  {
        printf( "Название книги: " );
        scanf_s( "%49s%*[^\n]5000s", t.book, 50 );
        if( t.book[0]=='0' ) break;
        printf( "Фамилия автора: " );
        scanf_s( "%19s%*[^\n]5000s", t.name, 20 );
        if( t.name[0]=='0' ) break;
        printf( "Год издания: " );
        scanf_s("%d", &t.year);
        fwrite( &t, sizeof(t), 1, f );
    printf( "Информация добавлена.\n\n" );
                }
        
        menu();
                break;
            case '2': // Просмотр ------------------------------------
                printf(
                    "\n\nСодержимое базы 'database.txt'\n\n" 
                    "\tНазвание книги:\tФамилия автора:\tГод издания:\n" );
                fseek( f, 0, SEEK_SET );
                setlocale( LC_ALL, ".866" );
                while( true ) {
    if( fread( &t, sizeof(knigi), 1, f ) !=1 ) break;
        printf( "\t%-15s\t%s\t\t%d\n", t.book, t.name, t.year );
                }
 
 
            setlocale( LC_ALL, ".1251" );
                menu();
                break;
case '3': // Поиск ---------------------------------------
    printf( "\n\nПоиск по базе 'database.txt'\n\n" );
char s[50];
    printf( "Введите название: " );
    scanf_s( "%49s%*[^\n]5000s", s, 50 );
 
printf( "\n\n\tНазвание книги:      \tФамилия автора:      \tГод издания:\n" );
    fseek( f, 0, SEEK_SET );
setlocale( LC_ALL, ".866" );
while( true ) {
    if( fread( &t, sizeof(knigi), 1, f ) !=1 ) break;
if( strstr( t.book, s ) != NULL )
    printf( "\t%-15s\t\t%s\t\t%d\n", t.book, t.name, t.year );
                }
setlocale( LC_ALL, ".1251" );
                menu();
                break;
            case '9': // Выход ---------------------------------------
                fclose(f);
                return 0;
        }
    }
}
код для поиска:
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
setlocale( LC_ALL, ".1251" );
                menu();
                break;
            case '3': // Поиск ---------------------------------------
                printf( "\n\nПоиск по базе 'database.txt'\n\n" );
char s[50];
//int year1=1990, year2=1999;
                printf( "Введите автора, год начада и год конца: " );
                scanf_s( "%s %d %d",&t.name,&year1,&year2 );
            printf( "\n\n\tФамилия автора:      \tНазвание книги:      \tГод издания:\n" );
                fseek( f, sizeof(knigi), SEEK_SET );
        setlocale( LC_ALL, ".866" );
                while( true )  
{
           if (feof(f)) break;
             fread(&f, sizeof(knigi), 1, f);
               if (t.year>year1 && t.year<year2)
                 {
                    for (int lt=0; lt<strlen(t.name); lt++)
                      {
                        if (t.name[lt]!=t.name[lt]) break;
                        if (lt==strlen(t.name)-1) 
                         {
                            printf("\n%s %s %d",t.book,t.name,t.year);
                         } 
                       } 
                  }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru