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

Структура: Выполните сортировку данных по номеру билета - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Синтаксическая ошибка http://www.cyberforum.ru/cpp-beginners/thread793072.html
#include "stdafx.h" #include <conio.h> #include <stdio.h> #define eof -1 #define maxline 1000 int getline(char s ,int lim); int main() { char s; int y;
C++ Не могу разобраться с отчётом профайлера Всем доброго времени суток. Решал я простенькую задачку и решил для интереса посмотреть профайлером как оно там работает. Столкнулся с полным несоответствием тому, что я ожидал увидеть. Есть примерно такой код: // ввод n for (int i = 0; i <= n; ++i) if (is_palindrome(i) && is_palindrome(i*i)) // вывести число-палиндром, квадрат которого тоже палиндром http://www.cyberforum.ru/cpp-beginners/thread793066.html
Пережитки С C++
Добрый день. У меня вопрос по поводу пережитков языка С. Сегодня открыл чужой код и встретил такие конструкции: FILE *p_f = fopen(file_name, "filename"); fprintf(p_f, "VarName= %d\n", someVar); sprintf(data_name, "%s/data.txt", dir_name); и подобную хрень. Это случаем не считается пережитками? Я привык, что чтение/запись в файл происходит с помощью потоков. Или эти конструкции работают...
ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? C++
void Array::getArray() // вывод массива { for (int ix = 0; ix < size; ix++) cout << setw(5) << ptr; // вывод элементов массива на экран cout << std::endl; // новая строка } ostream &operator<< (ostream &output, const Array &obj) {
C++ Реализация while в своем компиляторе http://www.cyberforum.ru/cpp-beginners/thread793028.html
В качестве курсовой делаю простенький компилятор. На входе он получает примерно подобный код: int y=10; float h=5.2; write(y); float x; x=0; x=x+read; Все работает. Но есть задание добавить цикл while, и тут появились сложности. С моей корявой реализацией я не знаю как его зациклить и как выйти в нужный момент из этого цикла... Если прога получает такую строчку: while a>b c=c+1; b=b+1;...
C++ Сделать функцию, которая принимает двумерный массив и возвращает индексы его максимального элемента(номер строки и столбца), с указателями, С++ Сделать функцию, которая принимает двумерный массив и возвращает индексы его максимального элемента(номер строки и столбца), с указателями, С++ подробнее

Показать сообщение отдельно
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
23.02.2013, 18:23     Структура: Выполните сортировку данных по номеру билета
Цитата Сообщение от anubis1768 Посмотреть сообщение
struct student** arr; //создаем указатель на указатель на структуру
struct student* tmp;//создаем указатель на структуру
Цитата Сообщение от anubis1768 Посмотреть сообщение
arr=new struct student*[size];//виделяем память в куче для массива указателей
* * arr[0]=new struct student[size]; //виделяем память в куче для массива структур
не совсем уверен нужно ли дописывать struct каждый раз. Хватит и такого.
student** arr;
struct student* tmp;

arr=new student*[size];
arr[0]=new student[size];

теперь дальше.

Цитата Сообщение от anubis1768 Посмотреть сообщение
C++
1
2
for (int i=0; i<sze; i++) 
    arr[i]=arr[0]+i;
в предыдущем шаге мы выделили память указателю на массив arr[0]. Смысловой нагрузки нет в цикле. потому что к указателю на массив, идет попытка записать число. компилятор должен ругаться про невозможность приведения типов. Возможно тут идет попытка каждому указателю на массив присвоить указатель на первый массив.

Цитата Сообщение от anubis1768 Посмотреть сообщение
C++
1
fread(arr[0]+i, sizeof(struct aeroflot), size, f);
http://www.cplusplus.com/reference/cstdio/fread/
тут видимо опять попытка в цикле заполнить каждую строчку массива. Но если то что выше верно, то данные будут затираться и выйдет каша.


Цитата Сообщение от anubis1768 Посмотреть сообщение
C++
1
2
for (i=0; i<size; i++) 
* * * * for (int j=0; j<size-i-1; j++)
* * * * * *//опочему именно такой извращенный цикл? зачем?
врать не буду не знаю оО

Цитата Сообщение от anubis1768 Посмотреть сообщение
C++
1
if ( (arr[j]->bilet)>(arr[j+1]->bilet) ){ //операция arr[j] возвращает указатель на структуру, верно?
не совсем так. если был бы arr одномерным массивом, товернулся бы указатель на значение bilet объекта arr[i].
а так я даже и не знаю что вернётся, мусор. А скорее всего компилятор ошибку выдаст.
оператор точка дает нам доступ к отрытым частям структуры/класса, если мы имеем объект.
оператор -> дает тоже самое, если у нас не объект а указатель на него.

Цитата Сообщение от anubis1768 Посмотреть сообщение
Если не трудно, то напишите открытые файла через С++ класс ifstream, работу которого я более менее понимаю. У меня самого не получаеться вот код:
на счет этого опять же только ссылку могу дать, сам не часто ей в сях пользуюсь
http://www.cplusplus.com/reference/fstream/ifstream/
 
Текущее время: 06:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru