Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со списками 
:(
    Опции темы
ihbo
Дата 9.5.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 13.12.2005

Репутация: нет
Всего: нет



Здраствуйте.
Начну сразу с кода:
Код

#include <io.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>

struct Link;


struct ip {
char ipadr[18]; char metr1[5]; char metr2 [5] ; char metr3 [5]; char ind[5] ; char ipsubnet[18];
ip* next;
} ;

 struct IPA {
ip* ipadr;
Link* L;
 char metr[5];
 };


int data;

void main()
{

int i=0;
int n;

cout << "Input n" << endl;
cin >> n;

char (*mas)[18];
mas=new char[n][18];

cout << "Input elements array:\n";
for (i=0; i<n; i++)
cin >> mas[i];

FILE* f;
f=fopen("route.log","r");
char s1[100];
char s2[16],s21[12], s6[29],egpProto[8],s61[10] ;
char *s3,s31[80],*s41,*s51, *s42, *routeProto;
char *nstr, *a;
int p=0;
i=0;
do{
fgets(s1,100,f);

strcpy(s2,"ipRouteNextHop.");
strcpy(s21,"IpAddress: ");
strcpy(s6,"ipRouteProto.");
strcpy(s61,"INTEGER: ");
strcpy(egpProto,"bgp(14)");

s3=NULL;
s41=NULL;

if(s3=strstr(s1,s2))
{
strcpy(s31,s3);
s3+=strlen(s2);
strcpy(s31,s3);
s41=strstr(s31,s21);
if(s41)
{
// cout<<s41<<endl;
}

if(s51=strstr(s41,s21))
{
s51+=strlen(s21);
p++;
//cout << p << endl;
}
}

}while(!feof(f));
fclose(f);

FILE* d;
d=fopen("route.log","r");


IPA *mas0;
mas0=new IPA[p];

i=0;
int i2=1,i3;
int comp,Strc=0;

//char (*mas0)[18];
//mas0=new char[p][18];

do{
fgets(s1,100,d);

strcpy(s2,"ipRouteNextHop.");
strcpy(s21,"IpAddress: ");
strcpy(s6,"ipRouteProto.");
strcpy(s61,"INTEGER: ");
strcpy(egpProto,"bgp(14)");

//strcpy(s6,"RFC1213-MIB::ipRouteNextHop.");


s3=NULL;
s41=NULL;

if(s3=strstr(s1,s2))
{
strcpy(s31,s3);
// cout<<s31<<endl;
s3+=strlen(s2);
strcpy(s31,s3);
// cout<<s31<<endl;

s41=strstr(s31,s21);

if(s41)
{
 //cout<<s41<<endl;
}

if(s51=strstr(s41,s21))
{
s51+=strlen(s21);
// cout<<s51<<endl;
}

 char* k = s51;
while(*k)
{
if(*k == '\n')
*k = '\0';
k++;
}

 mas0[i].ipadr=new ip;
 mas0[i].ipadr->next=NULL;

//Proverka na povtor

        if(!i)
         strcpy(mas0[i].ipadr->ipadr,s51);
        if(i)
        {
         comp=1;
         for(i3=0;i3<i2;i3++)
         {
            Strc=strcmp(mas0[i3].ipadr->ipadr,s51);
         if(!Strc)
            {
                comp=0;
                break;
            }
         }
            if(comp)
            {
             strcpy(mas0[i2].ipadr->ipadr,s51);
            // cout<<i2<<' '<<s51<<' '<<mas0[i2].ipadr->ipadr<<endl;
             i2++;
            }
        }


        //poisk ipadr k ipsubnet (gde nstr-est` ipsubnet)

        for (i=0;i<p;i++)
        {

        if(s3=strstr(s1,mas0[i].ipadr->ipadr))
            {

            if(s3=strstr(s1,s2))
            {
            strcpy(s31,s3);
            s3+=strlen(s2);
            strcpy(s31,s3);

            nstr=(char*) malloc (strlen(s31)+1);
            memcpy (nstr, s31, strlen(s31)+1);
            for (a=nstr; *a>0; a++)
            {
                if (*a==32)
                {
                    *a=0;
                    break;
                }
            }

            cout << "nstr - " << nstr << endl;
            }
            }
        
 // Проверка на исп маршрутизир протокол
//Недоделана, но собстна, это в данном случае и не важно

    
        int element2;
        //после проверки, если истино, то пишем

        if(element2=strcmp(routeProto,egpProto))
        {
            if (element2) break;

            if (!element2)
            {
            ip* q=new ip;
            strcpy(q->ipsubnet,nstr);

            q->next=mas0[i].ipadr->next;
            mas0[i].ipadr->next=q;
            }

        mas0[i].ipadr->ipsubnet;
        }

            
    }


 
i++;
        
}

}while(!feof(d));
fclose(d);


    delete[] mas0;
}

Вот (кодинг суксь, просьба не пинать):
Необоходимо зделать поиск к одному значению ipadr несколько значений ipsubnet. Зделанный здесь мною алг неверен (сам уже весь избился), он ищет только одно значение.
Поясню, проверкой на повтор мы исключаем одинаковые значения ipadr, далее анализируя Route.log мы пишем в список к одному значению ipadr несколько значений ipsubnet.
Немного сумбурно написал, но думаю основная мысль понятна.
Может быть есть у кого нибудь мысли как написать верно?
Заранее спасибо. 
PM MAIL   Вверх
Earnest
Дата 10.5.2006, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Судя по тому, что никто пока не ответил, основная мысль и проблема все же не понятны.
Код у тебя приведен длинный, любители лазать по коду и искать неизвесно что, видимо, еще на работе или уже спят. smile Так что давай поконкретнее.  smile  


--------------------
...
PM   Вверх
bsa
Дата 10.5.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Честно говоря, действительно совсем ничего не понятно. А код анализировать влом.
Напиши условие задачи (что должно быть на входе, что на выходе). И дай пример (входные и желаемые выходные значения).
 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2268 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.