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

не выполняется switch - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите люди добрые http://www.cyberforum.ru/cpp-beginners/thread396248.html
Помогите решить задачку. См.ниже
C++ Программа со строками Написать класс для ефективной работи с рядками. Позволяющий форматировать и сравнивать рядки, сохранять в них числовые значения и доставать их. Для этого нужно реализовать: -Операторы присвоения и конкатенции -Операции сравнивания и приведения типов -Превращение в число любого типа -Результат формата рядка Написать программу которая демонстрирует роботу с этим классом. Программа должна... http://www.cyberforum.ru/cpp-beginners/thread396225.html
[C++] Операторы цикла C++
(я пишу в Dev-Cpp, писать начал около месяца назад...) Х изменяется в диапазоне от a до b с шагом h. Вычисление суммы вести до тех пор, пока очередное слагаемое не станет меньше e, причем это последнее слагаемое тоже учитывать. a = - 1 b = 1 h = 0.2 e = 10-8 (x+0.3)^1/2 /x если x < 1 F(x)= x 2 если x > =1 s(x) задается...
Описать класс используя 3 вида конструкторов C++
Компилятор у меня по идее кривой, ошибку не пишет а просто выдаёт прекращена работа программы Project1.exe Помогите понять в чём проблема. Просто описывается класс Цветы с использованием конструктора без параметров, с параметрами и конструктора с копированием #include <string.h> #include <tchar.h> #include <iostream.h> class Flowers {private:
C++ Системы классов. Помогите разрешить небольшую проблемку. http://www.cyberforum.ru/cpp-beginners/thread396206.html
В программе дается 3 действия на выбор. Надо сделать так, чтобы при вводе чисел f>3 программа возвращалась снова в меню выбора. ..... void Deistvie::Vibor() { cout<<endl; cout<<"Выберите действие: действие-1, действие-2, действие-3"; cout<<endl; cin>>f; }
C++ Указатели на матрицу Здравствуйте! Помогите пожалуйста решить задачу на Си (использую Builder) Дана матрица М(4х4). Ввести данные в матрицу с клавиатуры. Пере-вернуть четные ряды матрицы. Заранее спасибо. подробнее

Показать сообщение отдельно
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
02.12.2011, 08:09  [ТС]     не выполняется switch
со свичем разобралась, он работает, спасибо accept.
вся проблема в выполнении функции сортировки(((

Добавлено через 35 секунд
поможете разобраться???

Добавлено через 17 минут
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
#include <iostream>
#include <conio.h>
#include <fstream>
#include <vector>
#include <iomanip>
#include <cstdlib>
#include <algorithm>
#include <windows.h>
using namespace std;
 
 
// Структура описывающая запись в Записной книжке
struct _notebook
{
  char name[100],
       last_name[100],
       date[50],
       city[50];
  unsigned long int number;
  // перегруженый опертор "меньше"
  bool operator <(const _notebook &_2) const
  {
    return strcmp(name, _2.name) < 0;
  }
};
 
// Предикат для сортировки по имени
bool cmp_1(_notebook &_1, _notebook &_2)
{
  return tolower(_1.name[0]) < tolower(_2.name[0]);
}
 
// Предикат для сортировки по фамилии
bool cmp_2(_notebook &_1, _notebook &_2)
{
  return tolower(_1.last_name[0]) < tolower(_2.last_name[0]);
}
 
// Предикат для сортировки по дате рождения
bool cmp_3(_notebook &_1, _notebook &_2)
{
  char tokens_1[3][5], tokens_2[3][5];
  char tok_1[50], tok_2[50];
  int i = 0;
  strcpy(tok_1, _1.date); strcpy(tok_2, _2.date);
  for(char *p = strtok(tok_1, "."); p;  p = strtok(NULL, "."))
    strcpy(tokens_1[i++], p);
  i = 0;
  for(char *_p = strtok(tok_2, "."); _p;  _p = strtok(NULL, "."))
    strcpy(tokens_2[i++], _p);
  if(atoi(tokens_1[2]) != atoi(tokens_2[2]))
    return atoi(tokens_1[2]) < atoi(tokens_2[2]);
  else if(atoi(tokens_1[1]) != atoi(tokens_2[1]))
    return atoi(tokens_1[1]) < atoi(tokens_2[1]);
  return atoi(tokens_1[0]) < atoi(tokens_2[0]);
}
 
// Основной класс
class Notebook
{
private:
  _notebook data;
  void print_node(_notebook &n)
  {
    cout << "\nIm`9 - " << n.name << "\nFamiliya - " << n.last_name <<
    "\nData rowdenia - " << n.date << "\nNomer telefona - " << n.number <<
    "\nGorod - " << n.city;
  }
public:
  // Метод сортировки записей за именем
  void sort_by_name()
  {
    ifstream ifs("base", ios::in | ios::binary);
    vector<_notebook> vec;
    while(ifs.read((char *)&data, sizeof(_notebook)))
      vec.push_back(data);
    sort(vec.begin(), vec.end(), cmp_1);
    ifs.close();
    ofstream ofs("base", ios::out | ios::binary);
    for(int i = 0; i < vec.size(); ++i)
      ofs.write((char *)&vec[i], sizeof(_notebook));
  }
  // Метод сортировки записей за фамимлией
  void sort_by_last_name()
  {
    ifstream ifs("base", ios::in | ios::binary);
    vector<_notebook> vec;
    while(ifs.read((char *)&data, sizeof(_notebook)))
      vec.push_back(data);
    sort(vec.begin(), vec.end(), cmp_2);
    ifs.close();
    ofstream ofs("base", ios::out | ios::binary);
    for(int i = 0; i < vec.size(); ++i)
      ofs.write((char *)&vec[i], sizeof(_notebook));
  }
  // Метод сортировки записей за датой рождения
  void sort_by_date()
  {
    ifstream ifs("base", ios::in | ios::binary);
    vector<_notebook> vec;
    while(ifs.read((char *)&data, sizeof(_notebook)))
      vec.push_back(data);
    sort(vec.begin(), vec.end(), cmp_3);
    ifs.close();
    ofstream ofs("base", ios::out | ios::binary);
    for(int i = 0; i < vec.size(); ++i)
      ofs.write((char *)&vec[i], sizeof(_notebook));
  }
вот часть программы, проверяю Cout'ом,вставляю в функцию void sort_by_name()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void sort_by_name()
  {
    ifstream ifs("base", ios::in | ios::binary);
    vector<_notebook> vec;
    while(ifs.read((char *)&data, sizeof(_notebook)))
      vec.push_back(data);
    sort(vec.begin(), vec.end(), cmp_1);
    ifs.close();
    ofstream ofs("base", ios::out | ios::binary);
    for(int i = 0; i < vec.size(); ++i)
        cout << "SORTIR" << endl;   
       /* именно здесь ошибка, i - необъявленная переменная, а когда объявляю, то программа вынужденно завершается*/
      ofs.write((char *)&vec[i], sizeof(_notebook));
  }
 
Текущее время: 00:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru