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

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


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

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

Выпуск № 648
от 25.01.2007, 20:05

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


Вопрос № 71725: Дан код. Нужно произвести сортировку по значениям в первом столбце: #include #include #define n 4 void main(int i){ clrscr(); struct { char kol[13]; char nazv[20]; char god[10]; char ISBN[16]...
Вопрос № 71777: Здравствуйте эксперты! Подскажите, почему получается бесконечный цикл если писать вот так: for(int a=0;a=5;a++){cout<<"*";}; и вот так: for(int a=0;a<5;a+2){cout<<"*";};...
Вопрос № 71778: Здравствуйте уважаемые господа… Вот у меня такой вопрос как можно сохранить структурную переменную в файл и затем её прочитать из файла. struct addr { char name [30]; char street[40]; char city[20]; Graphics::TBit...
Вопрос № 71799: Здравствуйте дорогие эксперты... Где можно достать исходники каких-нибудь полезеых консольных программ для С, С++(желательно попроще если можно - только книгу закончил) Заранее спасибо. А ещё что мне делать с кошельком, для чего он? ...
Вопрос № 71824: Уважаемые эксперты. 1) Не подскажете ли где можно скачать бесплатно книжечку по Microsoft Visual C++ 2005, просто нужно изучить хотя б азы и именно на етой версии. 2) что нужно написать чтоб консоль не закрывалась сразу после работы проги, чтоб ...
Вопрос № 71855: Нужна помощь по MS Visual C++2005 Пробую компильнуть пустую форму всё работает как надо на моём компе, перенашу на другой вылетает ошибка программа настрена не коректно и не запускается. Проходил прогу утилиткой котороя проверяет файл там указан...

Вопрос № 71.725
Дан код. Нужно произвести сортировку по значениям в первом столбце:

#include
#include
#define n 4
void main(int i){
clrscr();
struct
{
char kol[13];
char nazv[20];
char god[10];
char ISBN[16];
} avtor[n];
for(i=1;iprintf(" %d)vvedite nazvanie: ",i);
scanf("%s",&avtor[i].nazv);
printf("%d)vvedite god izdaniya: ",i);
scanf("%s",&avtor[i].god);
printf("%d)vvedite kolichestvo straniz: ",i);
scanf("%s",&avtor[i].kol);
printf("%d)vvedite ISBN: ",i);
scanf("%s",&avtor[i].ISBN);
clrscr();}

printf(" ");
printf("|--------------------------------------------------------------| ");
printf("| Avtor Den Simmons | ");
printf("|--------------------------------------------------------------| ");
printf("| Nazvanie | God | Kolichestvo | ISBN | ");
printf("| | izdaniya | straniz | | ");
printf("|--------------------------------------------------------------| ");
for(i=1;iprintf("|%-20s|%-10s|%-13s|%-16s| ",avtor[i].nazv,avtor[i].god,avtor[i].kol,avtor[i].ISBN);
printf("|--------------------------------------------------------------| ");}
printf("| Biblioteka priklucheniy i fantastiki | ");
printf("|--------------------------------------------------------------| ");
getch();
}
Отправлен: 19.01.2007, 20:09
Вопрос задал: Snowball (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Snowball!
Могу предложить такой вариант.

Приложение:

Ответ отправил: Терсков Сергей (статус: 5-ый класс)
Ответ отправлен: 22.01.2007, 04:40


Вопрос № 71.777
Здравствуйте эксперты!
Подскажите, почему получается бесконечный цикл если писать вот так:
for(int a=0;a=5;a++){cout<<"*";};
и вот так:
for(int a=0;a<5;a+2){cout<<"*";};
Отправлен: 20.01.2007, 10:01
Вопрос задал: Вячеслав Шинкаренко (статус: 1-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: kool
Здравствуйте, Вячеслав Шинкаренко!
В первом случае
for(int a=0;a=5;a++){cout<<"*";};
в условии цикла значение выражения a=(призвоить)5 всегда истино,
а значит цикл не закончится. Нуно так, например,
for(int a=0;a<=5;a++){cout<<"*";};
Во-втором случае
for(int a=0;a<5;a+2){cout<<"*";};
значение a ваще не меняется. Нуно так, например,
for(int a=0;a<5;a+=2){cout<<"*";};
Удачи!
Ответ отправил: kool (статус: 5-ый класс)
Ответ отправлен: 20.01.2007, 12:12
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Это у меня после Бейсика такие заходы.. :)

Отвечает: Mitya86
Здравствуйте, Вячеслав Шинкаренко!

бесконечный цикл в первом случае получается потому что вместо условия вторым параметром цикла стоит присваивание(а=5). "=" - это оператор присваивания, а "==" - оператор сравнения. Поэтому Вам необходимо писать а==5 в первом случае.
во втором случае третьим параметром цикла стоит арифметический оператор сложения, который не изменяет значения операндов(а+2), чтобы присвоить а новое значение необходимо использовать оператор присваивания "=". Т.е во втором случае вместо а+2 нужно писать а=а+2 либо а+=2
Ответ отправил: Mitya86 (статус: 1-ый класс)
Ответ отправлен: 20.01.2007, 12:40

Отвечает: Volodymyr
Здравствуйте, Вячеслав Шинкаренко!
1) for(int a=0;a=5;a++){cout<<"*";}; // нужно условие (int a=0;a!=5;a++) так как цикл выполняется пока условие истинно (т.е. "а" неравно 5).

2) правильно будет: for(int a=0;a<5;a+=2){cout<<"*";}; // иначе результат увеличения "а" на 2 не сохранится.

---------
Проблемы иногда случаются потому, что нынешние юзеры используют вчерашние железо на завтрашних программах с послезавтрашними требованиями.
Ответ отправил: Volodymyr (статус: 2-ой класс)
Ответ отправлен: 20.01.2007, 16:04

Отвечает: Thread
Здравствуйте, Вячеслав Шинкаренко!
Цикл в Си++ представляет собой следущее:
for (инициализация; условие; итерация)

здесь инициализация - это то, что выполняется первый раз
условие - буловское значение, пока оно равно true - цикл выполняется, поэтому цикл

while (условие)
{
}

эквивалентен

for (;условие;)
{
}

итерация - это то, что выполняется при каждом проходе цикла.

Теперь нужно отметить такой момент, что в с++ bool - это такое числовое значение, что если оно равно 0, то это false, при других значения это true

т.е.

цикл
while (true) - бесконечный

то и циклы
while (1)
while (5)
while (8)

тоже бесконечные

Еще один момент: в си оператор = возвращает результат присваивания. Т.е. (x = 5) имеет значение 5 . Поэтому можно записать так: y = (x = 5), ну или без скобок, y = x = 5

Вернемся к вашей задаче.
В первом случае в качестве условия всегда будет значение присваивания a = 5, т.е. 5,а пять в виде bool означает true, получаем всегда выполняющееся условие, т.е. бесконечный цикл

Во втором случае единственное, что делает выражение a+2, это создает некоторую ячейку в памяти со значением 2, при этом само a не изменяется и всегда остается меньше чем 5. Т.е. a < 5 выполняется всегда и цикл бесконечный.
Ответ отправил: Thread (статус: 2-ой класс)
Ответ отправлен: 20.01.2007, 20:08


Вопрос № 71.778
Здравствуйте уважаемые господа…

Вот у меня такой вопрос как можно сохранить структурную переменную в файл и затем её прочитать из файла.

struct addr {
char name [30];
char street[40];
char city[20];
Graphics::TBitmap *stat;
} addr_info, bininfo, cinfo;

Заранее благодарен!.

Отправлен: 20.01.2007, 10:04
Вопрос задал: FreeCube (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Алексеев В.В.
Здравствуйте, FreeCube!
Насколько я помню, можно использовать функции fread и fwrite.
Прототипы функций:
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE
*stream);
fread читает из файла stream nmemb частей по size байт каждая и помещает его по адресу ptr. stream - указатель, полученный с помощью функции fopen().
fwrite записывает в файл stream nmemb частей по size байт каждая читая их начиная с адреса ptr.
Ответ отправил: Алексеев В.В. (статус: 2-ой класс)
Ответ отправлен: 20.01.2007, 11:25

Отвечает: kool
Здравствуйте, FreeCube!
Например так:
fwrite(&addr_info,sizeof(addr_info),1,fout);
Только учти что при этом само изображение в файл не сохраниться!
Удачи!
Ответ отправил: kool (статус: 5-ый класс)
Ответ отправлен: 20.01.2007, 12:12

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

лучше использовать средства представляемые VCL

1. для отрытия/записи/закрытия файлов используется
FileOpen()/FileWrite()/FileClose()

2. у вас в структуре находится указатель на класс. объект этого класса придется сохранять отдельно.в вашем случае примерно так
cinfo.stat->SaveToFile("имя_файла");
Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 20.01.2007, 13:31


Вопрос № 71.799
Здравствуйте дорогие эксперты...
Где можно достать исходники каких-нибудь полезеых консольных программ для С, С++(желательно попроще если можно - только книгу закончил) Заранее спасибо.

А ещё что мне делать с кошельком, для чего он?
P.S пропустил рассылку...
Отправлен: 20.01.2007, 13:21
Вопрос задал: Moontain (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sergijj
Здравствуйте, Moontain!

http://sources.ru/cpp/index.html
http://www.ishodniki.ru/go.php?to=cpp

И т.д...

Google.ru Вам в помощь!

P.S.: А кошелёк - чтобы вопросы задавать и смотреть ответы. А если вырасти в эксперта, то можно, отвечая на вопросы, и повышать баланс этого кошелька (в проекте)...
---------
Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 7-ой класс)
Ответ отправлен: 22.01.2007, 10:10
Оценка за ответ: 5


Вопрос № 71.824
Уважаемые эксперты. 1) Не подскажете ли где можно скачать бесплатно книжечку по Microsoft Visual C++ 2005, просто нужно изучить хотя б азы и именно на етой версии.
2) что нужно написать чтоб консоль не закрывалась сразу после работы проги, чтоб можно посмотреть было результаты работы?
Заранее спасибо всем ответившим.
Отправлен: 20.01.2007, 16:09
Вопрос задал: Кузнецов С.Н. (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: kool
Здравствуйте, Кузнецов С.Н.!
Сделай включение #include <conio.h>
А в том месте где нужно остановиться напиши getch().
А вобще вместо командной строки используй FAR.
Тем более, что он бесплатный и очень мощный.
Удачи!
Ответ отправил: kool (статус: 5-ый класс)
Ответ отправлен: 20.01.2007, 16:42
Оценка за ответ: 5
Комментарий оценки:
спасибо попробую

Отвечает: Mitya86
Здравствуйте, Кузнецов С.Н.!

На первый вопрос ответа не знаю, вроде бы еще нет книжек по пятой студии, по крайней мере на русском.
А что касается второго вопроса, то попробуйте в конце программы добавить функцию cin.get(), а в начале #include <iostream.h>
Ответ отправил: Mitya86 (статус: 1-ый класс)
Ответ отправлен: 20.01.2007, 20:00

Отвечает: ramok
Здравствуйте, Кузнецов С.Н.!

библиотеки где можно найти книги по VC
http://www.livejournal.com/users/den80/27489.html
http://proklondike.com/
http://openlib.org.ua/
http://www.wmasn.com/books/
http://zipsites.ru/
http://c2p.ru/
http://all-ebooks.com

Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 20.01.2007, 21:52


Вопрос № 71.855
Нужна помощь по MS Visual C++2005
Пробую компильнуть пустую форму всё работает как надо на моём компе, перенашу на другой вылетает ошибка программа настрена не коректно и не запускается. Проходил прогу утилиткой котороя проверяет файл там указано что не хватает одной dll библиотеки проверял такя длл-ка есть но как настроить так чтобы она подключалась к файлу автоматом не знаю.
Сам я только начал изучать C++ и с таким еще не сталкивался по этому и прошу помощи и ещё есле кто знает где можно найти учебник по C++2005 то за огромное спасибо приму сылку на учебник.
fox632@yandex.ru
Отправлен: 20.01.2007, 19:47
Вопрос задал: Fox632 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Thread
Здравствуйте, Fox632!
Насколько я понимаю вы используете управляемый Си++, т.е. C++.Net. Здесь дллка вас не спасет, вам нужно установить .Net Framework 2.0. Если вы всеже используете "обычный" Си++, то создайте инсталятор. Заходите в меню там создаете новы проект и выбираете тип - установочный пакет. Поидее студия сама найдет зависимости и добавит библиотеку.
Ответ отправил: Thread (статус: 2-ой класс)
Ответ отправлен: 20.01.2007, 19:55


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.41 beta от 19.01.2007
Яндекс Rambler's Top100

В избранное