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

Упорядочить элементы структуры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ пытаюсь написать браузер http://www.cyberforum.ru/cpp-beginners/thread1026122.html
Добрый день.Работаю в Visual C++. Сделал браузер на WebBrowser.Движок IE.Работает.Браузерная строка и 4 кнопки-перейти,обновить,вперед,назад. Но не пойму. 1)все время вылезает -произошла ошибка сценария.Продолжить?Нажимаю и да и нет-работает одинаково. Как это окно убрать или отключить. 2)Это я сделал на движке IE.А как на других движках.Это надо переходить с Visual C++ на другие...
C++ вычислить и вывести на экран значение функции вычислить и вывести на экран значение функции F(x) на отрезке с шагом h=0.1 и точностью e. Результат работы программы представить в виде след.таблицы: №, Значение х, значение функции F(x), Кол-во просуммированных слагаемых n. F(x)=-x/2!+x^3/4!-x^5/6!+x^7/8!-..., x принадлежит http://www.cyberforum.ru/cpp-beginners/thread1026119.html
Алгоритм std::set_union C++
Добрый вечер, попалась задача на данный алгоритм,библиотека <algorithm> подключена. Метод класса вызывается вот таким образом, pe.plansUnion(pe2);,где pe, pe2-объекты класса PlanEducation, в каждом из них есть поле vector<subject> discipls, но тут, видимо, это не важно. Важно вот, что: void PlanEducation::plansUnion(const PlanEducation& otherPlan){ vector<subject> disciplsUnion; ...
C++ Сформировать и распечатать квадратную матрицу
Сформировать и распечатать квадратную матрицу А(10,10) следующего вида: 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0
C++ Код на С++ не корректно работает http://www.cyberforum.ru/cpp-beginners/thread1026104.html
Задача: В одномерном массиве A=(a1, а2, ..., аn) все положительные элементы, имеющие четный порядковый номер, переписать в начало массива. #include"stdafx.h" #include"iostream" #include"conio.h" #include<time.h> using namespace std; void main() {
C++ Написать программу, которая считывает линейный массив натуральных чисел из файла Пожалуйста помогите написать программу: 1.Написать программу, которая считывает линейный массив натуральных чисел из файла, имя которого вводится с клавиатуры, и выводит на экран те элементы, которые являются простыми числами. Заранее благодарен!!! подробнее

Показать сообщение отдельно
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
03.12.2013, 17:12  [ТС]     Упорядочить элементы структуры
Цитата Сообщение от newbie666 Посмотреть сообщение
у тебя во всех случаях и при любой сортировке ошибка

Добавлено через 7 минут
Слушай, у меня времени ща нет, я не буду твой код фиксить - сам тогда посмотри, я тебе просто скажу, в чём ошибка:
1. у тебя проблемы в любой сортировке. Любая сортировка проходит успешно, если её провести дважды
2. Проблема в следующем участке кода:
C++
1
2
3
4
5
6
7
8
for(int i=0;i<n-1;i++)
            {
                k=i;
                for(int j=i+1;j<n;j++)
                {
                    if (people[k].stat > people[j].stat)
                        k=j;
                }
у тебя второй цикл пробегает по всем элементам и значение K получается вообще случайным, понимаешь? И только после этого у тебя идёт перестановка элементов. Тебе надо ПРОВЕРИТЬ СОСЕДНИЕ, ПЕРЕСТАВИТ ЕСЛИ НАДО, А ПОТОМ ПРОДОЛЖАТЬ ЦИКЛЫ. Понял?

Добавлено через 53 секунды
и не забудь мне поставить положительнынй отзыв ))))))
Пишу словами:
Начинаем с первого элемента...(внешний цикл)
Сравниваем со всеми еще не проверенными... (внутренний цикл начинается со следующего)
находим минимальный среди непроверенных... (внутренний цикл)
запоминаем текущий...(внешний цикл)
меняем текущий на этот минимальный...(внешний цикл) и его мы трогать уже не будем во внутреннем цикле т.к j=i+1
текущий записываем туда где был минимальный (внешний цикл)
и т.д. пока не проверим все элементы, что в этом алгоритме вам не понятно? это фундаментальный алгоритм и он верен... Таким образом элементы будут упорядочены по возрастанию.
проверьте по шагам над цифрами 4,3,2,1 и вы будете приятно удивлены что алгоритм верен...
Если бы дело было в алгоритме это было бы так просто)!!!
Но все равно Спасибо за попытку помочь, все таки я думаю и без этого есть чем заняться.

Добавлено через 2 минуты
Цитата Сообщение от Algoritmer Посмотреть сообщение
Я кое-что добавил. Теперь работает. Сам заметишь?
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
//#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
struct Man
{
    string fio;
    int date;
    double stat,weight;
    char gen;
};
 
void Init(Man **people,int n)
{
    char gent,Mas_Char[30];
    for (int i=0;i<n;i++)
    {
         people[i]=new Man;
        cin.sync();
        cout <<"\nВведите ФИО: ";
        cin.getline(Mas_Char,30);
        people[i]->fio=Mas_Char;
        cout <<"Введите год рождения: ";
        cin >>people[i]->date;
        cout <<"Введите рост человека: ";
        cin >>people[i]->stat;
        cout <<"Введите вес человека: ";
        cin >>people[i]->weight;
        cout <<"Введите пол человека ""м"" или ""ж"": ";
        label:cin >>gent;
        if ((gent=='м')||(gent=='ж'))
            people[i]->gen=gent;
        else 
        {
            cout <<"Введите ""м"" или ""ж"": ";
            goto label;
        }
    }
}
 
void Print(Man **people,int n)
{
    fstream file;
    file.open("people.txt",ios::app);
    if (file)
    {   
        for (int i=0;i<n;i++)
        {
            file <<"\n"<<"ФИО человека      : "<<people[i]->fio<<"\n";
            file <<"Год рождения      : "<<people[i]->date<<"\n";
            file <<"Рост              : "<<people[i]->stat<<"\n";
            file <<"Вес               : "<<people[i]->weight<<"\n";
            file <<"Пол               : "<<people[i]->gen<<"\n";
        }
                
    }
    else cout <<"Файл не может быть открыт или создан!";
    file.close();
}
 
void Display(Man **people, int n)
{
    for(int i=0;i<n;i++)
        {
            cout <<"\nФИО человека      : "<<people[i]->fio<<"\n";
            cout <<"Год рождения      : "<<people[i]->date<<"\n";
            cout <<"Рост              : "<<people[i]->stat<<"\n";
            cout <<"Вес               : "<<people[i]->weight<<"\n";
            cout <<"Пол               : "<<people[i]->gen<<"\n";
        }
}
 
void Sort(Man **people, int n, int z, int priz)
{
    int k;
    Man* buff;
    switch (priz)
    {
    case (0):{
    for(int i=0;i<n-1;i++)
    {
        k=i;
        for(int j=i+1;j<n;j++)
        {
            if (people[k]->weight > people[j]->weight)
                k=j;
        }
        buff=people[i];
        people[i]=people[k];
        people[k]=buff;
    }
             break;}
    case (1):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k]->stat > people[j]->stat)
                    k=j;
            }
            buff=people[i];
            people[i]=people[k];
            people[k]=buff;
        }
             break;}
    case (2):{
        for(int i=0;i<n-1;i++)
        {
            k=i;
            for(int j=i+1;j<n;j++)
            {
                if (people[k]->date < people[j]->date)
                    k=j;
            }
            buff=people[i];
            people[i]=people[k];
            people[k]=buff;
        }            
             break;}
    }
    if (z==1)
    {
        Man** pep2=new Man*[n];
        for (int i=0;i<n;i++)
            pep2[i]=people[n-i-1];
        delete []people;
        people=pep2;
    }
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    //SetConsoleOutputCP(1251);
   // SetConsoleCP(1251);
    int n,poss,poss1,i;
    cout <<"Введите количество человек: ";
    cin >>n;
    Man** people = new Man*[n];
    Man* tmp;
    Init(people,n);
    lab:system("cls");
    cout <<"\nВыберите:";
    cout <<"\n0---------->Вывод на экран";
    cout <<"\n1---------->Вывод в файл";
    cout <<"\n2---------->Сортировка";
    cout <<"\n3---------->Выход!";
    cout <<"\n---->";cin >>poss;
    switch (poss)
    {
    case (0):
        Display(people,n);
        system("pause");
        break;
    case (1):
        Print(people,n);
        break;
    case (2):{
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По возростанию";
        cout <<"\n1---------->По убыванию";
        cout <<"\n---->";cin >>poss;
        cout <<"\nВыберите метод сортировки:";
        cout <<"\n0---------->По Возрасту";
        cout <<"\n1---------->По Росту";
        cout <<"\n2---------->По Весу";
        cout <<"\n---->";cin >>poss1;
        Sort(people,n,poss,poss1);
        break;
             }
    case (3):
        exit(0);
        system("pause");
        break;
    }
    goto lab;
    return 0;
}
Конечно замечу строка 27 инициализация массива только вот я не совсем в это въезжаю, ну в смысле массив указателей на указатели) Попробую Спасибо!

Добавлено через 11 минут
После 3 го четвертого раза сортировки выдает
Необработанное исключение в "0x010e5746" в "Lab_Rab11_01.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeeff02".

Добавлено через 1 минуту
И да проблемы остались те-же сортировка проходит по полю stat и не проходит по остальным (хотя все идентично!!!)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru