Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 04:42   #11
KoctR
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 16
По умолчанию

Вот полностью весь код... В трех файлахю

Код:
/* main.cpp */
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

#include "convert.h"
using namespace std;

string ConvBH (string hex);
string ConvHB (string binary);

main ()
{
   string str; /* the numbers from the array */ 
   string array [74][9]; /* the array */
      
   
   /* Open the files */
   ifstream ram ("RAM.txt");
   ifstream reg ("REG.txt");   
   
   /* Setting up the array */
   /* Import data from the RAM file */
   for (int i=0; i<33; i++)
   {
       for (int j=0; j<2; j++)
       {
          ram >> array[i][j];
       }
   }
   
   /* Import data from the REG file */
   for (int i=0; i<1; i++)
   {
      for (int j=2; j<9; j++)
      {
         reg >> array[i][j];
      }
   }
   /* Printing the third colum */
   for (int i=1; i<74; i++)
   {
      for (int j=2; j<9; j++)
      {
         if (j==2)
         {
            reg >> array[i][j];
         }
      }
   }
   
   
   
   /* Print out the array from the files */
   for (int i=0; i<74; i++)
   { 
      for (int j=0; j<9; j++)
      {
         if (j==2 && i>31)
         { cout << "      " << array[i][j] << " "; }
         else
         { cout << array[i][j] << " "; }
      }
      cout << endl;
   }
   
          
   /* Close the files */
   reg.close();
   ram.close();
   
   /* test of the function's flow */
   string binary1 = ConvHB(array[0][1]);
   string binary2 = ConvHB(array[1][1]);
             
   system ("PAUSE");
   return 0;
}


/*convert.h*/
string ConvBH (string hex);

string ConvHB (string binary);



/*convert.cpp*/
#include "convert.h"

/* converting hexadecimal to binary */
string ConvHB(string hex)
{
   string binary;
   string num;
   
   cout << endl;
   
   int length = hex.length();
         
   for (int i=0; i<length; i=i+1)
   {
      string str(hex,i,1);
      if (str == "0")
         { num = "0000"; }
      else if (str == "1")
         { num = "0001"; }
      else if (str == "2")
         { num = "0010"; }
      else if (str == "3")
         { num = "0011"; }
      else if (str == "4")
         { num = "0100"; }
      else if (str == "5")
         { num = "0101"; }
      else if (str == "6")
         { num = "0110"; }
      else if (str == "7")
         { num = "0111"; }
      else if (str == "8")
         { num = "1000"; }
      else if (str == "9")
         { num = "1001"; }
      else if (str == "A")
         { num = "1010"; }
      else if (str == "B")
         { num = "1011"; }
      else if (str == "C")
         { num = "1100"; }
      else if (str == "D")
         { num = "1101"; }
      else if (str == "E")
         { num = "1110"; }
      else if (str == "F")
         { num = "1111"; }
      else 
         { cout << "Wrong hexadecimal number...check it and try again."<< endl;
           cout << "Ignore the result if existed..."<< endl;
           break; 
         }
      binary = binary + num; 
   }
   cout << endl;
   cout << hex << " in hexadecimal, is equal to " << binary << " in binary." << endl;
 
 system ("PAUSE");
 return binary;
}


/* converting binary to hexadecimal */
string ConvBH (string binary)
{
   string hex;
   string num;
      
   int length = binary.length();
   
   if ( length % 4 !=0 )
   {
     int i = 4-(length%4);
     for (int n=0; n<i; n++)
     { binary = "0" + binary; }
   }
      
   for (int i=0; i<length; i=i+4)
   {
      string str(binary,i,4);
      if (str == "0000")
         { num = "0"; }
      else if (str == "0001")
         { num = "1"; }
      else if (str == "0010")
         { num = "2"; }
      else if (str == "0011")
         { num = "3"; }
      else if (str == "0100")
         { num = "4"; }
      else if (str == "0101")
         { num = "5"; }
      else if (str == "0110")
         { num = "6"; }
      else if (str == "0111")
         { num = "7"; }
      else if (str == "1000")
         { num = "8"; }
      else if (str == "1001")
         { num = "9"; }
      else if (str == "1010")
         { num = "A"; }
      else if (str == "1011")
         { num = "B"; }
      else if (str == "1100")
         { num = "C"; }
      else if (str == "1101")
         { num = "D"; }
      else if (str == "1110")
         { num = "E"; }
      else
         { num = "F"; }
      hex = hex + num; 
   }
   cout << endl;
   
   string str(hex,0,1);
   if (str == "0")
   { hex.erase(0,1); }
   
   cout << binary << " in binary, is equal to " << hex << " in hexadecimal." << endl << endl;
 
 return hex;
}
Тексты ошибок:
Line 6: C:\Dev-Cpp\MyWork\1007ICT_Proj1\main.cpp "In file included from main.cpp"
Line 1: C:\Dev-Cpp\MyWork\1007ICT_Proj1\convert.h "'string' does not name a type"
Line 3: C:\Dev-Cpp\MyWork\1007ICT_Proj1\convert.h "'string does not name a type'"

Последний раз редактировалось ACE Valery; 06.04.2011 в 20:34.
KoctR вне форума Ответить с цитированием
Старый 01.04.2011, 12:23   #12
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

std::string ConvBH (string hex);
std::string ConvHB (string binary);
?
или using namespace std; раньше подключения хедера
onewho вне форума Ответить с цитированием
Старый 01.04.2011, 14:36   #13
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
main ()
В ЦПП дефолт-инт ну-ну...
p51x вне форума Ответить с цитированием
Старый 04.04.2011, 05:26   #14
KoctR
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 16
По умолчанию

Проблема не решена.... я перенес using namespace std до подключения хидера, и компилятор выдает ошибки еще и в convert.cpp в начале прописи функций...

А что не так с main()???
KoctR вне форума Ответить с цитированием
Старый 04.04.2011, 14:41   #15
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В Convert.h опять же либо пишите с префиксом std::, либо
Код:
using namespace std;
То, что вы сделали это в main.cpp - не поможет другому файлу, от него независящему.
Цитата:
А что не так с main()???
Согласно стандарту, функция main имеет тип int. У вас же она вообще никакого типа не имеет. В старых версиях языка это означало бы, что неявно будет определен тип int. Сейчас же неявный int отменен и является ошибкой.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 06.04.2011, 13:22   #16
KoctR
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 16
По умолчанию

Сделал.... но проблема осталась...
Все также выдает "'String' does not name a type"
KoctR вне форума Ответить с цитированием
Старый 06.04.2011, 13:29   #17
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

раз выдает String, то где то вы не исправили на маленькую s
ваш код выложите.

и не забудьте тэг CODE
(или на крайняк файлом)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.04.2011, 17:43   #18
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
То, что вы сделали это в main.cpp - не поможет другому файлу, от него независящему.
я не согласен.. #include производит копирование своего содержимого. а компоновка происходит уже после подстановок.

проверьте сами.

мейн :
Код:
#include <string>
#include <iostream>

using namespace std;
#include "123.h"

int main()
{
	str="q";
	cout << str;
    return 0;
}
123.h:
Код:
#ifndef _123_h_
#define _123_h_

string str;

#endif

автору -
надежды мало но попробуй может сделать описание функций не в отдельном цпп-шнике а прямо в загаловке. старые компилеры могут не прожевать .h+.cpp.
правда не знаю какого рода там выдаются ошибки.

Последний раз редактировалось onewho; 06.04.2011 в 17:51.
onewho вне форума Ответить с цитированием
Старый 06.04.2011, 18:14   #19
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вообще то причина в том что using стоит после #include в итоге в файле convert.h еще нет типа string, но после строки using уже есть.
Код:
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;
#include "convert.h"

string ConvBH (string hex);
string ConvHB (string binary);

main ()
{
string str; /* the numbers from the array */ 
string array [74][9]; /* the array */


/* Open the files */
ifstream ram ("RAM.txt");
ifstream reg ("REG.txt"); 

/* Setting up the array */
/* Import data from the RAM file */
for (int i=0; i<33; i++)
{
for (int j=0; j<2; j++)
{
ram >> array[i][j];
}
}

/* Import data from the REG file */
for (int i=0; i<1; i++)
{
for (int j=2; j<9; j++)
{
reg >> array[i][j];
}
}
/* Printing the third colum */
for (int i=1; i<74; i++)
{
for (int j=2; j<9; j++)
{
if (j==2)
{
reg >> array[i][j];
}
}
}



/* Print out the array from the files */
for (int i=0; i<74; i++)
{ 
for (int j=0; j<9; j++)
{
if (j==2 && i>31)
{ cout << " " << array[i][j] << " "; }
else
{ cout << array[i][j] << " "; }
}
cout << endl;
}


/* Close the files */
reg.close();
ram.close();

/* test of the function's flow */
string binary1 = ConvHB(array[0][1]);
string binary2 = ConvHB(array[1][1]);

system ("PAUSE");
return 0;
}
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.04.2011, 07:12   #20
KoctR
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 16
По умолчанию

Спасибо господа!!!))) Ошибок нет, программа работает как надо.

Просто я в файл convert.h включил все библиотеки которые прописал в main.cpp и работает, выходит что библиотеки прописывать надо во всех файлах....

Так получается???
KoctR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Could not convert variant of type (Olestr) into type (Double) java_91 Общие вопросы Delphi 1 18.02.2011 18:46
The type name 'GreenShalControl' does not exist in the type Beton_net WPF, UWP, WinRT, XAML 0 15.02.2011 11:24
Could not convert variant of type (UnicodeString) into type (Double) postaveche БД в Delphi 11 13.12.2010 16:41
Различие смысла в type "type" Alex Cones Общие вопросы Delphi 5 18.04.2010 23:57
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57