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

сортировка массива стуктур посредством указателей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дано целое число N (> 0) и символ C. Вывести строку длины N, кото-рая состоит из символов C http://www.cyberforum.ru/cpp-beginners/thread1054825.html
ребят писал в MC visual, а в dev++ не компилируется, помогите плиз #include <cstdlib> #include <iostream> #include <clocale> using namespace std; int main(int argc, char *argv) { int n; char *s= "\0";
C++ Найти в каждом массиве среднее арифметическое простых элементов Из массива Х(N) все положительные элементы записать в массив Y(k). Найти в каждом массиве среднее арифметическое простых элементов. В программе написать функции: формирования массива Y, определения среднего арифметического простых элементов. http://www.cyberforum.ru/cpp-beginners/thread1054823.html
C++ Код С++.Исправить ошибку
#include "stdafx.h" #include <iostream> #include <string> #include <conio.h> using namespace std; class strana { public:
C++ Элементы массива A разместить в обратном порядке в массиве B
подскажите как это организовать
C++ Описать структуру с именем NOTE http://www.cyberforum.ru/cpp-beginners/thread1054804.html
Помогите пожалуйста решить!!! Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа NOTE; записи должны быть упорядочены по датам рождения; • вывод на дисплей информации об абоненте,...
C++ Вызов меню из меню Добрый день, начал писать простую программку что бы попрактиковаться. В программе даётся 3 пункта меню, нужно что бы при нажатии на любой пункт меню, открывалось его под меню. Т.е при нажатии на пункт меню, вызывалось меню типа (Под меню 1, под меню 2, под меню 3). Так вот, как реализовать это под меню, и как его прописать в case ? Вот сам код начала программы #include <iostream> using... подробнее

Показать сообщение отдельно
GrimSpirit
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 6
25.12.2013, 19:24  [ТС]     сортировка массива стуктур посредством указателей
в if в сортировке какой-то ужас во время дебага:
p = 0x002af654 {0x0037d4c0 {good=true a=0x0037d4c4 {2, 3, 4, 5, 2, -842150451, -842150451, -842150451, -842150451, ...} ...}, ...} arr *[10]

и еще: в цикле сичтывания из файла я сразу выставляю max:
C++
1
2
3
4
5
6
7
for(i=0;i<n;i++)    //заполняем массив
            for(j=0;j<m;j++)
            {fin>>matr[i].a[j];
            if(matr[i].a[j]>matr[i].max) matr[i].max=matr[i].a[j];//надо бы выставить значения max
            if(matr[i].a[j]==0) {count++; matr[i].good=false; continue;}//если в строке есть 0, то good=0, 
            }                                           //чтобы пропустить эту строку при сортировке
            fin.close();
Добавлено через 21 час 15 минут
доделал программу, надеюсь и другим поможет:

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
/*Дана целочисленная матрица А = {aij}, где 1<=i<=n; 1<=j<=m; 
Выбрать строки матрицы, не содержащие нулевых элементов, и отсортировать выбранные строки 
по возрастанию максимальных элементов таких строк. Если таких строк в матрице нет, выдать сообщение.*/
#include<iostream>
#include<fstream>
 
using namespace std;
const int N=10;
 
struct arr
{
    bool good; int a[N]; int max;
};
 
 
int main()
{
    int n,m,i,j,count=0;    //размерности; count для подсчета строк с нулями, если count == m, то выведем сообщение.
    ifstream fin("data.txt");
    if(fin.fail()) 
        cout<<"can't open data file"<<endl;
    fin>>m>>n;      //читаем размер матрицы
    
    arr *matr = new arr[n];
    for(i=0;i<n;i++)
        for(j=m;j<N;j++)
        {
        matr[i].a[j]=0;//обнулим все элементы в полях а
        }
 
        for(i=0;i<n;i++)
        {
            matr[i].good=true;//по умолчанию присвоим всем bool-элементам значение true
                matr[i].max=-32768;//присвоим всем элементам поля max начальное значение
        }
 
        
        
        for(i=0;i<n;i++)    //заполняем массив
            for(j=0;j<m;j++)
            {fin>>matr[i].a[j];
                if(matr[i].a[j]>matr[i].max) matr[i].max=matr[i].a[j];//надо бы выставить значения max
                if(matr[i].a[j]==0) {count++; matr[i].good=false; continue;}//если в строке есть 0, то good=0, 
            }                                           //чтобы пропустить эту строку при сортировке
            fin.close();
            
 
    for(i=0;i<n;i++)    //выводим изначальный массив на экран
    {
        for(j=0;j<m;j++)
    cout<<matr[i].a[j]<<" ";
    cout<<endl;
    }cout<<endl;
                
        arr *p[N];//объявляем масив указателей
        for(i=0;i<n;i++)
        {p[i] = &matr[i];} //p[i] - указатель на массив структур matr[i]
        
        arr *tmp= new arr;//пытаемся инициализировать структуру -_-
            tmp = p[0];
            
            for(int k=0;k<m;k++)//а вот здесь начинается сортировка -_-*
            {
                for(i=1;i<n;)
                for(j=0;j<n;)
                {
                    while(p[j]->good && p[i]->good==0){i++;}
                    
                    if( p[j]->good && p[i]->good &&
                         p[j]->max > p[i]->max)
                         {
                            tmp = p[j];
                            p[j] = p[i];
                            p[i] = tmp;
                        }
                    j+=2;i=j+1;             
                }
            }
        if(count==n)cout<<"All str have 0"<<endl;
    
if((n-count)>1) 
    for(i=0;i<n;i++)    //выводим полученный массив на экран
    {
        for(j=0;j<m;j++)
    cout<<p[i]->a[j]<<" ";
    cout<<endl;
    };
system("pause");
return 0;
}
 
Текущее время: 01:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru