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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 968
от 16.01.2008, 22:35

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

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 117894: Здравствуйте все!!! Помогите. Задали задачу в С++: Даны натуральные числа n и m. Найти все их общие делители (положительные). Сама не могу справиться....
Вопрос № 117897: Здравствуйте уважаемые эксперты! Помогите решить 4 задачи... Я и конечно сам попытаюсь сделать, но не факт, что сделаю и потом приводимые вами ответы всегда очен различны с моими... так что просьба помочь. На рекурсию В массиве х...
Вопрос № 117931: Добрый день, уважаемые эксперты. Помогите пожалуйста найти программу, которая составляет блок-схемы по тексту программ С++(желательно несколько), или подскажите где можно скачать бесплатно регистрационный файл "fceditor". Заранее благодарен...
Вопрос № 117932: Здраствуйте, вас спрашивает ученик 9 класса. Вот недавно решил перейти с Pascal'я на С++ , и возникло сразу несколько проблем с компиляторами: 1) Почему в Borland C++ 5.02 не поддерживается заголовок <cstdlib> (не могу использовать функ...
Вопрос № 117987: Уважаемые эксперты! Подскажите в чем ошибка? мне нужно заменить буквы {А Б В} на {A B C} соответственно в пределах некоего файла. Текст проги ниже. Если немного букв то вроде работает, если много не работает. Сто пудово я где-то оплошал. ) <b...

Вопрос № 117.894
Здравствуйте все!!! Помогите. Задали задачу в С++:
Даны натуральные числа n и m. Найти все их общие делители (положительные).
Сама не могу справиться.
Отправлен: 10.01.2008, 23:24
Вопрос задала: Nadenka (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Maksim Trofimov
Здравствуйте, Nadenka!

#include <iostream>

int gcd(int, int);

int main(void)
{
using namespace std;
int m, n;
int res;

cout << "Input two numbers of integer to calculate GCD: ";
cin >> m;
cin >> n;

cout << "GCD calculation result: ";
if(res = gcd(m, n))
cout << res << endl;
else
cout << "one of the numbers is zero.";

cin.get();
cin.get();

return 0;
}

// возвращает наибольший общий делитель и 0,
// если было деление на ноль.
int gcd(int m, int n)
{
if ( (0 == m) || (0 == n) || (0 == m && 0 == n))
return 0;
else if (m%n == 0)
return n;
else gcd(n, m%n);
}
Ответ отправил: Maksim Trofimov (статус: 4-ый класс)
Ответ отправлен: 11.01.2008, 02:06
Оценка за ответ: 5
Комментарий оценки:
Спасибо!!!

Отвечает: Попов А.С.
Здравствуйте, Nadenka!

#include <iostream.h>
#include <vector.h>
int main()
{
int m,n,t;
vector<int> v;
cin>>m;
cin>>n;
(m<n) ? t=m : t=n;

for(int i=1; i<=t; ++i)
if(m%i==0 && n%i==0) v.push_back(i); //общие делители помещаются в вектор(для облегчения дальнейшей работы с ними)

cout<<endl<<"делители:";
for(vector<int>::iterator j=v.begin(); j!=v.end(); ++j)
cout<<endl<<*j;

cout<<endl;
system("pause");
return 0;
}
Ответ отправил: Попов А.С. (статус: 5-ый класс)
Ответ отправлен: 11.01.2008, 06:00
Оценка за ответ: 5
Комментарий оценки:
И Вам спасибо!!!


Вопрос № 117.897
Здравствуйте уважаемые эксперты!
Помогите решить 4 задачи...
Я и конечно сам попытаюсь сделать, но не факт, что сделаю и потом приводимые вами ответы всегда очен различны с моими...
так что просьба помочь.
На рекурсию
В массиве хранится упорядоченные по названию данные о странах: название страны, столица, количество жителей. Выполнить бинарный поиск информации о стране по её названию, используя рекурсивную функцию.

В своей программе "обработка линейного списка" использовать рекурсивную функцию поиска узла списка по значению какого-либо поля.
на деревья
Построить дерево поиска информ. часть которого описана структурной предыдущей лабораторной работой (бинарный поиск).
Построить дерево по уникальному ключу (называние структуры).
Реализовать ф-ии добавления нового узла и поиска.

При попытке удаления заданного узла опр. знач. вершины на которую она заменяется

только плз использовать структурное программирования без всякого ООП!
Заранее благодарен!

Приложение:

Отправлен: 11.01.2008, 00:03
Вопрос задал: Михаил Иванович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Михаил Иванович!
В приложении вы найдёте программу, в которой используется бинарное дерево. Реализованы функции добавления, просмотра, поиска и удаления (с замещением удаляемого элемента) с использованием уникального ключа (страны).
+ ко всему этому данные, которые заносятся в это бинарное дерево упорядочиваются по имени страны. В этой программе нет лишь проверки данных на корректность. Например, если там, где требуется ввести число вы введёте букву, то программа зациклится. Ну, это уж вы сами доделаете. Это не должно вызвать проблем.
Желаю удачи!

Приложение:

Ответ отправил: X-men (статус: 5-ый класс)
Ответ отправлен: 11.01.2008, 01:06
Оценка за ответ: 5


Вопрос № 117.931
Добрый день, уважаемые эксперты. Помогите пожалуйста найти программу, которая составляет блок-схемы по тексту программ С++(желательно несколько), или подскажите где можно скачать бесплатно регистрационный файл "fceditor". Заранее благодарен.
Отправлен: 11.01.2008, 08:25
Вопрос задал: Гасников Александр Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Гасников Александр Сергеевич!
Вообще то, такие вопросы нельзя задавать на нашем портале. Читайте внимательнее правила!
Или в самОм вопросе указывайте, что программа вам нужна лишь в целях ознакомления!
Если возникнут вопросы - пишите в личку.
В целях ознакомления можно воспользоваться вот этими программами:

Приложение:

Ответ отправил: X-men (статус: 5-ый класс)
Ответ отправлен: 11.01.2008, 12:28


Вопрос № 117.932
Здраствуйте, вас спрашивает ученик 9 класса. Вот недавно решил перейти с Pascal'я на С++ ,
и возникло сразу несколько проблем с компиляторами:
1) Почему в Borland C++ 5.02 не поддерживается заголовок <cstdlib> (не могу использовать функцию rand)?
2) Где найти толковый компилятор для разработки и компилирования консольных программ (желательно указать вес),
поскольку, насколько я понял на Borland C++ Builder 6 нельзя их компилировать, а Borland C++ 5.02 устарел?
3) На каких компиляторах на областных олимпиадах в Беларуси (или в России) тестируются проги, написанные на С++
(Например в Беларуси, программы, написанные на Pascal'е компилируются Free Pascal'ем версии 2.2)?
Отправлен: 11.01.2008, 08:31
Вопрос задал: Piotr-es (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Dr_Andrew
Здравствуйте, Piotr-es!
По п. 1. Заголовок <cstdlib> относится к ANSI Standard C++ - современному диалекту C++, который Borland C++ 5.02 не поддерживает. Попробуйте подключить заголовочный файл в старом стиле:
#include <stdlib.h>
// (c - не нужно, .h - обязательно).
По п. 2. Неплохой официально бесплатный консольный компилятор DJGPP доступне для скачивания здесь:
http://www.delorie.com/djgpp/
До начала загрузки воспользуйтесь мастером выбора пакетов:
http://www.delorie.com/djgpp/zip-picker.html
Компилятор состоит из нескольких компонентов (пакетов), "вес" их не превышает 5 Мб (вроде бы).
Однако: если есть Borland C++ Builder 6, то Вы можете компилировать консольные приложения в нём. Закройте проект Win32, созданный по умолчанию и оздайте новый проект типа Console App.
Ответ отправил: Dr_Andrew (статус: 4-ый класс)
Ответ отправлен: 11.01.2008, 09:30
Оценка за ответ: 4
Комментарий оценки:
Что-то я не нашел проект Console App ни в Project -> add new project, ни в File -> new -> over. Есть только Console Wizard, но там
инструкция cout не работает. А DJCPP поддерживает ANSI Standard C++?
P. S. у меня заголовки работают и без расширения
.h

Отвечает: Попов А.С.
Здравствуйте, Piotr-es!
1) вместо cstdlib можно подлючить stdlib.h
2) я сам уже давно консольные программы компилирую DevCpp4.9 скачать можно здесь http://www.bloodshed.net/ (около 9 MB)
ps BCBuilder 6 также может компилировать консольные программы
Ответ отправил: Попов А.С. (статус: 5-ый класс)
Ответ отправлен: 11.01.2008, 10:16
Оценка за ответ: 3
Комментарий оценки:
Мне главное, чтобы компилятор поддерживал ANSI Standard C++, умел создавать EXE файлы и без проблем работал с консольными прогами.
Еще желательно, но необязательно, чтобы умел выводить на экран русский текст (к примеру, Borland C++ 5.02 этого не умеет). Если кто знает
такой, пишите в мини-форум

Отвечает: Maksim Trofimov
Здравствуйте, Piotr-es!
Не советую прям так сразу переходить с Pascal на С++. Лучше изучите сначала C. Узучив С, Вы с небольшими усилиями изучите С++ и все его объектно-ориентированные возможности (кстати очень большие и Вам так просто, без знания С, с этим не справиться). Если последуете моему совету, то Вам лучше иметь компилятор gcc, так как он, в большей мере, соответствует последнему стандарту C99. Очень хорошая книга: Язык программирования C. Стивен Прата. 5-е издание(касается изменений в стандарте и стандарта C99), правда очень дорогая(я покупал за 700р...)
Если не последуете моему совету, тогда для компиляции программ на C++, используйте свободно распространяемый компилятор g++. Его можно установить вместе с Unix-мини-системой mingw(в приложении ссылка на автоматический установщик через Интернет, т.е Сами выберете, что устанавливать, а что нет...если что - в документацию mingw.org). Кстати mingw имеет компилятор и gcc, и g++ и занимает места на носителе информации очень мало - оправдывает название - минимальная GNU система в Windows :)

Приложение:

Ответ отправил: Maksim Trofimov (статус: 4-ый класс)
Ответ отправлен: 11.01.2008, 12:06
Оценка за ответ: 5
Комментарий оценки:
У меня тоже хорошая книга: Шилдт Герберт C++ руководство для начинающих. Там всё описано просторно, подробно и понятно. Этот автор,
когда писал эту книгу, придерживался ANSI Standard C++, который мои компиляторы не поддерживают. Кстати, он, насколько я понял, почти
всю свою книгу (670 страниц) посвятил консольным программам, так что проблем с изучением возникнуть не должно. Кстати, про MiniGW
наслышан достаточно на форумах. Напишите, пожалуйста, в мини-форум,поддерживает ли он ANSI Standard C++, умеет ли создавать EXE файлы и
без проблем работать без проблем с консольными прогами

Отвечает: Neil
Здравствуйте, Piotr-es!

1) Потому что правильно это называется #include <stdlib.h> , Вы откуда-то неверно узнали название заголовочника.
2) Отчего же нельзя? Только вот вопрос: Вас интересуют просто консольные программы, или программы под DOS? Если первое - в С++ Builder 6 выбираем меню: File -> New -> Other, в появившемся окне ищем Console Wizard - вот Вам и консоль. Естественно, под DOS оно работать не будет. По поводу списка компиляторов - используйте поиск :) например, яндекс по запросу "компиляторы C++" либо "компиляторы C++"
3) Ответить на этот вопрос не могу, однако, если Вы пишете по стандарту и не очень углубляясь в системные дебри - любой компилятор C++ должен Вам подойти. Вероятно, Builder подойдёт.
Ответ отправил: Neil (статус: 2-ой класс)
Ответ отправлен: 11.01.2008, 20:57
Оценка за ответ: 4
Комментарий оценки:
Всё я правильно узнал, просто это название наверное относительно новое, как и ANSI Standard C++, и пока что многими компиляторами не
поддерживается. Кстати, почему-то в проекте Console Wizard не поддерживается инструкция вывода на консоль cout. Может у меня BCBuilder 6
старый (Build 10.155; Copyright 1983-2002)?


Вопрос № 117.987
Уважаемые эксперты!
Подскажите в чем ошибка? мне нужно заменить буквы {А Б В} на {A B C} соответственно в пределах некоего файла. Текст проги ниже. Если немного букв то вроде работает, если много не работает. Сто пудово я где-то оплошал. )

P.S.: не лопайтесь со смеха!! если что, то я только-только раздел работы с файлами открыл в книге, не было времени пока что его разбирать. а заменить символы в файле ох как надо).

Приложение:

Отправлен: 11.01.2008, 14:48
Вопрос задал: Warobushek (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Попов А.С.
Здравствуйте, Warobushek!
Очевидно ошибка здесь:
case 'Ђ': men('A');
case 'Ѓ': men('B');
case '‚': men('C');
если файл записан в кодировке win1251 то этот код не отработает
исправляется перекодированием файла в 866 (dos'овая кодировка) или заменой кода на:
case 'А': men('A');
case 'Б': men('B');
case 'В': men('C');
Ответ отправил: Попов А.С. (статус: 5-ый класс)
Ответ отправлен: 11.01.2008, 15:17
Оценка за ответ: 2
Комментарий оценки:
ошибки никакой нет в начертании букв вопрос не по кодировке а по алгоритму, непонятки с синтаксисом

Отвечает: Maksim Trofimov
Здравствуйте, Warobushek!
Это делается намного проще...
Исходные данные берутся из файла data.txt. Вывод транслитированных букв направляется в файл out.txt

#include <stdio.h>
int main(void)
{
FILE *fin = NULL; // входной файл
FILE *fout = fopen("out.txt", "wt"); // конечный файл с замененными буквами
char buf[255];
const char *trans[5] = {"ABVGD", "АБВГД"};
unsigned readed;
unsigned i;

if((fin = fopen("data.txt", "rt"))!= NULL)
while((readed = fread(buf, sizeof(char), 255, fin)) > 0)
for(i = 0; i < readed; i++)
{
if(buf[i] == trans[0][i])
fwrite((void *)&trans[1][i], sizeof(char), 1, fout);
else if(buf[i]!= ' ')
fwrite((void *)&trans[0][i], sizeof(char), 1, fout);
}

fclose(fin);
fclose(fout);
return 0;
}

Пора бы прекратить писать программы под DOS и использовать такие среды как Borland C 3.1, Quick C 2.0 и т.д.
..или Вы до сих пор пользуетесь DOS'ом? Если нет, то скачайте инсталлятор mingw здесть: http://zapalm.rusfaq.ru/dev/
mingw - это Unix-мини-система, которая включает компиляторы gcc (для языка С) и g++(для языка С++). Это очень хорошие компиляторы...
Для компиляции программы на С, нужно из консоли выполнить gcc <исходник> -o <имя исполняемого файла>
То есть: Есть исходник prog.c и надо его откомпилировать с именем proga.exe, то пишем так:
gcc prog.c -o proga
Аналогично для g++.
Ответ отправил: Maksim Trofimov (статус: 4-ый класс)
Ответ отправлен: 12.01.2008, 07:28
Оценка за ответ: 5
Комментарий оценки:
немного неверно, но я уже разобрался.. неверно, потому что для корректной замены нужно каждый элемент массива buf прогнать по массиву trans до встречи необходимого символа, тем не менее, принцип ясен, а эта мелочь, скорее всего опечатка)


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


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

В избранное