Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 11.01.2018, 00:51   #1
koderepta
Новичок
 
Регистрация: 11.01.2018
Сообщений: 1
Репутация: 10
По умолчанию не компилится код при gcc

Код:

#include <stdio.h>
#include <stdlib.h>

typedef struct _SLine
{
 double start;
 double end;
 double length()
 {
  return (end-start);
 }
 
 
}Line;

typedef struct _SJLine
{
 double start;
 double end;
 double length()
 {
  return (end-start);
 }
 int *m;
 void set_mas_leng(int l)
 {
  m=(int*)malloc(l*sizeof(int));
 }
 
}JLine;


int read(const char *sf,Line **mas,int *leng)
{
 FILE *f;
 int i=0;
 double xz1,xz2;
 f=fopen(sf,"r");
 if(fscanf(f,"%d",leng)!=1) return -1; 
 else
 {
  (*mas)=(Line*)malloc(*leng/2*sizeof(Line));
  for(i=0;i<*leng;i++)
  {
   fscanf(f,"%lf", &xz1);
   fscanf(f,"%lf", &xz2);
   (*mas+i)->start=xz1;
   (*mas+i)->end=xz2;
  }
  *leng=*leng/2;
   fclose(f);
 }
 return 0;
}



int consist(JLine l1,Line l2) //prinadlejit li l2 sisteme otrezkov l1 i vihodit za ee predeli
{
 if(l2.start>=l1.start&&l2.start<=l1.end && l2.end>l1.end) return 1; else return 0;
}

void set_zero(int *m,int l)
{
 int i;
 for(i=0;i<l;i++)
 {
  m[i]=0;
 }
}


int main(int __argc,const char *__argv[])
{
 if(__argc>1)
 {
 FILE *f;
 Line *mas;
 JLine l,max;
 int leng=0,i=0,g=0,h=0;
     
  if(read(__argv[1],&mas,&leng)==0)
   {
  l.set_mas_leng(leng);max.set_mas_leng(leng);
  max.start=0;max.end=0;
  for(i=0;i<leng;i++)
 {
  set_zero(l.m,leng);
  l.start=mas[i].start;l.end=mas[i].end;
  l.m[i]=1;
  for(g=0;g<leng;g++)
  {
   if(g!=i)
   {
    if(consist(l,mas[g])==1)
    {
     l.end=mas[g].end;
     l.m[g]=1;
    }
   }

  }
  if(l.length()>max.length()) {max.start=l.start;max.end=l.end; for(h=0;h<leng;h++) max.m[h]=l.m[h];}
 }
  
  f=fopen(__argv[2],"w");
  for(i=0;i<leng;i++)
  {
   if(max.m[i]==1) fprintf(f,"%lf %lf ",mas[i].start,mas[i].end); 
   
  }
  fclose(f);
 }
 }
}


Последний раз редактировалось Аватар; 11.01.2018 в 09:51.
koderepta вне форума   Ответить с цитированием
Старый 11.01.2018, 01:59   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 782
Репутация: 570
По умолчанию

Что помешало привести сразу сообщение компилятора об ошибке?
Black Fregat на форуме   Ответить с цитированием
Старый 11.01.2018, 05:51   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 782
Репутация: 570
По умолчанию

Уберите из имён своих переменных двойные подчёркивания в начале!
Стандарт это явно запрещает, так как такие имена резервируются для внутренних нужд компилятора.

А если хотите подробнее, то в файле stdlib.h есть такой код
Код:

#define __argc (*__p___argc())
#define __argv (*__p___argv())

И компилятор C этот код всё равно не откомпилирует, только C++.
Нельзя в чистом C объявлять функции внутри структур.
Black Fregat на форуме   Ответить с цитированием
Старый 11.01.2018, 09:18   #4
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,388
Репутация: 2215

icq: 100500
skype: kick-ass
По умолчанию

Ну что за неуважение?
Код:

#include <stdio.h>
#include <stdlib.h>

typedef struct _SLine
{
    double start;
    double end;
    double length()
    {
        return (end-start);
    }


} Line;

typedef struct _SJLine
{
    double start;
    double end;
    double length()
    {
        return (end-start);
    }
    int *m;
    void set_mas_leng(int l)
    {
        m=(int*)malloc(l*sizeof(int));
    }

} JLine;


int read(const char *sf,Line **mas,int *leng)
{
    FILE *f;
    int i=0;
    double xz1,xz2;
    f=fopen(sf,"r");
    if(fscanf(f,"%d",leng)!=1) return -1;
    else
    {
        (*mas)=(Line*)malloc(*leng/2*sizeof(Line));
        for(i=0; i<*leng; i++)
        {
            fscanf(f,"%lf", &xz1);
            fscanf(f,"%lf", &xz2);
            (*mas+i)->start=xz1;
            (*mas+i)->end=xz2;
        }
        *leng=*leng/2;
        fclose(f);
    }
    return 0;
}



int consist(JLine l1,Line l2) //prinadlejit li l2 sisteme otrezkov l1 i vihodit za ee predeli
{
    if(l2.start>=l1.start&&l2.start<=l1 .end && l2.end>l1.end) return 1;
    else return 0;
}

void set_zero(int *m,int l)
{
    int i;
    for(i=0; i<l; i++)
    {
        m[i]=0;
    }
}


int main(int __argc,const char *__argv[])
{
    if(__argc>1)
    {
        FILE *f;
        Line *mas;
        JLine l,max;
        int leng=0,i=0,g=0,h=0;

        if(read(__argv[1],&mas,&leng)==0)
        {
            l.set_mas_leng(leng);
            max.set_mas_le ng(leng);
            max.start=0;
            max.end=0;
            for(i=0; i<leng; i++)
            {
                set_zero(l.m,leng);
                l.start=mas[i].start;
                l.end=mas[i].end;
                l.m[i]=1;
                for(g=0; g<leng; g++)
                {
                    if(g!=i)
                    {
                        if(consist(l,mas[g])==1)
                        {
                            l.end=mas[g].end;
                            l.m[g]=1;
                        }
                    }

                }
                if(l.length()>max.length()) {
                    max.start=l.start;
                    max.end=l.end;
                    for(h=0; h<leng; h++) max.m[h]=l.m[h];
                }
            }

            f=fopen(__argv[2],"w");
            for(i=0; i<leng; i++)
            {
                if(max.m[i]==1) fprintf(f,"%lf %lf ",mas[i].start,mas[i].end);

            }
            fclose(f);
        }
    }
}

__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума   Ответить с цитированием
Старый 11.01.2018, 19:58   #5
Андрей Ш++
учу с++
Пользователь
 
Аватар для Андрей Ш++
 
Регистрация: 06.10.2017
Сообщений: 36
Репутация: 10
По умолчанию

Там кажысь ошибка в коде присмотрись внемательней :-)
Андрей Ш++ вне форума   Ответить с цитированием
Старый 11.01.2018, 23:43   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 782
Репутация: 570
По умолчанию

Цитата:
Сообщение от Андрей Ш++ Посмотреть сообщение
Там кажысь ошибка в коде присмотрись внемательней :-)
Это стёб такой? Или Вы солидарны с ТС во мнении, что труЪ программист должен видеть ошибку в двух страницах кода невооружённым глазом?

Впрочем, ТС интерес к топику потерял..
Black Fregat на форуме   Ответить с цитированием
Старый 11.01.2018, 23:49   #7
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,388
Репутация: 2215

icq: 100500
skype: kick-ass
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Впрочем, ТС интерес к топику потерял..
О!
__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума   Ответить с цитированием
Старый 12.01.2018, 00:16   #8
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 782
Репутация: 570
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
О!
Ну как в том анекдоте - "А у меня было ещё столько идей.."
Black Fregat на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка компилятора gcc при использовании библиотека SDL в C V.O.L.T. Помощь студентам 1 25.08.2015 17:10
Как исправить ошибку при компиляции в Linux(gcc) heret1c Помощь студентам 6 26.05.2013 20:22
LNK2019 при подключении .h файла (при подключении .cpp все компилится) RomanA Visual C++ 3 16.04.2012 07:47
Ошибка при компиляции <mqueue.h> gcc CodeStudent Qt и кроссплатформенное программирование С/С++ 3 23.06.2010 16:53


01:58.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru