Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 780
от 27.06.2007, 11:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 478, Экспертов: 69
В номере:Вопросов: 6, Ответов: 10


Вопрос № 92387: Уважаемые эксперты, помогите пожалуйста! Помогите с объяснением задачи (комментариями к строкам): вот сама задача: Напишите программу на С, которая открывает текстовый файл-список, содержащий имена файлов по одному в строке. Программа по...
Вопрос № 92408: Уважаемые знатоки, внимание! Вопрос задает Чайник: Как сделать так, чтобы при нажатии на кнопку открывалась другая форма(БилдерС++). Спасибо....
Вопрос № 92421: Здравствуйте! Начал изучать C и никак не могу решить задачу: Ввести строку а с клавиатуры. Вместо каждой точки поставить многоточие, вместо буквы а поставить о посчитать кол-во замененных букв. На паскале решил на СИ не могу......
Вопрос № 92424: Подскажите как получить текущий год. пробывал декодировать дату (код прилогается), но я не пойму как потом использовать эти переменные day, month, year; а мне нужно число, например год 2007. ...
Вопрос № 92432: подскажите как... есть таблицы неизвестного формата, *.к01 *.к02 ... *.dat .... подскажите как их конвертировать в вормат *.db, как вообще можно узнать о том что за формат этих таблиц? пробывал их открывать разными датабейзами все пишут что ...
Вопрос № 92441: Уважаемые эксперты, помогите составить блок-схему к задаче: Напишите программу на С, которая открывает текстовый файл-список, содержащий имена файлов по одному в строке. Программа подсчитывает количество предложений во всех файлах и выводит ...

Вопрос № 92.387
Уважаемые эксперты, помогите пожалуйста! Помогите с объяснением задачи (комментариями к строкам):

вот сама задача:
Напишите программу на С, которая открывает текстовый файл-список, содержащий имена файлов по одному в строке. Программа подсчитывает количество предложений во всех файлах и выводит сообщение на экран.

решение:

#include <fstream>
#include <stdio.h>
#include <conio.h>
using namespace std;

void main()
{
ifstream in1("files.txt");
char f_name[64],curr_ch;

while (in1.getline(f_name,64))
{
ifstream in2(f_name,ios::binary);
if (in2.fail()) continue;

int s_count = 0,total_chars = 0;
while (in2.get(curr_ch))
{
total_chars++;
if (curr_ch == '.' || curr_ch == '?' || curr_ch == '!')
{
if (total_chars != 1)
s_count++;
total_chars = 0;
}
}

printf(" %s: %d total",f_name,s_count);
}

getch();
}

Напишите пожалуйста комментарии к строкам. Заранее спасибо!
Отправлен: 21.06.2007, 18:55
Вопрос задал: cascar (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Терсков Сергей
Здравствуйте, cascar!
См. в приложении. А вообще стиль программирования не очень хороший. Используются объекты из STL и обычные C-строки (а не string). Файлы не закрываются совсем (а если их очень много, что потом будет с программой ?)

Приложение:

Ответ отправил: Терсков Сергей (статус: Студент)
Ответ отправлен: 22.06.2007, 02:34
Оценка за ответ: 5


Вопрос № 92.408
Уважаемые знатоки, внимание! Вопрос задает Чайник:
Как сделать так, чтобы при нажатии на кнопку открывалась другая форма(БилдерС++).
Спасибо.
Отправлен: 21.06.2007, 22:41
Вопрос задал: Trifit (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Omickron
Здравствуйте, Trifit!

Форму можно просто открыть, а можно в диалоговом режиме (т.е. пока она не закроется, вернуться обратно к приложению ты не сможешь)
Чтобы просто открыть форму приметяется метод Show(). Для модального открытия - ShowModal():TModalResult.

Для того, чтобы открыть из главной формы вспомогательную, добавь модуль вспомогательной формы в раздел include.
Ответ отправил: Omickron (статус: 2-ой класс)
Ответ отправлен: 21.06.2007, 23:05

Отвечает: Sov
Здравствуйте, Trifit!
...
#include "Unit2.h"
#include "Unit1.h"
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->ShowModal();
}
Ответ отправил: Sov (статус: 5-ый класс)
Ответ отправлен: 22.06.2007, 06:27


Вопрос № 92.421
Здравствуйте! Начал изучать C и никак не могу решить задачу:
Ввести строку а с клавиатуры. Вместо каждой точки поставить многоточие, вместо буквы а поставить о посчитать кол-во замененных букв. На паскале решил на СИ не могу...
Отправлен: 22.06.2007, 02:07
Вопрос задал: Klyan (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Терсков Сергей
Здравствуйте, Klyan!
Вариант решения вашей задачи...

Приложение:

Ответ отправил: Терсков Сергей (статус: Студент)
Ответ отправлен: 22.06.2007, 04:19

Отвечает: Ross
Другой вариант, с использование метода find из std::string.
Кстати, cin >> str считает только одно слово. Для чтения строки используется cin.getline

Приложение:

---------
Доступно только то, что видимо (c) Б. Керниган

Ответ отправил: Ross (статус: 10-ый класс)
Ответ отправлен: 22.06.2007, 15:36


Вопрос № 92.424
Подскажите как получить текущий год.
пробывал декодировать дату (код прилогается), но я не пойму как потом использовать эти переменные day, month, year; а мне нужно число, например год 2007.

Приложение:

Отправлен: 22.06.2007, 02:42
Вопрос задал: Michail_bal (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: ramok
Здравствуйте, Michail_bal!

year использовать как обыкновенную переменную. например вывести ее
cout << "год:" << year << endl;
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 22.06.2007, 03:31


Вопрос № 92.432
подскажите как...
есть таблицы неизвестного формата, *.к01 *.к02 ... *.dat ....
подскажите как их конвертировать в вормат *.db, как вообще можно узнать о том что за формат этих таблиц? пробывал их открывать разными датабейзами все пишут что неизвестный формат, таблицы из программы написанной 10 лет назад. заранее спасибо
Отправлен: 22.06.2007, 06:31
Вопрос задал: Michail_bal (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Алексей Демаков
Здравствуйте, Michail_bal!

Попробуйте открыть базу программой Database Workshop:
http://www.panvasoft.com/rus/2536/
http://www.degisy.com/database-workshop.php
Заявлена поддержка многих форматов, в том числе с возможностью преобразования в Excel, Word, HTML, XML, dBase, Paradox.
Ответ отправил: Алексей Демаков (статус: Студент)
Ответ отправлен: 22.06.2007, 07:59

Отвечает: Maxim V.G.
Здравствуйте, Michail_bal!
Есть вариант что эта программа писалась без использования сторонней СУБД. А организация хранения данных организовывалась в коде программы через нетипизированные файлы. Информация записанная в них вполне может быть организована через какой либо алгоритм понятен только самой программе.
---------
Жить вредно - от неё умирают
Ответ отправил: Maxim V.G. (статус: 1-ый класс)
Ответ отправлен: 22.06.2007, 12:23

Отвечает: Зелик Колабухин
Здравствуйте, Michail_bal!

Часто в таких файлах данные расположены в виде таблиц как в простом текстовом файле. Т.е. нужно попробовать просмотреть их как файл типа *.txt.
Возможно там не таблицы, но по виду можно определить какая там информация и как ее оттуда извлечь. Обычно в те времена сильно не мудрили.
Если так не получиться и т.к. ни один "датабейзер" их не определяет, то нужно искать автора или исходники.
Бывает еще, что с такими базами идет подробная документация об их структуре. Поэтому нужно еще смотреть, откуда эти файлы.
Ответ отправил: Зелик Колабухин (статус: 2-ой класс)
Ответ отправлен: 22.06.2007, 15:00


Вопрос № 92.441
Уважаемые эксперты, помогите составить блок-схему к задаче:

Напишите программу на С, которая открывает текстовый файл-список, содержащий имена файлов по одному в строке. Программа подсчитывает количество предложений во всех файлах и выводит сообщение на экран.

#include <fstream> //Для объектов-файлов
#include <stdio.h> //Для printf
#include <conio.h> //Для getch

using namespace std; //Используем пространство имен std

void main() {

ifstream in1("files.txt"); //Создаем объект-файл содержащий список других файлов
char f_name[64],curr_ch; //Объфяляем переменные (строка для имен будущих файлов, и текущего символа)

while(in1.getline(f_name,64)) { //Читаем строки из файла-списка пока они есть

ifstream in2(f_name,ios::binary); //Открываем новый файл с именем f_name

if(in2.fail()) //Если файл не удалось открыть то
continue; //возвращаемся к началу цикла

int s_count = 0,total_chars = 0; //Переменные для количества строк и символов в строке

while(in2.get(curr_ch)) { //Читаем символы пока они есть

total_chars++; //Увеличиваем число символов

if(curr_ch == '.' || curr_ch == '?' || curr_ch == '!') { //Если символ разделитель строки (.?!)

if(total_chars != 1) //Если срока больше одного символа
s_count++; //Увеличиваем количество строк

total_chars = 0; //Обнуляем счетчик символов
}
}

printf(" %s: %d total",f_name,s_count); //Выводим количество строк
}

getch(); //Ждем нажатия клавиши
}
Спасибо!
Отправлен: 22.06.2007, 08:54
Вопрос задал: cascar (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Maxim V.G.
Здравствуйте, cascar!
Блок должна выглядить имеет графические символы, поэтому попробую тебе помочь указывая в скобках графические символы в которые нужно поместить строку:

Начало (овал)
in1 (/______/)
in1 = file.txt (|___|)
f_name[64],curr_ch (/______/)
----------------------------------------------------------------------------------|
цикл1(| |) | |
file.txt<>EOF(\_____/ ) | |
f_name=file.txt (|_____|) | |
FILE fname (/______/) | |
fname=NULL (/) | |
нет------------(/)--------------------------------да |
s_count, total_chars(/_____________/) |
s_count = 0,total_chars = 0 (|______|) |
------------------------------------------------------------------- |
цикл2(| |) | |
f_name<>EOF(\_____/ ) | |
total_chars=total_chars+1 (|_________|) | |
curr_ch = '.' или curr_ch = '?' или curr_ch = '!' (/) | |
да-------------------------------------------------------(/)нет | |
total_chars <> 1(/) | | |
да------------------(/)------------------------------нет | | |
s_count++; (|________|) | | | |
total_chars = 0; (|________|) | | | |
----------------------------------------------|-------| | |
цикл 2 (/-------)__________________________________| |
(|____ |) |
цикл 1 (/-------)____________________________________________|
(|____ |)
f_name,s_count (вывод на экран - не помню)
конец (овал)
Примечание:
Все строки разделяются стрелкой вниз.
Текст пишется внутри графического символа
Называть файл именем переменной неудобно с точки зрения стилистического оформления программы. Поэтому название файла f_name я заменил на fname.
символ <> правильно писать в блок схемах перечёркнутым равно.
символ NULL - общепринятое обозначение логического нуля.
символ EOF общепринятое обозначение признака конца файла.
Надеюсь это тебе поможет составить блок схему.





---------
Жить вредно - от неё умирают
Ответ отправил: Maxim V.G. (статус: 1-ый класс)
Ответ отправлен: 23.06.2007, 13:19
Оценка за ответ: 5
Комментарий оценки:
а что значит, наприме такая строчка
---------------------|-------| | | ?


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное