Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 45 из 87<  1 ... 42  43  44  45  46  47  48 ... 87  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 19.03.2006
ребят, глупый вопрос, хочу вывести символ при помощи cout, есть аски код символа, который надо вывести,
короче нужен аналог вот такого:
Код:
...
char ch;
...
printf("%c",ch);
...

можно конечно вот так, но это вроде какойто изврат уже, думаю проще как нибудь можно...
изврат:
Код:
...
char ch,temp[2]="_";
...
temp[0]=ch;
cout<<*temp;
...



Партнер
 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Jelfer

:?:

Код:
#include <iostream>

using namespace std;

int main()
{
    char ch = 97;
    cout << ch;
}


Код:
{dev2}\[anossovp]~/tests>gcc -lm -lstdc++  c.cpp
{dev2}\[anossovp]~/tests>./a.out
a

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 19.03.2006
Anoss, упс... ппц как я ступил, сначала непонял прикола, оказалось ch было интом.... ппц... извиняюсь...
такие тупости, вот что значит на cpp не писал, вчера ещё классы изучал, забыл после определения класса, после фигурной скобки поставить точку с запятой, ппц сколько сидел, думал что у меня крыша едет.... )))


 

Member
Статус: Не в сети
Регистрация: 19.03.2006
есть такая проблемка, вот примерный код:
Код:
...
fstream io;
io.open("c:\1.txt",ios::in);
...
while(!io.eof())   /* тут считываю из потока всё, т.е. дохожу до конца... */
{
...
}
io.close();
io.open("c:\1.txt",ios::in);
...

потом, пытаюсь открыть файл, он неоткрывается, в чём проблема? подскажите пожалуста...
или ещё такая фишка, если открываю файл, лучше кодом:
Код:
...
io.open("c:\1.txt",ios::in);
...
io.close();
...
io.open("c:\2.txt",ios::in);
/* тоже почемуто неоткрывается */

т.е. снова неоткрывается как меняю путь к файлу...


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Jelfer Все должно работать, ошибки где-то в выкинутом тобой коде. Давай полный код и опиши, что ты имеешь в виду под «неоткрывается».

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 19.03.2006
Anoss, Спасибо что помогаешь!
вот код метода, класс неполностью, я только то что для метода нужно расписал, так до кучи.
есть подозрения что как бы указатель текущей позиции в файле указывает на конец файла, при втором вызове, так бы замутить что нить типа rewind()...
но с другой стороны, поток то по новой открывается...
Код:
class base
{
   unsigned long int card_num;
   unsigned int ball_num[5];
   fstream io;
   file_name[100];
public:
   show_all();
};

base::show_all()
{
   io.open(file_name,ios::in);
   if(!io)         /* if(!io.is_open()) - тоже самое вроде как */
   {
      cout<<"can't open file"<<endl;
   }
   else
   {
      char temp[16];
      io>>temp[0];
      if(temp[0]=='R'||temp[0]=='D')
      {
         cout<<"card num\ts1\ts2\ts3\ts4\ts5";
         int i,j,k;
         while(!io.eof())
         {
            io>>temp;
            if(temp[0]=='\0'&&io.eof())break;
            for(k=0;temp[k]!='\0';k++);
            card_num=0;
            for(j=0;k--;j++)card_num+=(temp[k]-'0')*pow(10,j);
            for(i=0;i<5;i++)
            {
               io>>temp;
               for(k=0;temp[k]!='\0';k++);
               ball_num[i]=0;
               for(j=0;k--;j++)ball_num[i]+=(temp[k]-'0')*pow(10,j);
            }
            cout<<endl<<card_num<<"\t";
            for(i=0;i<5;i++)cout<<"\t"<<ball_num[i];
         }
      }
      else cout<<"failed file format"<<endl;
      io.close();
   }
}


при повторном вызове этого метода io.is_open() возвращает false

и ещё интересует такой вопрос, можно ли удалить кусок данных из середины файла? как?

оффтоп, как мне плохо без полного справочника по C++ Герберта Шилдта, вечно когда нужен, у кого то он лежит :( там наверняка всё есть...
как я привык к СИшному файловому вводу/выводу



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


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Опять же, вот такой код работает прекрасно:

Код:
#include <iostream>
#include <fstream>

using namespace std;

class base
{
   unsigned long int card_num;
   unsigned int ball_num[5];
   fstream io;
   char file_name[100];
public:
   void show_all();
   base(char *n);
};

base::base(char *n)
{
  strcpy(file_name, n);
}

void base::show_all()
{
   io.open(file_name,ios::in);
   if(!io.is_open())   
   {
      cout<<"can't open file"<<endl;
   }
   else
   {
      char temp[16];
      while(!io.eof())
       {
            io>>temp;
            cout << temp << endl;
       }
     
     
      io.close();
   }
}


int main()
{
   base *b = new base("test.txt");
   b->show_all();
   b->show_all();
   return 0;
}


С file_name ничего там не происходит между вызовами катастрофического?
Добавлено спустя 8 минут, 34 секунды
Jelfer писал(а):
как мне плохо без полного справочника по C++

На гугле забанили? Бедняга)

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 19.03.2006
Anoss, гм, странно, у меня и твоя прога выводит только один раз!!!
компилю MS Visual C++ v.6.0
Добавлено спустя 31 минуту, 37 секунд
Dev-C++ скачал, тоже также как и в MSVC++,
в борлэнде 3.1 фиг знает какого года, чуток подредактировав, твоя программа работает правильно...
жаль что мне много надо редактировать что бы на борлэнд перейти...

п.с. вопрос с вырезанием куска данных из середины файла открыт... просто я незнаю как это сделать, кроме того что записать во временный файл начальный и конечный куски, а потом собрать в одно
п.с.2. ещё есть проблема в создании и переименовании файла используя файловый ввод/вывод Си++


 

Member
Статус: Не в сети
Регистрация: 02.02.2004
Откуда: Украина.
Не могу побороть ошибку

вот код. пир запуске пишет BGI Error: Graphics not initialized (use 'initgraph'). файл EGAVGA.BGI кидал уже куда только можно, результат 1. может среда не натсроена может не понимаю чего-то :(

#include<stdio.h>
#include<graphics.h>
#include<conio.h>
void main( )
{

int dr=DETECT, a;
initgraph(&dr, &a, "");

clrscr();
line(10, 10, 100, 175); //Сплошная линия.
setlinestyle(DOTTED_LINE, 0xffff, NORM_WIDTH);
line(75, 50, 350, 400); //Точечная линия.
setlinestyle(SOLID_LINE, 0xffff, NORM_WIDTH);
line(0, 0, 600, 400); //Снова сплошная линия.
circle(300, 325, 100); //Окружность.
rectangle(100, 100, 200, 350); //Прямоугольник.
ellipse(300, 200, 0, 360, 75, 100); //Эллипс.
closegraph();
}
Добавлено спустя 1 минуту, 15 секунд
прога с хелпа выдаёт
BGI Error: Graphics not initialized (use 'initgraph')

Graphics error: Invalid device driver file (EGAVGA.BGI)
может фал битый?


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Alexsandr Какая среда-то?

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 02.02.2004
Откуда: Украина.
Borland C++

Version 3.1

Только визуально судя по тем файлам что есть порезана сильна.


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Alexsandr Ухх.. ну может и битый… Попробуй SVGA

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 02.02.2004
Откуда: Украина.
Попробую. Может кто-то вышлет папку BGI на адрес sasha2541=yandex.ru?
Добавлено спустя 10 часов, 4 минуты, 42 секунды
Всё нашел подходящий EGAVGA.BGI. SVGA работать отказался по неизвестной причине.


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 30.10.2007
Откуда: Одесса
Я только учусь кодить. В книге было задание написать прогу которая бы возводила в степень через рекурсивную функцию. Можно ли улучшить нижеследующий код?

#include <iostream.h>
#include <stdlib.h>
int Degr(int); int y; int x ;
int main()
{
int z;
cout <<"Vvedite 4islo a zatem stepen' \n" ; cin >>x; cin >>y;
z = Degr(x);
cout <<"Rezul'tat= " <<z;

system("PAUSE");
return 0;
}
int Degr(int a)
{a=a*x ;y=y-1; if (y>1) {return Degr(a);}
}

_________________
Если Бог за нас, кто против нас?(с) Библия
В случае масштабных военных действий, эвакуация населения не только не производится, но и не планируется.


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Everlast82

Код:
#include <iostream>

using namespace std;

int My_Pow(int x, unsigned int power);

int main()
{
   int z, x;
   unsigned int y;

   cout << "Vvedite 4islo a zatem stepen'" << endl;
   cin >>x; cin >>y;
   
   z = My_Pow(x, y);
   
   cout <<"Rezul'tat = " << z << endl;

   return 0;
}

int My_Pow(int x, unsigned int power)
{
   if (power == 0) return 1;
   if (power == 1) return x;

   return x * My_Pow(x, --power);
}

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
Я бы написал вот так:
Код:
int pow(int value, unsigned int power)
{
   return power == 0 ? 1 : value * pow(value, --power);
}


Потому что вызов if (power == 1) слишком дорого обходиться, он может вызваться раз 10 (если десятая степень), а в этом случае лучше уж один раз умножить, чем столько раз сравнивать.
Еще можно сделать перегрузки для разных типов, а не только для int.

Или даже вот так лучше:
Код:
int pow(int value, unsigned int power)
{
  if (power < 2)
    return power == 1 ? value : 1;
  else
    return value * pow(value, --power);
}


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 30.10.2007
Откуда: Одесса
Anoss спасибо за ответ. Но я раньше не сталкивался с "using namespace std;" Для чего оно используется? Я компилю через Dev-c++ и если в тексте проги нет system("PAUSE") то окно после ввода всех данных и нажатия Enter, просто исчезает...

_________________
Если Бог за нас, кто против нас?(с) Библия
В случае масштабных военных действий, эвакуация населения не только не производится, но и не планируется.


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
Everlast82
Зачем pause использовать. Я лично люблю подключать <conio.h> и писать функцию в конце _getch(), которая ожидает нажатия любой клавиши. Есть и другие способы.

using namespace std;
Используется для сообщения о том, что ты используешь пространство имен std. Если этого не сделать, то не будет доступа к cout, cin, без приписки std:: (например std::cout), которые использовал Anoss при написании кода.


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 30.10.2007
Откуда: Одесса
sashar2 спасибо, а вы какой компилятор используете?


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
Everlast82
Microsoft Visual C++ (2005/2008) реже Intel C++ Compiler.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 45 из 87<  1 ... 42  43  44  45  46  47  48 ... 87  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan