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

Говорят Compilation error - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
home25_21
Сообщений: n/a
23.08.2011, 16:26     Говорят Compilation error #1
Решаю задачи на сайте ******** раньше решал на Паскале, сейчас решил учить С++...
пытаюсь решить эту задачу http://********/?main=task&id_task=5
Решил у меня ответ пишется, но на сайте когда сдаю пишет "Compilation error"... подскажите, пожалуйста...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    int n;
    FILE *in;
    FILE *out;
    in = fopen("input.txt","rt");
    out = fopen("output.txt","wt");
    fscanf(in,"%d\n",&n);
    printf("%d",n);
    int mas[n],t,ch;
    t=0;
    ch=0;    
    for (int i=1;i<=n;i++){
        fscanf(in,"%d ",&mas[i]);
        }
    for (int i=1;i<=n;i++){
        if (mas[i]%2==1) {fprintf(out,"%d ",mas[i]); t++;};
        }    
        fprintf(out,"\n");
    for (int i=1;i<=n;i++){
        if (mas[i]%2==0) {fprintf(out,"%d ",mas[i]); ch++;};
        }    
    if (ch>t) {fprintf(out,"\nYES");}
              else {fprintf(out,"\nNO");}
}
Добавлено через 2 минуты
И еще... поздно вспомнил... прошу знающих людей высказать своё мнение по поводу программы вобще...
то есть например "Зачем так с файлами работаешь??? Делай потоками!!! вот так:....."
буду очень признателен за любую конструктивную критику!!!
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.08.2011, 16:42     Говорят Compilation error #2
Уберите iostream и using namespace std; и вместо них поставьте
C
1
#inlclude <cstdio>
Ибо у вас код на чистом си, а хедеры от с++.

P.S. спасибо, что про задачу напомнили, +1 первое место в мою копилку =)
P.P.S. MSVC не поддерживает variable length arrays, размер массива должен задаваться константой.
Я про эту строчку
C
1
int mas[n],t,ch;
Jupiter
23.08.2011, 17:55
  #3

Не по теме:

Цитата Сообщение от diagon Посмотреть сообщение
+1 первое место в мою копилку =)
там что по количеству символов расчет?

diagon
23.08.2011, 18:16
  #4

Не по теме:

Цитата Сообщение от Maxwe11 Посмотреть сообщение
там что по количеству символов расчет?
Угу...

zuq
 Аватар для zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
23.08.2011, 18:56     Говорят Compilation error #5
А почему так не проходит?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <fstream>
 
int a[100], b,c, n;
 
main() {
 
    std::ifstream i("input.txt");
    std::ofstream o("output.txt");
 
    i>>n;
    for(; !i.eof();) {
 
        i >> n;
        if(n%2) o << n << ' ', c++;
        else a[b] = n, b++;
    }
 
    o<<'\n';
 
    for(n = 0; n < b; n++) {
        o<<a[n] << ' ';
    }
    o << '\n';
 
    b>c ? o<<"YES" : o << "NO";
}
WA на первом же тесте
Сыроежка
Заблокирован
23.08.2011, 19:14     Говорят Compilation error #6
Цитата Сообщение от home25_21 Посмотреть сообщение
Решаю задачи на сайте ******** раньше решал на Паскале, сейчас решил учить С++...
пытаюсь решить эту задачу http://********/?main=task&id_task=5
Решил у меня ответ пишется, но на сайте когда сдаю пишет "Compilation error"... подскажите, пожалуйста...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    int n;
    FILE *in;
    FILE *out;
    in = fopen("input.txt","rt");
    out = fopen("output.txt","wt");
    fscanf(in,"%d\n",&n);
    printf("%d",n);
    int mas[n],t,ch;
    t=0;
    ch=0;    
    for (int i=1;i<=n;i++){
        fscanf(in,"%d ",&mas[i]);
        }
    for (int i=1;i<=n;i++){
        if (mas[i]%2==1) {fprintf(out,"%d ",mas[i]); t++;};
        }    
        fprintf(out,"\n");
    for (int i=1;i<=n;i++){
        if (mas[i]%2==0) {fprintf(out,"%d ",mas[i]); ch++;};
        }    
    if (ch>t) {fprintf(out,"\nYES");}
              else {fprintf(out,"\nNO");}
}
Добавлено через 2 минуты
И еще... поздно вспомнил... прошу знающих людей высказать своё мнение по поводу программы вобще...
то есть например "Зачем так с файлами работаешь??? Делай потоками!!! вот так:....."
буду очень признателен за любую конструктивную критику!!!
У вас непонятно, на каком языке написана ваша программа! Она не удовлетворяет ни стандарту С++, ни стандарту С. То есть ваша программа совершенно некорректная.

Я лишь могу предположить, судя по заданию размерности массива неконстатным выражением, что вы компилировали программу с помощью компилятора, который поддерживает стандарт С99. Но при этом совершенно непонятно, как у вас тогда "проскочил" в компиляции заголовок <iostream>.

Добавлено через 6 минут
Цитата Сообщение от zuq Посмотреть сообщение
А почему так не проходит?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <fstream>
 
int a[100], b,c, n;
 
main() {
 
    std::ifstream i("input.txt");
    std::ofstream o("output.txt");
 
    i>>n;
    for(; !i.eof();) {
 
        i >> n;
        if(n%2) o << n << ' ', c++;
        else a[b] = n, b++;
    }
 
    o<<'\n';
 
    for(n = 0; n < b; n++) {
        o<<a[n] << ' ';
    }
    o << '\n';
 
    b>c ? o<<"YES" : o << "NO";
}
WA на первом же тесте
У вас также программа является примером плохого стиля программирования. Во-первых, функция main должна быть объявлена как функция, возвращающая значение типа int. Во-вторых, для индексов используются переменные i, j, k, l, m, n, но никак не b. В-третьих, выражение


C++
1
    b>c ? o<<"YES" : o << "NO";
будет нагляднее выглядеть, если его переписать в виде


C++
1
   o << ( (  b > c ) ? "YES" :  "NO" );
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
23.08.2011, 19:17     Говорят Compilation error #7
GCC позволяет компилировать variable length array для всех. И для C и для С++. Но на acmp не GCC.
zuq
 Аватар для zuq
95 / 95 / 2
Регистрация: 10.04.2011
Сообщений: 256
23.08.2011, 19:23     Говорят Compilation error #8
Цитата Сообщение от Сыроежка Посмотреть сообщение
У вас также программа является примером плохого стиля программирования. Во-первых, функция main должна быть объявлена как функция, возвращающая значение типа int. Во-вторых, для индексов используются переменные i, j, k, l, m, n, но никак не b. В-третьих, выражение
Я знаю. Писал так для сокращения объема кода
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2011, 22:22     Говорят Compilation error
Еще ссылки по теме:

C++ Друзья, подскажите, говорят, что можно поля класса инициализировать в момент объявления класса. Как это сделать?
[ilink32 Error] Error: Unresolved external 'zamena (int * *) ' referenced C++
C++ Какие части шелл кода однозначно говорят что атака по переполнению буфера началась?

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

Или воспользуйтесь поиском по форуму:
easybudda
23.08.2011, 22:22     Говорят Compilation error
  #9

Не по теме:

Цитата Сообщение от Сыроежка Посмотреть сообщение
для индексов используются переменные i, j, k, l, m, n, но никак не b
Возьмём m танков противника... Нет, m мало, n танков...
(с)Старая шутка про военных.

Yandex
Объявления
23.08.2011, 22:22     Говорят Compilation error
Ответ Создать тему
Опции темы

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