С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.65
ser_13
1 / 1 / 0
Регистрация: 07.02.2012
Сообщений: 3
#1

поиск глобальных переменных с++ - C++

07.02.2012, 16:14. Просмотров 5349. Ответов 35
Метки нет (Все метки)

Есть задачка, которую не могу решить. Дано 9000 .cpp файлов, которые являют собой полноценные программы со своими мейнами. Нужно найти для каждого файла его глобальные переменные. Приветствуются отсылки к каким-нибудь тулзам, которые это умеют делать. Например, как это возможно вытянуть из линкера VS. Парсер написать пытаюсь, но это сложная задача для меня.

Добавлено через 12 минут
Помогите пожалуйста!очень нужно
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 16:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос поиск глобальных переменных с++ (C++):

Инициализация глобальных переменных - C++
Требуется инициализировать 2 массива и 2 переменные, которые используются в 2-х функциях, с клавиатуры, но без передачи их в качестве...

Определение глобальных переменных - C++
Доброго времени суток! Интересует следующий вопрос - Возможно ли определение глобальных переменных в теле подпрограмм или классов? ...

Объявление глобальных переменных - C++
#include "stdafx.h" #include <conio.h> #include <stdio.h> void main (int x, int y) { printf ("x="); scanf_s ("x=&d",...

Описание глобальных переменных - C++
помогите, плиз, с такой незадачей.. в каком из файлов нужно обозначить глобальные переменные, чтоб код нормально читался. вот что у меня...

Использование глобальных переменных - моветон ли? - C++
Ребят, очень часто вижу как отцы С++, когда проверяют чей-то код и обнаруживают там глобальные переменные, заявляют, что это не хорошо, что...

Исправить без использования глобальных переменных - C++
#include<iostream> using namespace std; int a,n,maximum=-1000,x; void zapros() { cout<<"Vvedite razmer massiva"<<endl; } ...

35
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
07.02.2012, 18:16 #16
Глобальные - это не локальные, а локальные - это которые в функциях. И хорошо, нашёл ты строку, начинающуюся с типа. А если это прототип функции? Поэтому ищем всё, что начинается с типов, потом проверяешь два признака: наличие () и нахождение в {} сразу после () без точки с запятой между ) и {. Если оба признака false, значит ты нашёл глобальную переменную.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
07.02.2012, 18:18 #17
taras atavin, Ну так речь о том и шла. Надо смотреть все переменные, которые находятся вне блоков (будь то тело функции, класса или пространство имён). Так ответьте мне теперь на вопрос: при чем же всё-таки тут функции с их списком параметров?
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
07.02.2012, 18:20 #18
Эйси
C++
1
2
3
4
5
6
7
8
9
int f(int x); // По твоей логике это тоже глобальная переменная
int main ()
{
 return 0;
}
int f()
{
 return -x;
}
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.02.2012, 18:21 #19
На Java через регексы можно сделать. Просто повырезать все лишнее подобными запросами:
Java
1
str = str.replaceAll("template.*[{].*[}]", "");
А дальше уже несложно будет.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.02.2012, 18:23 #20
Цитата Сообщение от taras atavin Посмотреть сообщение
Не по {}, а по (): мало ли, что там за блок, а функция имеет список параметров.
Под именем я подразумевал наличие (), если вы об этом.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
07.02.2012, 18:23 #21
taras atavin, ну вот, через 3 сообщения мне удалось из вас вытянуть то, что вы имели ввиду... Доступно излагаете.
Каюсь, об этом не подумал. Но все равно до сих пор не понял, почему вы откинули {} и оставили только ().
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
07.02.2012, 18:27 #22
Цитата Сообщение от soon Посмотреть сообщение
Под именем я подразумевал наличие (), если вы об этом.
Про имя во-первых вообще ни слова не было. А во-вторых как об это догадаться, если имена есть и у переменных и даже у типов?

Добавлено через 2 минуты
Цитата Сообщение от silent_1991 Посмотреть сообщение
юсь, об этом не подумал. Но все равно до сих пор не понял, почему вы откинули {} и оставили только ().
C++
1
2
3
4
5
int f(int x); // Это по твоей логике опять переменная
int main()
{
 return 0;
}
, хотя {} есть только у main.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.02.2012, 18:29 #23
Цитата Сообщение от taras atavin Посмотреть сообщение
Про имя во-первых вообще ни слова не было.
Цитата Сообщение от soon Посмотреть сообщение
И по имени.
Цитата Сообщение от taras atavin Посмотреть сообщение
А во-вторых как об это догадаться, если имена есть и у переменных и даже у типов?
Речь шла о функции, да? А имя функции подразумевает наличие (). Дак о чем вы собирались догадываться?
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
07.02.2012, 18:30 #24
А ну с учётом классов, структур и енамов ещё следует их тоже проверить по ключевым словам и отсеить содержание соответствующих {}.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
07.02.2012, 18:32 #25
Цитата Сообщение от taras atavin Посмотреть сообщение
хотя {} есть только у main.
И что?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Глобальная область
int foo(int a, int b); // Прототип функции
// Глобальная область
void bar()
{
    // Тарам-пам-пам
}
// Глобальная область
class Moo
{
    // Тело класса
};
// Глобальная область
int main()
{
    return 0;
}
// Глобальная область
Как видно, глобальная область находится за пределами блоков {}. В ней и надо искать.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
07.02.2012, 18:35 #26
Цитата Сообщение от silent_1991 Посмотреть сообщение
И что?
А то, что прототип функции {} не имеет, но и глобальной переменной не является.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
07.02.2012, 18:52 #27
Кстати я поторопился. Я в своем коде не учел некоторых вещей. Забыл keyword using. Т.е. using std::cout; и т.д. Забыл typedef-ы
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
07.02.2012, 19:46 #28
taras atavin, ай, вам как об стенку горох. Замяли.
0
Грымзик
2467 / 1444 / 31
Регистрация: 14.09.2009
Сообщений: 2,742
01.05.2012, 19:19 #29
Я тоже занимаюсь этой задачей, и у меня возникла проблема. Ответ получается 218 кб, а ограничение на посылку 200. Конечно может у меня не правильно, но есть повод задуматься, что ошибка все-таки у них. Т.к первый файл у них
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
#include<vector>
#include<algorithm>
 
size_t N,M;
const size_t MAXN = 40000;
std::vector<std::pair<size_t,size_t> > graph[MAXN],query[MAXN],qr;
size_t p[MAXN], ancestor[MAXN];
bool u[MAXN];
size_t ansv[MAXN];
size_t cost[MAXN];
...
А в задании, в примере, указан такой ответ для данного теста
000000.cpp ancestor ansv cost graph M N p qr query u
Т.е нет переменной MAXN. Может я не знаю таких тонкостей, что константные глобальные переменные, все-таки не глобальные?
0
Pasha88
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 4
23.08.2012, 21:12 #30
Цитата Сообщение от Грымзик Посмотреть сообщение
Я тоже занимаюсь этой задачей, и у меня возникла проблема. Ответ получается 218 кб, а ограничение на посылку 200. Конечно может у меня не правильно, но есть повод задуматься, что ошибка все-таки у них. Т.к первый файл у них
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
#include<vector>
#include<algorithm>
 
size_t N,M;
const size_t MAXN = 40000;
std::vector<std::pair<size_t,size_t> > graph[MAXN],query[MAXN],qr;
size_t p[MAXN], ancestor[MAXN];
bool u[MAXN];
size_t ansv[MAXN];
size_t cost[MAXN];
...
А в задании, в примере, указан такой ответ для данного теста
000000.cpp ancestor ansv cost graph M N p qr query u
Т.е нет переменной MAXN. Может я не знаю таких тонкостей, что константные глобальные переменные, все-таки не глобальные?
хммм, мне тоже интересно на счет глобальности констант
0
23.08.2012, 21:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2012, 21:12
Привет! Вот еще темы с ответами:

Вынос глобальных переменных в отдельный файл - C++
Всем привет! Вопрос такой - сижу разбираюсь с вынесением функций в отдельные файлы. Что удалось выяснить - подключая через #include файл...

Ошибка в сравнении глобальных переменных в функциях - C++
Здравствуйте! Я всю жизнь писал на Pascal и с С столкнулся впервые пару дней назад, когда начал эксперементировать с Arduino. Поискал...

Массив (переписать без глобальных переменных) - C++
Помогите написать ету програму без глобальных переменных #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; ...

Объявление глобальных переменных в проекте Dev C++ - C++
Доброй ночи всем! Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте. У меня есть один файл, например, для...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.