Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: Qraizer
Дата сообщения: 09.12.2006 18:21

Цитата:

Цитата: По всем словам.
И по прототипам из хидеров?
Автор: Aquest
Дата сообщения: 11.12.2006 00:40
Как переставить буквы в слове, вводимом с клавиатуры в обратном порядке?


Добавлено:
Функция преобразования строки в массив?
Автор: Mickey_from_nsk
Дата сообщения: 11.12.2006 09:26
Aquest
Язык? Платформа?
Вообще, может в правила вынести обязательное указание этих данных, особенно в таких задачах?
Автор: Qraizer
Дата сообщения: 11.12.2006 12:55
Aquest
Код: #include <iostream>
#include <string>
#include <algorithm>

std::string word;

std::cin >> word;
std::reverse(word.begin(), word.end());
std::cout << word;
Автор: ItsJustMe
Дата сообщения: 11.12.2006 15:20
Есть еще _strrev
Автор: xdude
Дата сообщения: 12.12.2006 02:34
Товарищи, вопрос вроде бы несложный, но поставил меня в тупик: как, использую С/C++, наиболее простым методом прочитать файл построчно, причем без ограничения максимальной длины строки? Есть функции fgets(), есть std::ifstream::getline(), но все они требуют указания максимально возможной длины строки. А нет такой функции, которая бы писала данные до первого '\n' в std::string, которая сама бы выделяла/перевыделяла необходимую память? Или придется самому париться писать? Ведь может же std::string выполнять сложение (конкатенацию) с другой строкой, при этом автоматически увеличивая объем памяти, необходимый для содержания новой строки.
Автор: Mickey_from_nsk
Дата сообщения: 12.12.2006 07:55
xdude
Ты не метод используй, а функцию (шаблонную). Шаблонная функция getline не требует указания длины.
Автор: xdude
Дата сообщения: 12.12.2006 14:09
Mickey_from_nsk
Спасибо, нашел такую
Автор: blackdevil
Дата сообщения: 23.12.2006 19:25
Привет всем форумчанам!
Решил вот с Вами посоветоваться...У меня стоит microsoft visual studio 2005.На c++ пишу маленькую консольную програмку (любую).Для этого создаю пустой проект с одним лишь файлом-исходником.Прога компилится,все нормально.Экзешник запускается на моем компе,все ок.Но на других компах не запускается ни фига ((( Пишет что мол приложение некорректно настроено.Даже причина не ясна.Подскажите,может кто знает в чем причина?Мне кажется в настройках я чего-то не задал.Была тут теория что это из-за разных версий framework на машинах.Короче прям не знаю.Пробовал собирать прогу и в Debug и в Release.Все равно та же проблема.Кидаю другу экзешник по локальной сети а у него не запускается....может кто знает как с этим бороться?Please help! ))
Автор: distance
Дата сообщения: 23.12.2006 20:53
blackdevil
программа требует установленного рантайма от 2005-й студии
лежит обычно тут:
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86.exe
Автор: xdude
Дата сообщения: 23.12.2006 21:10
blackdevil

Цитата:
программа требует установленного рантайма от 2005-й студии

Чтобы она этого рантайма не требовала - можно в настройках проекта (настройках линкера) выставить не динамическое, а статическое подключение стандартных библиотек (CRT, MFC если используется, ну и остальных). Правда, екзешник тогда будет немного больше весить.
Автор: blackdevil
Дата сообщения: 23.12.2006 21:11
Так что же выходит мне придется если я захочу кому-то свой "шедевр" программирования показать с собой эту штуку таскать и ставить???а выход есть какой-нибудь?Можно ли сделать чтобы просто один экзешник запускался на всех компах?Ведь должно же быть это предусмотрено такой мощной средой как вижуал студио!? (((

Добавлено:
ой не успел немного ))) уже ответил xdude,которому огромное спасибо!а нельзя ли узнать поподробней как это сделать?а то я пока чайник,зеленый совсем...узнать бы хоть где это выставляется...
Автор: xdude
Дата сообщения: 23.12.2006 21:33
blackdevil
Меню Project/Properties (Alt+F7) >>

Configuration Properties -> C/C++ -> Code Generation >> Runtime Library = Multy-Threaded (/MT) (не DLL)

Если MFC юзаешь (в консольном придложении - вряд ли), то еще:
Configuration Properties -> General >> Use MFC in a static library

там же рядом ATL, если нужен, тоже надо выбрать static (если не нужен - то пусть останется not using ATL).

Автор: blackdevil
Дата сообщения: 23.12.2006 21:39
ОЙ СПАСИБО ОГРОМНОЕ!!!Пошел пробовать!В зарплату с меня вебмани на пиво ))
Автор: FMeat
Дата сообщения: 27.12.2006 23:03
Около мсяца назад начал юзать C++ по книжке "Как програмировать на С++" Харви Дейтела и Пола Дейтела.

Успешно и не очень собирал проги, написанные в книжке и вот наткнулся на эту (исходник ниже). При попытке собрать компилятор выводит ошибку "error C2061: syntax error : identifier 'cout' ".

Исходник:
#include "iostream"
// Заглавочный файл заключён в ковычки потому что иначе не прёт (Не рискну объяснять почему, так как сам не знаю...), а без раcширения так как в папке include заглавочные файлы лежат в виде бинарников.

using namespace std;
// Этой строки там нет. Она добавленна дабы определить глобальую одлать дейсвия identifier (нелады с переводом).

class Count
{
public:
    int x;
    void print ( cout << x << endl );
};

void main ()
{
    Count counter,
        *counterPtr = &counter,
        &counterRef = counter;

    cout << "Prisvaevanie X znachenie 7 i pechat po imeni obekta: ";
    counter.x = 7;
    counter.print();

    cout << "Prisvaevanie X znachenie 8 i pechat po imeni ssilke: ";
    counterRef.x = 8;
    counterRef.print();

    cout << "Prisvaevanie X znachenie 9 i pechat po ukazatelu: ";
    counterPtr->x = 10;
    counterPtr->print();
}

Короче как исправить чтоб прога компилировалсь в Visual C++ 2005 мелкомягких?
Автор: Abs62
Дата сообщения: 27.12.2006 23:31
FMeat

Цитата:
void print ( cout << x << endl );

Вот тут собака порылась.

Код: void print() { cout << x << endl; };
Автор: FMeat
Дата сообщения: 28.12.2006 11:24
Работает! Что может быть лучше?
Автор: cherepaxa
Дата сообщения: 29.12.2006 13:24
Добрый день
не могу понять можно средствами builder 6
обработать ошибку подключения к базе данных
если да то как
Работаю через AdoQuery никаких AdoConnection
когда пытаюсь сделать
try
{
Form1->ADOQuery1->ExecSQL();
}
и нету связи с базой
catch (...)
{
Form1->Memo1->Lines->Add("бред что ле получица");
}
не помогает что делать?
подмогните если кто то знает.
Сенкс
Автор: rain87
Дата сообщения: 29.12.2006 17:45
cherepaxa
что значит не помогает? всё помогает, но при запуске из среды всегда будет вылазить ексепшн - хз, может где-то в настройках можно отключить

если же запустить ехе вне среды - то ексепшна не будет
Автор: blackdevil
Дата сообщения: 06.01.2007 04:46
Привет всем!
Появился вот такой вопросик...Хочу написать маленькую програмку для выключения компа в заданное время с использованием функции system.Суть такая-программа просит пользователя ввести время в секундах через которое надо выключить комп а потом выполняет выключение по таймеру с помощью стандартной консольной команды shutdown -s -f -t xx где xx как раз и есть число секунд.Проблема такая-как это считанное с клавы время передать функции system и возможно ли это вообще!?Пока получилось что-то вроде:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    int i;
    printf("Enter time to shutdown your computer(in seconds): ");
    scanf("%d",&i);
    system("shutdown -s -f -t xx"); /*вот как раз СЮДА надо передать значение i,то есть поставить его вместо xx.В кавычках i писать нельзя и за кавычками тоже не прокатывает!*/
    return 0;
}

Подскажите пожалуйста,можно ли решить данную задачу вообще, и если да то как это сделать!?
Автор: veronica b
Дата сообщения: 06.01.2007 10:55
blackdevil

Цитата:
system("shutdown -s -f -t xx"); /*вот как раз СЮДА надо передать значение i,то есть поставить его вместо xx.В кавычках i писать нельзя и за кавычками тоже не прокатывает!*/

Твоя функция system, как видно по вашему коду, требует char*, то есть строку символов. Вам надо добавить такой код:
# include <stdio.h>
.......
char buffer[33];
.......
sprintf(buffer, "shutdown -s -f -t %d", i);
system(buffer);
.....
return 0;

Как я понимаю, s, f, t являются литерапами? Если это так, то у вас все будет работать.
Удачи!
Автор: blackdevil
Дата сообщения: 06.01.2007 14:31
Все получилось,СПАСИБО огромное!!!Теперь можно программу продавать ))) (шучу!)

Автор: MFPSoftware
Дата сообщения: 06.01.2007 16:51
Можете мне сказать, как заставить функцию rand вернуть случайное значение от 0 до 6?

Посмотрел я в референсе С++ и мнене очень понятно, почему

( value % 100 ) is in the range 0 to 99
( value % 100 + 1 ) is in the range 1 to 100
( value % 30 + 1985 ) is in the range 1985 to 2014

Если второй пример еще более-менее понятен, то первый и трейтий я не понимаю (


И еще хотелось бы у вас попросить помощи - мне нужно написать функции сложения матриц (в данном случае крадратных массивов), как это лучше всего организовать? Ну и если не трудно, то и примерчик бы.
Автор: veronica b
Дата сообщения: 06.01.2007 18:52
MFPSoftware
Результат операции value % N будет находится в от 0 до N - 1. Теперь вам понятно?

int N = ? // Размер матрицы, должен иметь значение
int idx, jdx; // индексы
........
for(idx = 0; idx < N; idx++) // цикл по строкам
for(jdx = 0l jdx < N; jdx++) // цикл о столбцам
C[idx][jdx] = A[idx][jdx] + B[idx][jdx] // суммирование

.............

Я думаю, все понятно.
Автор: blackdevil
Дата сообщения: 06.01.2007 19:09
Я тоже не понимаю как это действует,MFPSoftware,знаю только что операция x%y означает взять остаток от деления x на y а чтобы нижнюю границу интервала добавить прибавляем как раз то число которое границей является!
На счет сложения массивов-забиваешь в память 2 массива и потом создаешь 3-ий и в цикле заносишь в каждую ячейку сумму элементов 1-го и 2-го массивов.Если я правильно понял задачу то все это довольно просто!

А вот у меня другая трабла...Написал я все-таки эту прогу по выключению компа:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    char buffer[33];
    int i;
    printf(" ________________\n"
         " | |\n"
         " | SHUTDOWN 1.0 |\n"
         " |_______________ |\n\n\n"
        "Enter time to shutdown your computer(in seconds): ");
    scanf("%d",&i);
    if (i==0)
        system("shutdown -a");
    sprintf(buffer, "shutdown -s -f -t %d", i);
    system(buffer);
    return 0;
}

В Visual Studio по прогону (Ctrl+F5) все работает.А когда готовый экзешник запускаю программа как будто зацикливается...ничего не происходит...Может быть кто знает в чем может быть дело???
Автор: MFPSoftware
Дата сообщения: 06.01.2007 20:54
veronica b
про rand я всеравно не понял. Почему так записывается, почему нельзя записать единым числом и т.д. Может ты знаешь, где это хорошо описано? А то с английским я плохо совладаю.

А про матрицу я немного некорректно задал вопрос. Я более-менее представляю себе, как написать ее, а как описать я не очень представляю, а именно, как сделать так, что бы в нее передавался массив и она его же возвращала.

Добавлено:
Проще говоря - как описать функцию, что бы в нее входил массив по указателю и еще одну функцию, что бы в нее входил массив и число и возвращался массив.

Все массивы типа integer.
Автор: veronica b
Дата сообщения: 06.01.2007 23:06
MFPSoftware

Цитата:
про rand я всеравно не понял. Почему так записывается, почему нельзя записать единым числом и т.д. Может ты знаешь, где это хорошо описано? А то с английским я плохо совладаю.


Функция rand() возвращает псевдослучайное число в диапазоне от 0 до RAND_MAX, где эта константа равна 32767. Если же нам нужно случайное число меньше, чем N, то мы используем выражение rand()%N. Если вы собераитесь программировать на Си, то вам обезательно надо разобраться с операцией %(взятие остатка).
Автор: CrackMe
Дата сообщения: 07.01.2007 01:37
надеюсь что пишу в нужной теме. Как установить ms visual c++ 6.0 sp0 ent без виртуальной явы машины (она мне не нужна, а по дефолту отменить устаноку нельзя). Плюс подскажите какие ветви реестра нужны ms visual c++ 6.0 sp0 ent. заранее спасибо
Автор: MFPSoftware
Дата сообщения: 07.01.2007 02:41
CrackMe, тебе сюда: http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=5915


Добавлено:
veronica b, я не понимаю вообще принципа задания диапозона в этой функции =( Не понимаю, причем тут остаток, откуда взялось N и RAND_MAX.

ЗЫ: неужели никто не знает, как написать прототип функции, которая бы в качестве параметров должна была бы принять массив и на выходе тоже возвращала массив.
Автор: veronica b
Дата сообщения: 07.01.2007 08:00
MFPSoftware

Цитата:
я не понимаю вообще принципа задания диапозона в этой функции =( Не понимаю, причем тут остаток, откуда взялось N и RAND_MAX.

Я уже нк знаю как вам объяснить. Сколько лет вы занимаетесь языком Си?

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

Откуда вы взяли это задачу? Как я знаю, в качестве параметра в функциюпередается адрес массива, а не сам массив. Если массив поместить в структуры, то таким извращенным способом можно передать массив в функцию. Функция может вернуть только адрес массива. Как я помню, функции Си возвращают результат в регистре AX или в коибинации регистров AX, DX.


Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.