forum.rastrnet.ru  

Вернуться   forum.rastrnet.ru > Компьютеры и всё, что с ними связано > Программируем

 Сообщения за день       Добавить альбом       Поиск      Правила форума  


Ответ
 
Опции темы Опции просмотра
Старый 06.11.2007, 22:59   #11
COBEHOK
Новичок
 
Регистрация: 17.08.2004
Сообщений: 780
По умолчанию

У вас задача написать на C или все-таки на С++? Или препод сам не знает?
Код:
#include <iostream>
#include <string>

using namespace std;

void main()
{
  cout << "Please, fill the first string\n";
  string str1;
  cin >> str1;

  cout << "Please, fill the second string\n";
  string str2;
  cin >> str2;

  string str3 = str1 + str2; // можно обойтись и без этой строки
  cout << "Result string is " << str3 << "\n";
}
__________________
Одним фломастером можно раскрасить почти все. Двумя - вообще все!

Последний раз редактировалось COBEHOK; 06.11.2007 в 23:32.
COBEHOK вне форума   Ответить с цитированием
Старый 07.11.2007, 14:48   #12
REY
Trader & Freediver
 
Аватар для REY
 
Регистрация: 27.06.2007
Сообщений: 61
По умолчанию

Раз здесь пишу, значит C++.
string это функция работы со строками? В любом случае мне надо делать без этой функции.
__________________
Не в деньгах счастье, но и не в их отсутствии.
REY вне форума   Ответить с цитированием
Старый 07.11.2007, 16:04   #13
COBEHOK
Новичок
 
Регистрация: 17.08.2004
Сообщений: 780
По умолчанию

Цитата:
Сообщение от REY Посмотреть сообщение
Раз здесь пишу, значит C++.
string это функция работы со строками? В любом случае мне надо делать без этой функции.
string - это спецификация шаблона basic_string, представляющего строку и операции с ней, для случая однобайтных строк. Для юникода следует пользоваться wstring. Можешь считать string классом.
__________________
Одним фломастером можно раскрасить почти все. Двумя - вообще все!
COBEHOK вне форума   Ответить с цитированием
Старый 07.11.2007, 16:54   #14
REY
Trader & Freediver
 
Аватар для REY
 
Регистрация: 27.06.2007
Сообщений: 61
По умолчанию

СОВЕНОК - спасибо за инфу.
Цитата:
1-ю то часть строки кто будет выводить?
Единственная полезная вещь из всего поста. Но и за нее спасибо. Я таки не правильно организовал вывод (память там под все выделена).
Вобщем все сделал, вопрос более не актуален.
__________________
Не в деньгах счастье, но и не в их отсутствии.
REY вне форума   Ответить с цитированием
Старый 07.11.2007, 21:57   #15
Сабля
саблехауз
 
Аватар для Сабля
 
Регистрация: 18.07.2004
Сообщений: 1,161
По умолчанию

Цитата:
Сообщение от REY Посмотреть сообщение
Единственная полезная вещь из всего поста. Но и за нее спасибо. Я таки не правильно организовал вывод (память там под все выделена).
Вобщем все сделал, вопрос более не актуален.
Ага-ага... А теперь поставь варнинг левел =4 и откомпилируй на release... А потом сделай 2 слова, чтобы в сумме было больше 30 символов. И погляди как будет работать твоя прога.
Просто на debug компилятор сам исправляет твои ошибки.
Будущие программисты блин.. а даже элементарной логики в мышлении нету.
Сабля вне форума   Ответить с цитированием
Старый 08.11.2007, 13:21   #16
REY
Trader & Freediver
 
Аватар для REY
 
Регистрация: 27.06.2007
Сообщений: 61
По умолчанию

Хватит уже выпендриваться Какая разница под сколько символов я выделил память? Эта прога не будет иметь практического применения, здесь имеет значение лишь работоспособность алгоритма. А вместо 30, написать например 1000 и обезьяна сможет.
__________________
Не в деньгах счастье, но и не в их отсутствии.
REY вне форума   Ответить с цитированием
Старый 08.11.2007, 15:24   #17
COBEHOK
Новичок
 
Регистрация: 17.08.2004
Сообщений: 780
По умолчанию

Вместо того, чтобы прислушаться к совету Сабли, ты начинаешь строить из себя умника. А "алгоритм" как-раз и дерьмовый И это твое поделие показывает:
1. Что ты не знаешь, что строка заканчивается нулем.
2. Что такое переполнение буфера ты тоже не в курсе.
3. Понятия оптимальности и временной сложности для тебя пустой звук, иначе ты бы не дергал вывод в цикле.
4. Что память неплохо-бы освобождать за собой тебе тоже никто не сказал.
__________________
Одним фломастером можно раскрасить почти все. Двумя - вообще все!
COBEHOK вне форума   Ответить с цитированием
Старый 08.11.2007, 16:28   #18
REY
Trader & Freediver
 
Аватар для REY
 
Регистрация: 27.06.2007
Сообщений: 61
По умолчанию

Цитата:
Что ты не знаешь, что строка заканчивается нулем.
Конечно, и именно по этому в циклах перебора строк ,сказал перебирать элементы, пока значение строки не станет равным ноль символу.
Цитата:
Что память неплохо-бы освобождать за собой тебе тоже никто не сказал.
В конечном варианте программы память освобождена.

Короче, раз я такой неудачник, то у меня к тебе просьба. Вот конечный вариант программы:
Цитата:
#include <iostream.h>
int main()
{
char *pStr1= new char[30];
char *pStr2= new char[30];
int i,j,n;
cout << "Vvedite pervuiu stroku: \n";
cin.getline (pStr1, 30);
cout << "Vvedite vtoruiu stroku: \n";
cin.getline (pStr2, 30);
for (i=0; pStr1[i]!=0; i++)
{
}
for (j=0; pStr2[j]!=0; j++)
{
pStr1[i+j]=pStr2[j];
}
cout << "Itogovaia stroka: \n";
for (n=0; n<(i+j);n++ )
cout <<pStr1[n];
cout <<endl;
delete []pStr1;
delete []pStr2;
return 0;
}
Не мог бы ты подсказать, как этот "дерьмовый" алгоритм оптимизировать, дабы исключить "временную сложность" и прочие беды.
Если подскажешь, то искреннее тебе спасибо за это.
__________________
Не в деньгах счастье, но и не в их отсутствии.

Последний раз редактировалось REY; 08.11.2007 в 16:42.
REY вне форума   Ответить с цитированием
Старый 08.11.2007, 20:06   #19
COBEHOK
Новичок
 
Регистрация: 17.08.2004
Сообщений: 780
Help

Цитата:
Сообщение от REY Посмотреть сообщение
Конечно, и именно по этому в циклах перебора строк ,сказал перебирать элементы, пока значение строки не станет равным ноль символу.
Обрати внимание на строку pStr1[i+j+1]=pStr2[j]; из предыдущего варианта

Цитата:
Сообщение от REY Посмотреть сообщение
Не мог бы ты подсказать, как этот "дерьмовый" алгоритм оптимизировать, дабы исключить "временную сложность" и прочие беды. Если подскажешь, то искреннее тебе спасибо за это.
Это вариант уже лучше. Осталось только убрать последний цикл и вывести итоговую строку за раз. Можно еще перейти с индексов на указатели - мне кажется так код будет понятнее и не нужна арифметика на индексах

Код:
#include <iostream.h>
int main()
{
  cout << "Vvedite pervuiu stroku: \n";
  char szStr1[60]; // здесь динамическая память особо не нужна + 30 символов под вторую строку
  cin.getline(szStr1, 30);

  cout << "Vvedite vtoruiu stroku: \n";
  char szStr2[30];
  cin.getline(szStr2, 30);

  char* pIt1 = szStr2;
  while(*pIt1) ++pIt1; // pIt указывает на завершающий ноль
  
  for(char* pIt2 = szStr2; *pIt2; ++pIt1, ++pIt2)
     *pIt1 = *pIt2;
  *pIt1 = '\0'; // в цикле завершающий ноль не ставится

  cout << "Itogovaia stroka: " << szStr1 << endl;
  return 0;
}
Как-то так
__________________
Одним фломастером можно раскрасить почти все. Двумя - вообще все!
COBEHOK вне форума   Ответить с цитированием
Старый 08.11.2007, 23:35   #20
MebiuS
[3912]
 
Аватар для MebiuS
 
Регистрация: 09.10.2004
Сообщений: 5,600
Отправить сообщение для MebiuS с помощью ICQ
По умолчанию

тыкните пожалуйста пальцем в ошибку... говорит что else не там где надо
Цитата:
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
void main()
{
FILE *f1;
int n;

if((f1=fopen("1.dat","r"))!=NULL);
{
fscanf(f1,"%d",&n);
printf("n=%d",n);
fclose(f1);

n=n*n;
f1=fopen("1new.dat","w");
fprintf(f1,"%d ",n);
fclose(f1);
}
else
printf("File not found");

printf("\nProgramma zakonchila raboty. File 1.new sozdan");
getch();
}
__________________
Сдохни, тостер, сдохни
MebiuS вне форума   Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 20:55. Часовой пояс GMT +7.


Powered by vBulletin® Version 3.8.4 Patch Level 5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Форум открыт в июле 2004 г.
Кошки и котята Красноярска и Сибири Живой Мир Сибири