Решено: Почему не компилируется код С++?
Модератор: Модераторы разделов
-
- Сообщения: 128
- ОС: debian 4
Решено: Почему не компилируется код С++?
1. Почему не компилируется код С++?
2. Если n=100, то какое значение примет sum?
halo@debian:~/Desktop$ cat \!.cpp
#include <iostream>
cin >> n;
for (i = 1; i <= n; i++)
for (x = 1; x <= i; x++)
for (y = 1; y <= n - i + 1; y++)
a[x][y] += 1;
sum = 0;
for (x = 1; x <= n; x++)
for (y = 1; y <= n; y++)
sum += a[x][y];
cout << sum;
halo@debian:~/Desktop$ g++ \!.cpp
!.cpp:3: error: expected constructor, destructor, or type conversion before ‘>>’ token
!.cpp:4: error: expected unqualified-id before ‘for’
!.cpp:4: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:4: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:5: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:5: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:6: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:6: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:9: error: expected constructor, destructor, or type conversion before ‘=’ token
!.cpp:10: error: expected unqualified-id before ‘for’
!.cpp:10: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:10: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:11: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:11: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:14: error: expected constructor, destructor, or type conversion before ‘<<’ token
halo@debian:~/Desktop$
ThaaanX! (=
P.S. Соре, кодбокс не могу воткнуть.
2. Если n=100, то какое значение примет sum?
halo@debian:~/Desktop$ cat \!.cpp
#include <iostream>
cin >> n;
for (i = 1; i <= n; i++)
for (x = 1; x <= i; x++)
for (y = 1; y <= n - i + 1; y++)
a[x][y] += 1;
sum = 0;
for (x = 1; x <= n; x++)
for (y = 1; y <= n; y++)
sum += a[x][y];
cout << sum;
halo@debian:~/Desktop$ g++ \!.cpp
!.cpp:3: error: expected constructor, destructor, or type conversion before ‘>>’ token
!.cpp:4: error: expected unqualified-id before ‘for’
!.cpp:4: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:4: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:5: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:5: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:6: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:6: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:9: error: expected constructor, destructor, or type conversion before ‘=’ token
!.cpp:10: error: expected unqualified-id before ‘for’
!.cpp:10: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:10: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:11: error: expected constructor, destructor, or type conversion before ‘<=’ token
!.cpp:11: error: expected constructor, destructor, or type conversion before ‘++’ token
!.cpp:14: error: expected constructor, destructor, or type conversion before ‘<<’ token
halo@debian:~/Desktop$
ThaaanX! (=
P.S. Соре, кодбокс не могу воткнуть.
If I could, I would fly.
-
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Решено: Почему не компилируется код С++?
А где main() ?
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка

-
- Сообщения: 128
- ОС: debian 4
Re: Решено: Почему не компилируется код С++?
Поправил:
Теперь ругается так:
~/Desktop$ g++ \!.cpp
!.cpp: In function ‘int main()’:
!.cpp:17: error: invalid types ‘int[int]’ for array subscript
!.cpp:22: error: invalid types ‘int[int]’ for array subscript
Код: Выделить всё
#include <iostream>
using namespace std;
int n;
int i;
int x;
int y;
int a;
int sum;
main()
{
cin >> n;
for (i = 1; i <= n; i++)
for (x = 1; x <= i; x++)
for (y = 1; y <= n - i + 1; y++)
a[x][y] += 1;
sum = 0;
for (x = 1; x <= n; x++)
for (y = 1; y <= n; y++)
sum += a[x][y];
cout << sum;
}
Теперь ругается так:
~/Desktop$ g++ \!.cpp
!.cpp: In function ‘int main()’:
!.cpp:17: error: invalid types ‘int[int]’ for array subscript
!.cpp:22: error: invalid types ‘int[int]’ for array subscript
If I could, I would fly.
-
- Сообщения: 861
- Статус: Оператор вычислительных машин
- ОС: Debian
Re: Решено: Почему не компилируется код С++?
Вы не объявили массив. Надо делать так:
вместо x и y поставить числа, задающие размер массива.
ЗЫ: топик нужно переместить в раздел "Программирование для начинающих".
Код: Выделить всё
int a[x][y]
вместо x и y поставить числа, задающие размер массива.
ЗЫ: топик нужно переместить в раздел "Программирование для начинающих".
Кто ищет, тот всегда найдет!
Опыт - это когда все получается с первого раза.
Опыт - это когда все получается с первого раза.
-
- Сообщения: 128
- ОС: debian 4
Re: Решено: Почему не компилируется код С++?
Теперь компилируется, но ни с одним из вариантов ответов не сходится.
А) 5050
Б) 171700
В) 338350
Г) 10000
Д) 333300
Там, где было n, я заменил на 100 сразу.
А) 5050
Б) 171700
В) 338350
Г) 10000
Д) 333300
Код: Выделить всё
#include <iostream>
using namespace std;
main()
{
int n = 100;
int i, x, y;
int a[100][100];
int sum;
for (i = 1; i <= 100; i++)
for (x = 1; x <= i; x++)
for (y = 1; y <= 100 - i + 1; y++)
a[x][y] += 1;
sum = 0;
for (x = 1; x <= 100; x++)
for (y = 1; y <= 100; y++)
sum += a[x][y];
cout << sum << endl;
}
Там, где было n, я заменил на 100 сразу.
If I could, I would fly.
-
- Сообщения: 121
- ОС: Win XP SP3
Re: Решено: Почему не компилируется код С++?
Надо вот так:
1
Ну или везде писать так
2
Индексы в массивах начинаются с нуля. При первом способе будут использоваться ячейки массива с индексами 1-100, а с индексом 0 не будет использоваться. Второй вариант не создаёт лишних ячеек.
1
Код: Выделить всё
int a[101][101];
Ну или везде писать так
2
Код: Выделить всё
a[x-1][y-1]
Индексы в массивах начинаются с нуля. При первом способе будут использоваться ячейки массива с индексами 1-100, а с индексом 0 не будет использоваться. Второй вариант не создаёт лишних ячеек.
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Решено: Почему не компилируется код С++?
halo писал(а): ↑13.12.2009 15:26Теперь компилируется, но ни с одним из вариантов ответов не сходится.
Код: Выделить всё
a[x][y] += 1;
А обнулить?
-
- Сообщения: 128
- ОС: debian 4
Re: Решено: Почему не компилируется код С++?
NickLion писал(а): ↑13.12.2009 17:03halo писал(а): ↑13.12.2009 15:26Теперь компилируется, но ни с одним из вариантов ответов не сходится.
Код: Выделить всё
a[x][y] += 1;
А обнулить?
В каком месте нужно обнулять?
Разбираюсь логически.
В первом цикле происходит заполнение элементов массива 100 х 100:
1 1
2 2
3 3
4 4 ....
.. ..
100 100
Во втором цикле происходит суммирование всех элементов массива.
If I could, I would fly.
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Решено: Почему не компилируется код С++?
Думаю речь о инициализации массива начальными значениями: int a[2][2] = {{0, 0}, {0, 0}};
-
- Сообщения: 128
- ОС: debian 4
Re: Решено: Почему не компилируется код С++?
Да, там еще двойной переход по указателю добавить нужно. )
If I could, I would fly.
-
- Сообщения: 1341
- ОС: Arch Linux amd64
Re: Решено: Почему не компилируется код С++?
Да бросьте: int a[100][100] = {{0}};
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Решено: Почему не компилируется код С++?
Да, речь шла именно об инициализации массива a нулями. Достаточно записать int a[100][100] = {};
PS а заполнение происходит не так, там половина матрицы ниже побочной диагонали нулями останется, сама диагональ 1, заполнена и т.д.
PS а заполнение происходит не так, там половина матрицы ниже побочной диагонали нулями останется, сама диагональ 1, заполнена и т.д.
-
- Сообщения: 128
- ОС: debian 4
Re: Решено: Почему не компилируется код С++?
Работает. Окончательный вариант такой:
На выходе число: 171700
Всем спасибо. Тему можно закрыть.
Код: Выделить всё
#include <iostream>
using namespace std;
main()
{
int n = 100;
int i, x, y;
int a[101][101]={};
int sum;
for (i = 1; i <= 100; i++)
for (x = 1; x <= i; x++)
for (y = 1; y <= 100 - i + 1; y++)
a[x][y] += 1;
sum = 0;
for (x = 1; x <= 100; x++)
for (y = 1; y <= 100; y++)
sum += a[x][y];
cout << sum << endl;
}
На выходе число: 171700
Всем спасибо. Тему можно закрыть.

If I could, I would fly.