Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Динамические переменные, ошибка перед & 
:(
    Опции темы
shokky
Дата 24.3.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Всем искренне желаю здравствовать  smile ...
Не могли бы помочь с ошибкой...у меня вот такая задачка:
Запишите программу с определением константы Const X: Longint = 2147483000; и выводом соответствующих ей : значения, адреса динамической памяти.
реализовала я её вот так:
Код

#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------
#pragma argsused
const long int x = 2147483000;
int main(int argc, char* argv[])
{
   cout << "Znachenie const = " << x <<endl;
   cout << "Memory address " << &x << endl;
      getch ();
        return 0;
}
//---------------------------------------------------------------------------

и она мне выдает почему то ошибку перед символом & smile 
не могли бы Вы мне подсказать правильно ли я сделала задачку и как надо написать чтобы не выдавало такой ошибки...

и еще просьба...я совсем не знаю как делать вот такую задачу:
С помощью динамических переменных реализуйте вещественную матрицу размером 200 x 100. Каждому элементу матрицы присвойте случайное значение из заданного диапазона. Отсортируйте элементы в строках и строки по значению первого элемента. Выдайте на экран первую подматрицу размером 20 x 10.
не могли бы Вы мне помочь её сделать... 
Заранее очень всем благодарна... smile 


Это сообщение отредактировал(а) Exception - 25.3.2007, 13:08
PM MAIL   Вверх
apook
Дата 25.3.2007, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Надо убрать const
Код

long int x = 2147483000;



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
shokky
Дата 25.3.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



apook, спасибище тебе еще раз  smile за то что со мной возишься...
только вот там же в задании сказано определить именно эту константу...а если мы эту строчку уберем то мы разве её определяем? smile 

Это сообщение отредактировал(а) shokky - 25.3.2007, 09:30
PM MAIL   Вверх
apook
Дата 25.3.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата

Оператор & применяется только к объектам, расположенным в памяти: к переменным и элементам 
массивов. Его операндом не может быть ни выражение, ни константа, ни регистровая переменная.
Цитата из учебника. 

выводом соответствующих ей : значения, адреса динамической памяти. Это что?

Это сообщение отредактировал(а) apook - 25.3.2007, 10:34


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
shokky
Дата 26.3.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



apook, мне препод сказал что это надо делать через printf ...ты знаешь как можно сделать это через printf?...

PM MAIL   Вверх
zkv
Дата 26.3.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(shokky @  26.3.2007,  15:07 Найти цитируемый пост)
apook, мне препод сказал что это надо делать через printf ...ты знаешь как можно сделать это через printf?...

Код

   printf("Znachenie (DEC) = %d", x );
   printf("Memory address (HEX) = %x", &x);

подробнее по printf() посмотрите, например, здесь
PM MAIL   Вверх
Fazil6
Дата 26.3.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(shokky @  24.3.2007,  20:56 Найти цитируемый пост)
и выводом соответствующих ей : значения, адреса динамической памяти.

если объявлять константу как ты, то она не имеет адреса.
в куче константа делается так
Код

const  int * const x = new int(2147483000);
std::cout << "adres = 0x" << x << "   value =  " << *x; 


printf вариант немного не так как zkv указал. Адрес нужно выводить %lx
Код

const  int * const x = new int(2147483000);
printf("Znachenie (DEC) = %d\n", *x );
printf("Memory address (HEX) = 0x%lX\n", x);


Это сообщение отредактировал(а) Fazil6 - 26.3.2007, 15:39
PM MAIL   Вверх
shokky
Дата 26.3.2007, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



Всем боольшушее спасибо  smile ... и за ссылочку  smile ...только вот точно я так сделала?...я написала так как Вы сказали...
Код

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void main()
{
const  int * const x = new int(2147483000);
printf("Znachenie (DEC) = %d\n", *x );
printf("Memory address (HEX) = 0x%lX\n", x);
getch ();
}


оно у меня выдает  
-648
0х39Е05Е8
Это так и должно быть, да? smile 

только непоняла что имели ввиду под DEC и HEX  smile 

извиняюсь за тугосоображалистость smile 
PM MAIL   Вверх
Fazil6
Дата 26.3.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(shokky @  26.3.2007,  17:23 Найти цитируемый пост)
оно у меня выдает  -6480х39Е05Е8Это так и должно быть, да?  

твое значение не влазит в инт
сделай так
Код

const  long int * const x = new long int(2147483000);


Цитата(shokky @  26.3.2007,  17:23 Найти цитируемый пост)
только непоняла что имели ввиду под DEC и HEX

просто подсказка, что выводимое значение в десятичной системе и шеснадцатиричной

Это сообщение отредактировал(а) Fazil6 - 26.3.2007, 17:40
PM MAIL   Вверх
zkv
Дата 26.3.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Fazil6 @  26.3.2007,  15:33 Найти цитируемый пост)
printf вариант немного не так как zkv указал. Адрес нужновыводить %lx

поясни, пожалуйста, чем плох %x?  Думаю, если быть совсем корректными, то надо юзать %p, просто я не стал копаться и искать формат - думал человек сам по ссылке почитает, если ему нужно это  smile

Пример по теме:
Код

#include <cstdio>
#include <iostream>
using namespace std;

int main()
{
    const  int * const x = new int(2147483000);
    cout << "\nadres = 0x" << x << "   value =  " <<*x<<endl; 

    printf("Znachenie (DEC) = %d\n", *x );
    printf("Memory address (HEX, lx) = 0x%lx\n", x);
    printf("Memory address (HEX, x) = 0x%x\n", x);
    printf("Memory address (HEX, p) = 0x%p\n", x);
    cin.get();
}

Цитата(результат)

adres = 0x00322AC8   value =  2147483000
Znachenie (DEC) = 2147483000
Memory address (HEX, lx) = 0x322ac8
Memory address (HEX, x) = 0x322ac8
Memory address (HEX, p) = 0x00322AC8

PM MAIL   Вверх
Fazil6
Дата 26.3.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(zkv @  26.3.2007,  18:12 Найти цитируемый пост)
поясни, пожалуйста, чем плох %x?

ну просто мой компиллятор так не выводит

Добавлено через 46 секунд
Цитата(zkv @  26.3.2007,  18:12 Найти цитируемый пост)
Думаю, если быть совсем корректными, то надо юзать %p

согласен
PM MAIL   Вверх
shokky
Дата 26.3.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



zkv, у меня даже не компилировалось то, что ты написал smile ...
выдавало 7 ошибок и 2 предупреждения... smile 

я переписала чуть-чуть...осталась одна ошибка smile ...ты не знаешь как её исправить?

Код

#include <stdio.h>
#include <iostream.h>

int main()
{
    const  int * const x = new int(2147483000);
    cout << "\n adres = 0x" << x << "   value =  " <<*x<<endl;

    printf("Znachenie (DEC) = %d\n", *x );
    printf("Memory address (HEX, lx) = 0x%lx\n", x);
    printf("Memory address (HEX, x) = 0x%x\n", x);
    printf("Memory address (HEX, p) = 0x%p\n", x);
    cin.get();
    return 0;
}


она выдается в строчке
Код

cout << "\n adres = 0x" << x << "   value =  " <<*x<<endl;

пишет lllegale structure operation.... smile 
PM MAIL   Вверх
zkv
Дата 26.3.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



shokky, внимательней надо быть, либо подключайте стандартное пространство имен (using namespace std; - см. мой пример), либо указывать его явно, когда используете что нить из него (std::cout, std::cin, std::endl и т.п. - см. пример Fazil6). 

Удачи!
 
PS хотя возможно у вас компилятор эээ... неправильный. Тогда попробуйте так:
Код

#include <stdio.h>
#include <iostream.h>

int main()
{
    const  int * const x = new int(2147483000);
    cout << "\nadres = 0x" << x << "   value =  " <<*x<<endl; 
    printf("Znachenie (DEC) = %d\n", *x );
    printf("Memory address (HEX, lx) = 0x%lx\n", x);
    printf("Memory address (HEX, x) = 0x%x\n", x);
    printf("Memory address (HEX, p) = 0x%p\n", x);
    cin.get();
}


Это сообщение отредактировал(а) zkv - 26.3.2007, 19:13
PM MAIL   Вверх
shokky
Дата 26.3.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 23.3.2007

Репутация: нет
Всего: нет



zkv, он using namespace std; вообще не воспринимает-пишет сразу же ошибку smile ...
компилятор наверно неправильный всетаки...хотя он не работает (выдает ту же ошибку) и при запуске того что вы написали в последний раз... smile 

что же делать?...может есть какая то запись подругому using namespace std; ?...
PM MAIL   Вверх
Kuvaldis
Дата 26.3.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



для cout тоже можно формат дать (ничего нет невозможного) 
Работает в VC++ 6.0 и в 2005 студии:
Код

#include <iostream.h>    
#include <conio.h>    

    
const long int x = 2147483000;    

int main(int argc, char* argv[])    
{    
   cout << "Znachenie const = " << x <<endl;
   
   cout << "Memory address " << (void*) &x << endl;    

   getch ();
   
   return 0;    
}


Это сообщение отредактировал(а) Kuvaldis - 26.3.2007, 20:01


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1206 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.