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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> с++ лишние символы в массиве, неправильная работа цикла записи символа 
:(
    Опции темы
kelario
Дата 13.3.2010, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!!
 Помогите пожалуйста с простеньким алгоритмом.В какой то момент что то идет не так.
Суть программы : есть 2 файла.В одном из них хранится нное количество слов,записанных через пробел(слово1 слово2 слово2).во втором хранится нное количество пар слов с запятой между ними .т.е  слово1,слово2 слово3,слово4. Программа ищет в первом файле слова, которые во втором файле встречаются слева от запятой и заменяет их словом из той же пары словом ,которое находится  с права от запятой. 
Проблема: программа записывает лишние символы в массив, в который идут слова из второго файла.Из за этого 2 сравниваемых слова никогда не бывыют равны.Хотя если выводить их на экран,они идентичны.

Код

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;




int main(int argc, char *argv[])
{
   int i=0,o=0;
    char y,ch;
    char vards[i];
    char *p,*r;
    p=new char[i];
    r=new char[o];
    
    
    //vvod slov v file2
    ofstream out("file2.txt");
    if(!out)
    {cout <<"Kada iemesla del faile2 izveidot nevar! \n";
}
    ofstream ref("file1.txt");
    if(!ref)
    {cout <<"Kada iemesla del faile1 izveidot nevar! \n";
}

while(y!='n')
{
cout <<"ievadiet pirmo vardu file2 faila \n";

cin >> vards;
out <<vards<<",";
    
cout <<"ievadiet otru vardu file2 faila \n";

cin >> vards;
out <<vards<<' '; 
cout <<"vel vardus ?(y/n) \n";
cin >>y;
if (y!='y')
         {
         y='n';
         }
}       
y='y';  
out.close();
         //file2 готов

while(y!='n')//file 1
{
cout <<"ievadiet vardu file1 faila \n";

cin >> vards;
ref <<vards<<' '; 
cout <<"vel vardus ?(y/n) \n";
cin >>y;
if (y!='y')
         {
         y='n';
         }
}  
ref.close()  ;     
    
fstream file("file1.txt",ios::in|ios::out)  ;
if(!file)
    {cout <<"Kada iemesla del faile1 atvert nevar! \n";
}
//file1 готов

while(file)       //посимвольно считываются слова из первого файла
{
o=0;
i=0;
          while (file)
          {
          
                         file.get(ch);
                        if (ch==' ')
                         {
                               
                        file.peek();
                      i-=i;
                              break;
                              } 
                         if(file) p[i]=ch;
                      cout<<'p'<<p[i]<<i<<"\n";
                     i++;
            }
        

               
ifstream check("file2.txt",ios::in)  ;//посимвольно считываются слова из второго файла
while(check)
{
    while(check)
    {
    check.get(ch);
      if (ch==',')
        { 
         while(ch!=' ')
        
         {
          check.peek();
          check.get(ch);
          }
      o-=o; 
        break;
       
       }
    
    if(check) r[o]=ch;
     cout<<'r'<<r[o]<<o<<"\n";
    o++;
    }
    


}

cout <<"file2"<<r<<"\n"; /*странный момент,если слово из 2-го файла больше 4 букв,
то в конце добавляется какой то произвольный символ.То есть если есть слово "one" оно будет записано как 'one', а слово "three" будет записано как 'three#'  */
cout <<"file1"<<p<<"\n"; 
 
 

if (p==r)  //никогда не бывает верным,хотя на выходе слова идентичны
{
         cout <<i<<o;
         cout <<"true\n";
         
 }
       


 while(o>0) //обнуление массивов для нового цикла
 {
r[o]='\0';
o--;
}
while(i>0)
 {
  p[i]='\0';
  i--;
}

}


    system("PAUSE");
    return EXIT_SUCCESS;
}




Это сообщение отредактировал(а) kelario - 13.3.2010, 15:26
PM MAIL   Вверх
borisbn
Дата 13.3.2010, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



// chestno govorya, tvoi superkommentarii zatrudnitel'no chitat', potrudis' pereklyuchat' raskladku


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
kelario
Дата 13.3.2010, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да без проблем smile  А по теме что нибудь ?
PM MAIL   Вверх
borisbn
Дата 13.3.2010, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Цитата(kelario @  13.3.2010,  12:05 Найти цитируемый пост)
  
Код

 int i=0,o=0;    
... 
 char *p,*r;    p=new char[i];    r=new char[o];

ты выделил массив размером 0 байт, а потом его используешь:

Цитата(kelario @  13.3.2010,  12:05 Найти цитируемый пост)

Код

if(file) p[i]=ch;                      
...
i++;



P.S. Почитай это, если хочешь, чтобы тебе помогали


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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