Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 22:15   #1
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию Не работает программа

Привет. Пытаюсь запустить программу, но она отказывается работать, тупо ничего не запускается. Что исправить?

Программа - модель преобразования вирт. адреса в физический.

Код:
#include <stdio.h>
#include <stdlib.h>

#define TABLE_SIZE 8
#define MAX_ADDRESS 1048576

int table [TABLE_SIZE];

// Hash function
#define FNV_prime ((unsigned int)16777619)
#define FNV_offset_basis ((unsigned int)2166136261)
#define STEP(state,octet)                       \
    state *= FNV_prime;                         \
    state ^= octet;                             \

#define FNV_HASH_10(result, val)                \
    {                                           \
        result = FNV_offset_basis;              \
        STEP(result, val & 0xff);               \
        STEP(result, (val >> 8) & 0xff);        \
    }                                           \

#define FOLD(val, table_size) val %= table_size

#define FNV_HASH_TABLE_INDEX_10(result, val, table_size)   \
    FNV_HASH_10(result, val)                            \
    FOLD(result, table_size)                            \

// end of hash function

void main()
{
    long i;
     for (i=0; i<TABLE_SIZE; i++) table[i]=-1;
    int exiter=0;
    char st[100];
    unsigned int fn;
    printf("\n\n");
    while (exiter==0)
    {
        printf("Enter the virtual address from 0 to %.0f (decimal) (Enter to exit): ", float(MAX_ADDRESS));
        gets(st);
        if (exiter=(st[0]==0)) break;
        long addr=atol(st);
        if (addr<0||addr>MAX_ADDRESS) continue;
        int vp=addr>>10;
        int offset=addr&&1024;
        FNV_HASH_TABLE_INDEX_10(fn, vp, TABLE_SIZE);
        table[fn]=vp;
        addr=long(fn)<<10|offset;
        printf("Physical address is %.0f \n", float(addr));
    }
    printf("\nHash table:");
    for (i=0; i<1024; i++)
    {
        FNV_HASH_TABLE_INDEX_10(fn, i, TABLE_SIZE);
        printf("%d ", fn);
    }
    printf("\nInverted page table:\n");
    for (i=0; i<TABLE_SIZE; i++)
    {
        printf("%d ", table[i]);
    }
}
athleet вне форума Ответить с цитированием
Старый 18.12.2010, 23:34   #2
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Проверил, на Dev-C++. Запустилась. Только пришлось поменять void main() на int main() и в конце соответственно дописать return 0; И на Borland Turbo C работает
Самый перспективный framework Yii (c)

Последний раз редактировалось TranceSmile; 18.12.2010 в 23:37.
TranceSmile вне форума Ответить с цитированием
Старый 18.12.2010, 23:57   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

У меня работает(Visual Studio 2008). Не знаю, насколько правильно, но запускается и ошибок не выдает. Может, вам просто в конце нужно поставить getchar()?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 19.12.2010, 11:47   #4
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию

Скачал dev-c++.
Программа пишет "this decimal constant is unsigned only in ISO C90"
Это относится к FNV_HASH_TABLE_INDEX_10(fn, vp, TABLE_SIZE);

Последний раз редактировалось athleet; 19.12.2010 в 12:05.
athleet вне форума Ответить с цитированием
Старый 19.12.2010, 21:36   #5
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

athleet, это только предупреждение. А так она компилится, и запускается
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 20.12.2010, 21:37   #6
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию

А почему я не вижу результат запуска? Что я не так делаю?)
athleet вне форума Ответить с цитированием
Старый 21.12.2010, 05:59   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Думаю, вы просто не успеваете ничего увидеть. Подключите conio.h и поставьте в конце main'а вызов функции getch();
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.12.2010, 10:37   #8
athleet
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 22
По умолчанию

Спасибо всем.
athleet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает программа Ult1m Общие вопросы Delphi 7 20.09.2010 21:52
не работает программа Rusic Общие вопросы C/C++ 2 19.05.2010 23:16
Не работает программа ddr9225 Общие вопросы C/C++ 21 14.01.2010 14:06
Программа не работает ZYRGiX Помощь студентам 2 22.07.2008 21:44
Программа не работает Михаил Юрьевич Общие вопросы Delphi 2 19.04.2008 23:27