Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Работа с массивами


Автор: Енер 3.5.2011, 21:32
Доброго времени суток.
Есть задание написать программу с массивами.
Код

#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#define i 4
#define j 4
#define N=4
void main()
{clrscr();
int mas[i][j];
    for (i=0;i<N;i++)
    for (j=0;j<N;j++)
        cin>>mas[i][j];
        cout<<mas[i][j];
    getch();
}

Но при компилировании выдает ошибки, подскажите, что я не так сделал и где ошибки у меня?

Автор: xvr 3.5.2011, 21:37
Цитата(Енер @  3.5.2011,  21:32 Найти цитируемый пост)
что я не так сделал и где ошибки у меня? 

Тут
Цитата(Енер @  3.5.2011,  21:32 Найти цитируемый пост)
#define N=4
Знак '=' лишний


Автор: Енер 3.5.2011, 21:49
Убрал, все равно ошибки, и не компилирует =(

Автор: borisbn 3.5.2011, 22:28
Цитата(Енер @  3.5.2011,  21:32 Найти цитируемый пост)
#define i 4

#define тупо заменяет в коде левую часть на правую. смотри, что получится с этим кодом
Цитата(Енер @  3.5.2011,  21:32 Найти цитируемый пост)
for (i=0;i<N;i++)

Код

for (4=0;4<N;4++)


Автор: Енер 3.5.2011, 23:07
А как тогда правильно прописать? Мне просто нужно вывести на экран массив вида 4х4 (матрица).

Автор: smalcom 4.5.2011, 03:52
забавный код. кто-то хорошо пошутил.

Цитата

Но при компилировании выдает ошибки, подскажите, что я не так сделал и где ошибки у меня? 

Поскольку не указан вывод компилятор, то предполагаеца наличие ошибок в организме ТС... Сходи к доктору, он тебе ответит на этот вопрос.

Цитата

А как тогда правильно прописать?

Учи матчасть. И напиши прогу или на C, или на C++, а не на обоих сразу.

Автор: OlegSK 4.5.2011, 07:14
Код

#include<iostream>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#define N 4

int main(int argc, char *argv[])
{
    system("CLS");

    int mas[N][N];
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<N; j++)
        {
            std::cout << "mas[" << i << "][" << j << "] = ";
            std::cin>>mas[i][j];
        }
    }

    std::cout<<"\n";
    for (int i=0; i<N; i++)
    {
        for (int j=0; j<N; j++)
        {
            std::cout<<mas[i][j] << "\t";
        }
        std::cout<<"\n";
    }

    getch();
    return 0;
}

Автор: bsa 4.5.2011, 10:33
Цитата(OlegSK @  4.5.2011,  07:14 Найти цитируемый пост)
#include<iostream>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
Ты тоже определись сначала с языком программирования. Или Си (тогда убирай все потоки С++) или С++ (тогда хидеры надо менять на math.h -> cmath, stdlib -> cstdlib)
Цитата(OlegSK @  4.5.2011,  07:14 Найти цитируемый пост)
system("CLS");

ну и зачем это? Если используешь conio.h, то тогда пользуйся clrscr().
Цитата(OlegSK @  4.5.2011,  07:14 Найти цитируемый пост)
getch();

http://forum.vingrad.ru/index.php?showtopic=269794&view=findpost&p=2099932

Автор: bems 4.5.2011, 10:38
Цитата(smalcom @  4.5.2011,  03:52 Найти цитируемый пост)
И напиши прогу или на C, или на C++, а не на обоих сразу. 
почему?

Автор: mrbrooks 4.5.2011, 10:47
Цитата(bems @  4.5.2011,  10:38 Найти цитируемый пост)
почему?

потому что это признак плохого тона. если интересно глубже - почитайте Stephen C. Dewhurst'a. 

Автор: bems 4.5.2011, 10:50
mrbrooks, то есть писать на С но иногда использовать простые классы без виртуальных методов это хуже чем писать на С и передавать указатель на структуру первым параметром в кучу функций которые не работают ни с чем кроме полей структуры?

Автор: mrbrooks 4.5.2011, 10:54
bems, для такого рода вещей есть Object C

Автор: bsa 4.5.2011, 16:58
Цитата(bems @  4.5.2011,  10:50 Найти цитируемый пост)
писать на С но иногда использовать простые классы без виртуальных методов это хуже чем писать на С и передавать указатель на структуру первым параметром в кучу функций которые не работают ни с чем кроме полей структуры?

Так и скажи: "Знаю язык С, но из С++ понял только что такое классы". Лично я не вижу смысла в подобном использовании языков. Так как в данном случае теряется простора С, а все плюшки С++, которые делают код меньше, не используются. Какой смысл?

Кстати, когда я пишу программы на С, то в публичном хидере объявляю "классы" так:
Код
struct MyClass;
typedef struct MyClass MyClass;
MyClass* mcNew(void);
void mcDelete(MyClass *mc);
void mcMethod1(MyClass *mc, int data);
int mcMethod2(MyClass *mc);
...
Соответственно пользователь класса не знает всех подробностей реализации (инкапсуляция). Единственное, чего мне не хватает в С - это деструкторов, чтобы не городить кучу функций очистки в случае ветвлений...

Автор: bems 4.5.2011, 21:11
Цитата(bsa @  4.5.2011,  16:58 Найти цитируемый пост)
Знаю язык С, но из С++ понял только что такое классы
Использовать Си мне приходится из-за того что пишу ядерный код, а там с полноценными плюсами не сложилось (ну кое-что есть, но "не то"), а нормальные языки требуют перевода тучи сишных хидеров. А ты подменяешь понятия. Я спрашивал лучше ли чистый С чем С с классами, и ничего не говорил о полноценном С++
И если бы не такое неприятное окружения, то я разумеется не стал бы писать ни на одном из этих языков, так что про "неосилил С++" речь не идет - он мне не нужен весь. Да и никому, лол

Цитата(bsa @  4.5.2011,  16:58 Найти цитируемый пост)
Так как в данном случае теряется простора С, а все плюшки С++, которые делают код меньше, не используются

Простота остаётся, это точно. Про плюшки - смотри выше.

Автор: smalcom 5.5.2011, 18:02
Цитата

почему?

потому что разруха в головах, а не сортирах (с) известный прохфесор

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)