Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Разбираюсь с Code::Blocks  (Прочитано 1961 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Demik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Разбираюсь с Code::Blocks
« : 17 Октября 2011, 00:11:47 »
Всем доброго времени суток, скачал себе C::B для программировании на C++, пробую написать программу, код рабочий(по крайней мере в VC++ компилируется), но Code::Blocks выдает ошибку:
Code::Blocks/Metod Gaussa/main.cpp||In function ‘int main()’:|
Code::Blocks/Metod Gaussa/main.cpp|17|error: expected primary-expression before ‘;’ token|
Code::Blocks/Metod Gaussa/main.cpp|23|error: expected primary-expression before ‘;’ token|
||=== Build finished: 2 errors, 0 warnings ===|
Как быть, что делать и в чём я ошибся? Вот код:
#include <iostream>

using namespace std;

const int str=3;
const int stb=4;
int a[str][stb];
int a1[str][stb];
int a2[str][stb];
int a3[str][stb];
int x[4];

int main()
{
cout<<"Введите массив:";
    for(int i=0;i<str;i++){
        for(int j=0;j<std;j++)//17 строка
            cin>>a[i][j];

    }
cout<<"Введенный массив:";
    for(int i=0;i<str;i++){
        for(int j=0;j<std;j++)//23 строка
            cout<<a[i][j];

    }
    return 0;
}

Оффлайн S_F_H

  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Re: Разбираюсь с Code::Blocks
« Ответ #1 : 17 Октября 2011, 00:23:39 »
потому что stb на std поменял в параметрах цикла. внимательнее будь

for(int j=0;j<std;j++)//17 строка

а надо ...(...;j<stb;...)

и все компилится и выполняется

ЗЫ на VC++ сие тоже не компилилось бы
« Последнее редактирование: 17 Октября 2011, 00:25:46 от S_F_H »

Оффлайн Demik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: Разбираюсь с Code::Blocks
« Ответ #2 : 17 Октября 2011, 00:28:24 »
потому что stb на std поменял в параметрах цикла. внимательнее будь
Спасибо, я дурак. = )

Пользователь решил продолжить мысль 17 Октября 2011, 00:58:01:
И ещё вопрос, тут у меня какая-то проблема с if, не могу понять в чем дело, поможете?
#include <iostream>

using namespace std;

const int str=4;
const int stb=5;
int a[str][stb];
int a1[str][stb];
int a2[str][stb];
int a3[str][stb];
int x[4];

int main()
{
cout<<"Введите массив:"<<endl;
    for(int i=0;i<str;i++){
        for(int j=0;j<stb;j++){
            cout<<"а["<<i+1<<"]["<<j+1<<"]:";
            cin>>a[i][j];
        }

    }
cout<<"Введенный массив:";
    for(int i=0;i<str;i++){
        for(int j=0;j<stb;j++){
            if(j=4);
                cout<<"а["<<i+1<<"]["<<j+1<<"]:";
                cout<<a[i][j]<<endl;
            else
                cout<<"а["<<i+1<<"]["<<j+1<<"]:";
                cout<<a[i][j];
        }
    }
    return 0;
}
« Последнее редактирование: 17 Октября 2011, 00:58:01 от Demik »

Оффлайн S_F_H

  • Участник
  • *
  • Сообщений: 129
  • Да будет crossplatform!
    • Просмотр профиля
Re: Разбираюсь с Code::Blocks
« Ответ #3 : 17 Октября 2011, 18:37:59 »
ну первое что бросается в глаза:

if (j=4) должно быть j == 4 если хотипе проверять на равенство j и 4, иначе условие всегда будет истино, за случаем, если j равно -4

во вторых, как я понял из написаного
cout<<"а["<<i+1<<"]["<<j+1<<"]:";
cout<<a[j]<<endl;

должны быть объеденены в операторный блок, т.е.

if(j==4) {
                cout<<"а["<<i+1<<"]["<<j+1<<"]:";
                cout<<a[i][j]<<endl;
               }
else {
                cout<<"а["<<i+1<<"]["<<j+1<<"]:";
                cout<<a[i][j];
}
Кстати, после if (j=4) точки с запятой стоять не должно, иначе инструкция else не выполнится, и компилятор покажет ошибку
P.S. почитайте литературу по языку, например Шилда, или любой другой самоучитель
« Последнее редактирование: 17 Октября 2011, 18:39:38 от S_F_H »

Оффлайн Demik

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: Разбираюсь с Code::Blocks
« Ответ #4 : 17 Октября 2011, 20:05:58 »
Точку с запятой я от безысходности поставил, просто забыл убрать когда сюда выкладывал. На счёт j==4 спасибо, попробую.
А вот операторные блоки я уже пробовал ставить, в лучшем случае программа выполняется без else, то есть она мне выдает 5 столбец и всё. Спасибо вам за советы, буду пробовать.
///////////////////////////
Проблему с вашей помощью решил, действительно из-за j=4 была ошибка.
« Последнее редактирование: 18 Октября 2011, 00:15:44 от Demik »

 

Страница сгенерирована за 0.034 секунд. Запросов: 26.