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

Массивы,инициализация(qbasic'овские read,data) - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.90
Сиплюсплюс
Сообщений: n/a
12.10.2008, 10:28     Массивы,инициализация(qbasic'овские read,data) #1
Недавно начал изучать С++.
Маленький совет: книги не покупай, а скачивай через интернет.(если есть возможность конечно)
Некоторые книжки не сразу понятны, и ты бысторо сможешь её поменять.
Конечно в таком варианте есть много минусов, но главный плюс это: Экономичность.

Вообще на сайт зашел что бы задать очередной вопрос:
Напомню что перехожу на С++ с QBASICа. Скажите пожалуйста есть ли что нибудь подобное бейсиковским:
READ (Считать из DATA очередную переменную)
RESTORE (С какого места считывать из DATA)
DATA (собственно сами переменные)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2008, 10:28     Массивы,инициализация(qbasic'овские read,data)
Посмотрите здесь:

template+read only C++
C++ использование read
C++ Перевод с QBasic в С/С++
Перевод программы из QBasic в C/C++ C++
Read PNG in C C++
C++ Перевод из Qbasic в C++
C++ read(); write();
C++ map assigment of read only data member или WTF?
Unable to read memory C++
Перевести с QBasic на С++ C++
Read() блокирует поток C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Polugut
1 / 1 / 0
Регистрация: 04.10.2008
Сообщений: 9
12.10.2008, 14:59     Массивы,инициализация(qbasic'овские read,data) #2
Цитата Сообщение от Сиплюсплюс Посмотреть сообщение
Недавно начал изучать С++.
Напомню что перехожу на С++ с QBASICа. Скажите пожалуйста есть ли что нибудь подобное бейсиковским:
READ (Считать из DATA очередную переменную)
RESTORE (С какого места считывать из DATA)
DATA (собственно сами переменные)
Можно наверное так:

int READ=0;
int DATA[n]; // n заменяется на к-во данных в массиве
DATA []={n1,n2,n...};

// Далее по программе
int A=DATA[READ]; READ++;

// Если надо сбросить
READ=n; //n- нужная позиция

P.S. С++-программеры, не пинайте сильно за такую реализацию, я просто решил попробовать реализовать в стиле Бэээйсика. Вижу, что можно выйти за пределы массива. Но самое быстрое, что в голову пришло. Еще придумал как это функциями сделать, можно и объектами сделать, но думать дольше, и знаков больше. И не очень нужно.
Сиплюсплюс
Сообщений: n/a
13.10.2008, 07:32     Массивы,инициализация(qbasic'овские read,data) #3
Мне нужно что бы работала такая программа
Код
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
int main()
{
 int pole[3][3];
 for (int cicl=1;cicl<3;cicl++)
 {
   cout << "\n";
   if (cicl == 1)
     {
     int pole[3][3] = {1,1,1,2,2,2,1,1,1};
     }
   if (cicl == 2)
    {
    int pole[3][3] = {1,2,1,1,2,1,1,2,1};
    }
   for (int x = 0; x < 3; x++)
   {
   cout << "\n";
   for (int y = 0; y < 3; y++)
   {
   cout << pole [x] [y] << "   ";
   }
   }
 }
system("pause");
return 0;
}
она работает, но немного не так. Почему массив не обновляется?
Polugut
1 / 1 / 0
Регистрация: 04.10.2008
Сообщений: 9
13.10.2008, 10:39     Массивы,инициализация(qbasic'овские read,data) #4
Цитата Сообщение от Сиплюсплюс Посмотреть сообщение
она работает, но немного не так. Почему массив не обновляется?
Код
 int pole[3][3];
 for (int cicl=1;cicl<3;cicl++)
 {
   cout << "\n";
   if (cicl == 1)
     {
     int pole[3][3] = {1,1,1,2,2,2,1,1,1};
Насколько понял, так неправильно писать. Сначало определение массива, (int pole[3][3] потом его повторное определение с инициализацией (int pole[3][3] = {1,1,1,2,2,2,1,1,1}. Тип (в данном случае int) указывается только при определении, и потом не пишется. А инициализация (int pole[3][3] = {1,1,1,2,2,2,1,1,1} делается только раз, потом так массив не переделать, надо обращаться по номерам элементов. Хотя можно наверное и так, но переменные, существуют только внутри своих скобок {}, а снаружи ьни не работают. Т.е. заново определенные массивы существуют только до закрывающей скобки }.

Вот пример определения и инициализации массива, с заполнением тройками, как это надо делать. Тройки для примера, если данные должны быть разнородны, то и кода больше будет.
Код
#include <iostream.h>

int main()
{
    int pole[3][3] = {1,1,1,2,2,2,1,1,1};

     for (int x = 0; x < 3; x++)
     {

            for (int y = 0; y < 3; y++)
            {
                pole[x][y]=3;
                cout << pole [x] [y] << " ";
            };
     };



return 0;
}
Сиплюсплюс
Сообщений: n/a
13.10.2008, 22:30     Массивы,инициализация(qbasic'овские read,data) #5
То что код будет намного больше чем если в с++ были бы (read и data) я уже понял.
Делаю логическую детскую игру типа лабиринтика с некими предметами.
Кстати на QBASICе я её забацал за два дня не напрягаясь(там exe'шник нельзя делать, а то бы и не заморачивался я).
В с++ проблема в том что каждый уровень мне придётся прописывать в отдельной подпрограмме. А каждый уровень это массив 20 на 15. А в игре три разных вида подигры. И хотелось бы по 20levl'ов в каждой. Вобщем гемморой.
Может кто нибудь знает аналоги (read и data).
Или что нибудь подобное с уровнями (напоминают loderunner) делал?
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
13.10.2008, 22:56     Массивы,инициализация(qbasic'овские read,data) #6
Сиплюсплюс,
Для вопросов стоит создавать новые темы,чтобы не вызывать неразбериху.

По поводу массивов. "уровни" объявлять внутри программы - странное явление. Создайте входной файл, и оттуда считывайте их. // fopen.fscanf,fprintf //

Вообще,я понимаю,что вы не профессионально нацелены на язык. Но все же учтите такой момент :не стоит называть переменные транслитом("cicl"). Смотрится ужасно,можно ошибиться. для цикловых переменных часто используют i,j,k,l.

по поводу кубейсиковской даты...ну,смахивает на обычный массив,без муторных слов restore read и data. Так что насчет того,что будет без этой даты длиннее - сомневаюсь.
Yandex
Объявления
13.10.2008, 22:56     Массивы,инициализация(qbasic'овские read,data)
Ответ Создать тему
Опции темы

Текущее время: 20:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru