Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: akaGM
Дата сообщения: 04.04.2012 15:39
Irta3
какой фортран?

а С++, надо полагать, борландовый?
Автор: Irta3
Дата сообщения: 04.04.2012 16:16
Это программы из книги. Сделать все надо в линуксе. Имеющиеся компиляторы gfortran и т.п.(gcc,g++). установлен и интеловский ifort

какой фортран?

а С++, надо полагать, борландовый?

А что значит борландовый С++ в Линуксе? (Не исключаю, что очень туплю)
Автор: akaGM
Дата сообщения: 04.04.2012 16:42
Irta3
пардон, не понял, что это надо для Linux

попробуй вот так:

gfortran -c fortran.f -o fortran.o
g++ main.cpp fortran.o -o main
Автор: karakurt2
Дата сообщения: 04.04.2012 16:44
Irta3
gfortran -c fortran.f
gcc main.cpp fortran.o -lstdc++

исходник на С++ лучше поменять в соответствии со стандартом, видимо книжка древняя
Автор: Irta3
Дата сообщения: 04.04.2012 19:11
Всем спасибо за ответы.

Получилось, правда вот так

Заменила в С программе
extern "C"
{
void fr1_ (int *, int *);
int ff1_ (int *);
}

Ну и в проге соотв. поменяла имена функций.

g++ -c main.cpp
gfortran -c fortran.f
g++ main.o fortran.o -o main
Автор: akaGM
Дата сообщения: 04.04.2012 19:48
Irta3
молодец...

с фортраном, если что, заходи сюда:

http://forum.ru-board.com/topic.cgi?forum=33&topic=7860#1
Автор: bomzzz
Дата сообщения: 05.04.2012 12:00
посмотрите пожалуйста чему равно IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
Автор: bomzzz
Дата сообщения: 05.04.2012 14:40
нашёл сишный инклуд все эти переменные в неявном виде задяются через макрос.
никто не может сделать программку чтоб список всех IOCTL переменных получился с их числовыми значениями.
эта ведь не очень сложно
Автор: Eminence
Дата сообщения: 05.04.2012 18:20

Цитата:
никто не может сделать программку чтоб список всех IOCTL переменных получился с их числовыми значениями

Такую программу сделать невозможно. Макросы - это только символические имена, вместо которых компиллятор (а, точнее, препроцессор) подставляет их значения, в данном случае - те самые цифры, которые ты видишь в инклудах. А сама функция IOCTL принимает только числовые значения. Таким образом, смотри документацию либо непосредственно заголовочные файлы, другого пути нет.




Автор: kotlomoy
Дата сообщения: 05.04.2012 18:45
bomzzz

Цитата:
посмотрите пожалуйста чему равно IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS

А зачем это знать?
Автор: cp58
Дата сообщения: 05.04.2012 22:29
bomzzz
Хватит стандартных утилит ОС или использовать любой язык программирования, попроще, чтобы не компилировать с библиотекой регулярных выражний вроде PCRE. Возьмите файл(заголовочный) и оттуда регулярным выражением взять все значения вида (IOCTL_[a-Z_])\s+([0-9]+).
Автор: bomzzz
Дата сообщения: 05.04.2012 22:50
Потому, что MASM - макроассемблер самодельный. конечно он микрософтовский - его выкалупали из Си, но все инклуды и библиотеки делал фактически один человек. и естественно он не мог прям все туда напихать. и вот некоторые константы и функции на объявлять самому. а вот эти переменные - их числовые значения, не указаны в мсдне, и так как они не самые часто используемые и нагуглить их непросто, какие то гуглятся, а какие то только коды с их участием но без указания чему они равны. а некоторых биболиотек вообше нет приходиться через LoadLibruary делать.

Добавлено:

Цитата:
.386

.model flat, stdcall
option casemap :none

include \MASM32\INCLUDE\windows.inc
include \MASM32\INCLUDE\user32.inc
include \MASM32\INCLUDE\kernel32.inc
includelib \MASM32\LIB\user32.lib
includelib \MASM32\LIB\kernel32.lib

.data
form db "MAX_PATH: %u", 0
.data?
buffer db 32 dup(?)

.code
start:
invoke wsprintf,ADDR buffer,ADDR form,MAX_PATH
invoke MessageBox,0,addr buffer,0,MB_ICONASTERISK
invoke ExitProcess,0
end start

ниче особо сложного нет. нужно хитрючесть проявить скопировав список с мсдна в ворд, и прващение его в часть кода

IOCTL_DISK_GET_DRIVE_GEOMETRY = 70000h
IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS = 560000h
две есть

Добавлено:
лана спасибо, я какие то жасма-фасмавские инклуды нашел и экспортировал


Автор: bomzzz
Дата сообщения: 06.04.2012 11:25
как узнать GUID ( \\?\{GUID} ) unmounted-неподключенного или hide-невидимого volume-тома-раздела

тот который возвращается FindFirstVolume-FindNextVolume но только для монтированных разделов
Автор: blaro
Дата сообщения: 13.04.2012 17:06
У меня такой вопрос. Я пишу программу управления банком (лабораторная работа). Написал все функции которые просили. Везде написал почти одно и тоже (то есть доступ к данным в структуре) половина программы проходит компиляцию и компилятор не ругается, а вторая половина не проходит компиляцию и компилятор ругается, хотя написано одно и тоже. Помогите понять почему так происходит.
Вот код. Здесь представлены 3 заголовочных файла и одна функция.
[more=Код]
#ifndef BANKHEAD_H_
#define BANKHEAD_H_
#include "BranchHead.h"
#define BRANCHES 500

typedef struct Bank
{
    char name[10],account[10];
    int branchNumber,loans;
    double totalClientsSum,BankYearProfit;
    Branch listOfBranches[BRANCHES];
}Bank;
Функции...
#endif /* BANKHEAD_H_ */

#ifndef BRANCHHEAD_H_
#define BRANCHHEAD_H_
#include "ClientsHead.h"
#define CLIENTS 10000

typedef struct Branch
{
    int branchNumber,numberOfAccounts,BranchLoans;
    char branchName[20],openHour[6],closeHour[6];
    double totalClientSum,BranchTotalProfit;
    Client listOfClients[CLIENTS];
}Branch;
Функции....
#endif

#ifndef CLIENTS_H_
#define CLIENTS_H_

typedef struct Clients
{
    char PrivateName[20],LastName[20],Id[9];
    int AccountNumber,BranchNumber;
    double maxOverdraft,CurrentBalance,LoanBankBalance,PakamBalance;
}Client;
Функции...
#endif

void depositeMoneyToClientsAccount(char PName,char LName,char Id,double amount);
#endif /* CLIENTS_H_ */
void deleteBranch(int branchNumber)
{
    int i,j;
    Bank b;
    for(i=0;i<BRANCHES;i++)
    {
        for(j=0;j<CLIENTS;j++)
        {
            if(b[i].listOfBranches[j].branchNumber==branchNumber)//Здесь компилятор может выкинуть сообщение типа: passing argument 2 of ‘strcmp’ makes pointer from integer without a
     cast или второе как показано ниже
            {
                b[i].listOfBranches[j].BranchLoans=0; //Здесь компилятор говорит: subscripted value is neither array nor pointer nor vector
                b[i].listOfBranches[j].BranchTotalProfit=0;
                b[i].listOfBranches[j].branchName="";
                b[i].listOfBranches[j].branchNumber=0;
                b[i].listOfBranches[j].closeHour="";
                b[i].listOfBranches[j].listOfClients=NULL;
                b[i].listOfBranches[j].numberOfAccounts=0;
                b[i].listOfBranches[j].openHour="";
                b[i].listOfBranches[j].totalClientSum=0;
            }

        }
    }
}
[/more]
Автор: karakurt2
Дата сообщения: 13.04.2012 17:44
blaro
переменная b объявлена как скалярная величина, о обращение к ней задано как к массиву.
Автор: blaro
Дата сообщения: 13.04.2012 18:19
karakurt2
А понятно. Спасибо. А что значит: passing argument 2 of ‘strcmp’ makes pointer from integer without a cast?

Добавлено:
И что значит undefined reference to main. Хотя main у меня определен
Автор: karakurt2
Дата сообщения: 13.04.2012 18:51
blaro
Думаю, это наведённые ошибки. Ни main, и strcmp не вижу.
Автор: blaro
Дата сообщения: 13.04.2012 19:37
Да все там есть. Все библиотеки включены в проект

Добавлено:
karakurt2
Я нашел проблему. Там во всем проекте что то странное было. Эклипс видел старые файлы и не видел новые, так что когда я случайно "скомпилил" проект без функции main он почему то это запомнил, а потом когда добавил main он её не принял во внимание.
Такой вопрос: если у меня есть в структуре статический массив структур, как мне его обнулить чтобы все ячейки были пустыми?

Добавлено:

Цитата:
если у меня есть в структуре статический массив структур, как мне его обнулить чтобы все ячейки были пустыми?

Уже не важно...
Всем спасибо
Автор: karakurt2
Дата сообщения: 13.04.2012 23:20
blaro
Тут телепатов нет, в следующий раз когда попросите помощи, выкладывайте весь код.
Автор: blaro
Дата сообщения: 14.04.2012 01:07
karakurt2
Да пожалуйста. Только кто будет читать 1000 строк кода.
Автор: Mantikor123
Дата сообщения: 16.04.2012 17:02
Собственно вопрос такой кто может в 2-3словах(предложениях) объяснить что такое списки? Ссылки давать не нужно читал и голову сломал....


и собственно что вобще требуеться от меня в этом задании

Цитата:
Написать функцию, которая определяет, является ли список упорядоченным по убыванию. Во множеством следует понимать совокупность попарно различных элементов.


Цитата: Написати функцію, що визначає, чи є список упорядкованим за спаданням. Під
множиною варто розуміти сукупність попарно різних елементів.
Автор: bomzzz
Дата сообщения: 16.04.2012 18:08
нужно двумерный массив (названный каким то дятлом список) два элемента на N элементов проверить - является ли он упорядоченным по убыванию

3, 3
2, 2
1, 1

является

2, 2
3, 3
1, 1

не является.

3, 3
3, 2
3, 1
является

то есть от тебя требуется даже не реализация метода быстрой сортировки, а всего то сравнить каждый элемент со следующим и если следующий меньше, перейти к нему. если ты конечно там какую то науку, мне неведомую, не изучаешь где есть термин "список". а если скажут неправельна - скажешь учитесь правельна формулировать задачи
Автор: Abs62
Дата сообщения: 16.04.2012 18:12
Mantikor123

Цитата:
Собственно вопрос такой кто может в 2-3словах(предложениях) объяснить что такое списки?

Список - это набор элементов, каждый из которых содержит ссылку на соседний элемент. В односвязном списке каждый элемент содержит ссылку на последующий элемент. В двусвязном списке каждый элемент содержит две ссылки - на последующий и на предыдущий элемент. Вроде как ничего сложного.

Цитата:
Собственно бог с ним с пониманием но кто толково объяснит что требуется в задании сделать?

Пройтись по списку и проверить, везде ли последующий элемент меньше предыдущего.

bomzzz
Массивы и списки - это разные сущности.
Автор: bomzzz
Дата сообщения: 16.04.2012 18:21

Цитата:
Массивы и списки - это разные сущности.

мине усё панятна - специальным образом организованный массив. а откуда этот термин "списки" из Си?


Цитата:
каждый из которых содержит ссылку на соседний элемент

вот эта не совсем понятно. размер что ли?
типа вот такого что ли? только тут немного навыворот

Цитата:
Mtype    db 'Format is unknown',0
    db 'A5.25" floppy, with 1.2MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 1.44MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 2.88MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 20.8MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 720KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 360KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 320KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 320KB and 1024 bytes/sector.',0
    db 'A5.25" floppy, with 180KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 160KB and 512 bytes/sector.',0
    db 'Removable media other than floppy.',0
    db 'Fixed hard disk media.',0
    db 'A3.5" floppy, with 120MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 640KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 640KB and 512 bytes/sector.',0
    db 'A5.25" floppy, with 720KB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 1.2MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 1.23MB and 1024 bytes/sector.',0
    db 'A5.25" floppy, with 1.23MB and 1024 bytes/sector.',0
    db 'A3.5" floppy, with 128MB and 512 bytes/sector.',0
    db 'A3.5" floppy, with 230MB and 512 bytes/sector.',0
    db 'An 8" floppy, with 256KB and 128 bytes/sector.',0
    db 'A3.5" floppy, with 200MB and 512 bytes/sector. (HiFD).',0
    db 'A3.5" floppy, with 240MB and 512 bytes/sector. (HiFD).',0
    db 'A3.5" floppy, with 32MB and 512 bytes/sector.',0
baza    dw 0,18,66,114,162,210,257,305,353,402,450,498,533,556,603,650,698,746,793,842,892,939,986,1033,1088,1143,1189


Добавлено:
о типа как функция ядра ZwQuerySystemInformation возвращает массив в котором начало каждого следующего элемента узнается по первому элементу преъидущего
????
и для его задачи еще не ясен вопрос - элементарный элемент для сравнения элемента списка байт?

Добавлено:
а как букву раздела сменить мне так никто и не сказал
Автор: Abs62
Дата сообщения: 16.04.2012 18:29
bomzzz
Элементы массива располагаются последовательно, и к ним можно обращаться по индексу. Элементы списка могут располагаться где и как угодно, доступ по индексу к ним неприменим.
Автор: bomzzz
Дата сообщения: 16.04.2012 18:30
потому что у них размеры разные и нужна какаята база размеров элементов?
Автор: Abs62
Дата сообщения: 16.04.2012 18:44
bomzzz
Никакая база размеров не нужна. Чтобы добраться до нужного элемента, надо пробежаться по предшествующим элементам, переходя с одного на другой по имеющимся в элементах ссылкам. И вообще, RTFM. Информации по организации списков в сети более чем достаточно.
Автор: bomzzz
Дата сообщения: 16.04.2012 19:01
лана в целом я понил. сенкс. а термин то списки откуда - чета не припомню такого в высшей алгебре
Автор: Mantikor123
Дата сообщения: 16.04.2012 19:16
о какой диспут...
но еще тогда уточнение или скорее вопрос. есть такая программа в даном нам примере...


Код: #include <iostream.h>
#include <conio.h>


int main(){


int A[6]={1,4,5,8,15,30};
struct c {
int n;
    c *prev;
    c *next;
};

c *begin = NULL;
c *last = NULL;
c *list = NULL;

for (int i=0; i<6; i++)
    { if (begin == NULL)
        { last = new c;
            begin = last;
            last->n = A[i];
            last->prev = NULL;
            last->next = NULL;
            list = last; }
     else { last = new c;
            list->next = last;
            last->n = A[i];
            last->prev = list;
            last->next = NULL;
            list = last;}
    }


c *current = begin;
cout <<'\n';
while(current) {
    cout<<'\n' <<current->n;
     current = current->next; }
getch();
}
Автор: dimon0476
Дата сообщения: 16.04.2012 19:17
Добрый вечер! Скажите, хочу научиться программировать. Какие учебники порекомендуете? Спасибо.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.