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

Не работают 2 функции в коде - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Замена символов в строке http://www.cyberforum.ru/cpp-beginners/thread1055474.html
Каким образом выполнять замену в строке. Очень много читал но ничего не понял. Есть какой нибудь простой пример?
C++ Переопределить клавиши с использованием ассемблера Здравствуйте! Нужна помощь в написании программы которая переопределит клавиши на клавиатуре (только буквы), но при этом надо использовать ассемблер.Всё вроде легко делается, но проблема с ассемблером я его не знаю. Помогите пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread1055467.html
C++ Создать класс-шаблон, откладывающий выделение динамической памяти до первого реального обращения к массиву
нужно создать класс-шаблон, который откладывает выделение динамической памяти до первого реального обращения к массиву также нужно запрещенные конструктор копий и оператор копирующего присвоения; полноценные конструктор перемещения и оператор перемещающего присвоения перегруженные операторы доступа к элементам массива с автоматическим выделением памяти при первом обращении (версии для чтения...
C++ Пожалуйста напишите код, я новичок
1) Как рассчитать сумму всех элементов, являющихся min в своем столбце? 2) Как вывести таблицу на с++ , №-номер строки матрицы,% чисел, которые более не встречаются в матрице.
C++ Подсчитать количество слов, содержащих одинаковую группу символов http://www.cyberforum.ru/cpp-beginners/thread1055459.html
Подсчитать количество слов, содержащих одинаковую группу символов. int main() { char str,c,st = "Count of entering:"; int count, i, t, flag=0; printf("Enter string for search: "); scanf("%s",&str); for (t=0;str!='\0';t++); FILE *file;
C++ Подправьте код Постоянно ругается на choise, где бы я его не объявлял. Если можно, выложите что вы исправили, и объясните что я сделал нет так. #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream> using namespace std; подробнее

Показать сообщение отдельно
Веталя
1 / 1 / 0
Регистрация: 24.09.2012
Сообщений: 54

Не работают 2 функции в коде - C++

24.12.2013, 22:19. Просмотров 339. Ответов 15
Метки (Все метки)

Доброе время суток!
У меня такая проблема. Есть програма, и в ней не работают 2 функции. Вывод на екран и поиск (Print и Search). В чем может быть проблема?
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
147
148
149
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string.h>
#define n 5
struct student  // создаем структуру
{    
    char fam [20];// фамилия
    char name[20];//имя
    char ot[20];// отчество
    char adds[100];//адрес
    int age;//возраст
    int group;//группа
};
 
//добавление записи в файл
void Add(char const* ppath)
{
    std::ofstream ofs(ppath, std::ios::app);//открытие файла на запись, арр - сохраняет содержимое файла, если он существует
    if(ofs.bad() != true)//если файл открыт успешно
    {
        std::cout << "Vvedite chislo zapisey: ";
        int num;//вводим количество записей
        std::cin >> num;
        student tmp;//объявляем имя структуры
        for(int i = 0; i < num; ++i)
        {
            std::cout << "FIO: ";
            std::cin.sync();//очистка буфера потока cin
            std::cin.getline(tmp.name, sizeof(tmp.name));//getline -записывает в перменную n-е кол-во символов, sizeof(tmp.name) - виделяет память под размер (tmp.name)
            std::cin.getline(tmp.fam, sizeof(tmp.fam));
            std::cin.getline(tmp.ot, sizeof(tmp.ot));
            std::cout << "Adres: ";
            std::cin.getline(tmp.adds, sizeof(tmp.adds));
            std::cout << "Vozrast: ";
            std::cin >> tmp.age;
            std::cout << "Gruppa: ";
            std::cin >> tmp.group;
            ofs << tmp.name << '\n' << tmp.adds << '\n' << tmp.age << '\n' << tmp.group << '\n';//запись введённой записи в файл
 
        }
        ofs.close();//закрытие файла
    }
    else
        std::cerr << "Unable to open output file\n";
}
//Вывод файла в консоль
void Print()
{
        std::cout << "\nVse zapisi:\n";
        FILE *in;
        in=fopen ("c:\\Users\Spaser\Documents\Base_o.txt", "r");
   if (in=NULL)
   {
     std::cout<<"Error";
     return;
   }
    
}
//Редактирование или удаление записи. Удаление произойдёт если второй параметр равен true
void Edit(char const* ppath, bool rem = false)
{
    std::ifstream ifs(ppath);//открытие файла на чтение
    if(ifs.bad() != true)
    {
        int const arrsize = 500;
        student arr[arrsize];//массив в который будем читать
        int i;
        for(i = 0; i < arrsize; ++i)//чтение из файла в массив
        {
            ifs.getline(arr[i].name, sizeof(arr[i].name)).getline(arr[i].adds, sizeof(arr[i].adds)) >> arr[i].age >> arr[i].group;
            if(ifs.good() != true)
                break;
            ifs.getline(arr[i+1].name, sizeof(arr[i+1].name));//переход на новую строку файла
        }
        ifs.close();
        std::cout << "Vvedite nomer zapisi: ";
        int num;
        std::cin >> num;
        if(rem != true)//если запись не подлежит удалению то вводим новые данные с клавиатуры
        {
            std::cout << "FIO: ";
            std::cin.sync();
            std::cin.getline(arr[num-1].name, sizeof(arr[num-1].name));
            std::cout << "Adres: ";
            std::cin.getline(arr[num-1].adds, sizeof(arr[num-1].adds));
            std::cout << "Vozrast: ";
            std::cin >> arr[num-1].age;
            std::cout << "Gruppa: ";
            std::cin >> arr[num-1].group;
        }
        std::ofstream ofs(ppath);//открытие файла на запись
        for(int j = 0; j < i; ++j)//проход по массиву arr
        {
            if(!((j == num-1) && rem))//если текущая запись не подлежит удалению
                ofs << arr[j].name << '\n' << arr[j].adds << '\n' << arr[j].age << '\n' << arr[j].group << '\n';//запись в файл
        }
        ofs.close();
    }
    else
        std::cerr << "Unable to open input file\n";
}
//Поиск записи в файле
void Search(char const* ppath)
{
    struct student a[n];
    int j, i;
    char first [20];
    std::ifstream ifs(ppath);
    if(ifs.bad() != true)
    {
        for(i=0;i<n ;i++)
   {
   ifs>>a[i].fam;
   ifs>>a[i].name;
   ifs>>a[i].ot;
   ifs>>a[i].adds;
   ifs>>a[i].age;
   ifs>>a[i].group;
   std::cout<<a[i].fam<<"\t"<<a[i].name<<"\t"<<a[i].ot<<"\t"<<a[i].adds<<"\t"<<a[i].age<<"\t"<<a[i].group<<std::endl;
   }
    std::cout<<"vvedite familiyu dlya poiska\n";
    std::cin>>first;
   j=0;
   for(i=0;i<n;i++)
   if(strcmp (a[i].fam, first)==0)
   {
   std::cout<<"\n FIO:\n "<<a[i].fam<<" "<<a[i].name<<" "<<a[i].ot<<"\n age="<<a[i].age<<"\n adress="<<a[i].adds<<"\n group - "<<a[i].group;
  j=1;
 }
 if(j==0)
    std::cout<<"\n zapisey net";
    }
}
void main()
{   
    char const* ppath = "c:\\Users\Spaser\Documents\Base_o.txt";//файл в котором хранятся записи
    std::cout << "Dobavlenie zapisi\n";
    Add(ppath);
    Print();
    std::cout << "Redactirovenie zapisi\n";
    Edit(ppath);
    Print();
    std::cout << "Udalenie zapisi\n";
    Edit(ppath, true);
    Print();
    Search(ppath);
    system("Pause");
}
Добавлено через 30 минут
есть какие мысли?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru