Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Chicanos
0 / 0 / 0
Регистрация: 21.06.2008
Сообщений: 6
#1

Написать функцию копирующую строку из исходной области памяти - C++

21.06.2008, 18:27. Просмотров 2181. Ответов 12
Метки нет (Все метки)

Написать функцию
C++
1
void strCpy(char* dest, char* src)
, копирующую строку из исходной области памяти, на которую указывает указатель src в область памяти, на которую указывает указатель dest. Функция должна копировать строку (в.т.ч. и терминирующий ноль) полностью. Функциями библиотеки string.h пользоваться запрещено.

записал так:
C++
1
2
3
4
5
void strCpy(char* dest, char* src)
{
* dest= * src;   //записываем по адресу dest значение, хранимое по адресу src.
return;
}
но сомневаюсь что терминирующий ноль учитывается в данном случае
подскажите как правильно можно записать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2008, 18:27     Написать функцию копирующую строку из исходной области памяти
Посмотрите здесь:

Написать функцию которая выводит на экран строку символов C++
Написать функцию, которая выводит на экран строку, состоящую из звездочек C++
Написать программу, копирующую все нечетные числа из исходного файла в новый файл C++
Написать функцию, которая переворачивает строку C++
Написать функцию, которая выводит строку, состоящую из одинаковых символов C++
Написать функцию, формирующую на базе исходной строки число типа Double C++
Написать функцию, которая переворачивает строку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2220 / 735 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
21.06.2008, 18:59     Написать функцию копирующую строку из исходной области памяти #2
в данном коде у тебя вообще ничего не учитывается.
ты копируешь 1 байт.
C++
1
2
3
4
5
6
7
8
9
10
void strCpy(char* dest, char* src)
{
while(*src!=0){ 
*dest=*src; //копируем
src++;//смещаем оба указателя на следующий символ
dest++;
}
*dest=*src;//копируем ноль
return;
}
Vourhey
Почетный модератор
6471 / 2246 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
21.06.2008, 19:03     Написать функцию копирующую строку из исходной области памяти #3
Код
void strCpy(char *dest, const char *src)
{
   while(*dest++ = *src++)   ;
}
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2220 / 735 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
21.06.2008, 19:06     Написать функцию копирующую строку из исходной области памяти #4
to Vourhey
да,так несомненно симпотичней
Chicanos
0 / 0 / 0
Регистрация: 21.06.2008
Сообщений: 6
21.06.2008, 19:35  [ТС]     Написать функцию копирующую строку из исходной области памяти #5
спасиб ребят)))
еще вот задача:
Написать программу, выводящую значение функции синус для значений аргументов в интервале от 0 до 6.28 с шагом в π/4. Вывод необходимо осуществить в виде таблицы в форматированном виде:
<аргумент x> <значение sin(x)>
При этом для каждого числа всего должно отводиться минимум 15 позиций на экране, но печататься должно только 4 знака после запятой.




написал так, проверьте:
C++
1
2
3
4
5
6
7
8
9
10
#include "stdio.h"
#include "math.h"
int x;
int sinx;
x=0;
while (x=6.28)
{
printf("%15.4f %15.4f",x, sin(x));
x+0.7854;
}
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2220 / 735 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
21.06.2008, 19:50     Написать функцию копирующую строку из исходной области памяти #6
1. проверил.неправильно - как минимум одна ошибка - бесконечный цикл
while(x=6.28) ... на каждом шаге присваевает х 6.28, соответственно как условие для цикла это 1. сравнение в С : "=="
Но для дробных чисел его использовать чревато - разница в десятитысячную даст результат "не равно(0) ",и ты можешь опять попасть в бесконечный цикл.
Я уж молчу про то,что логичнее было бы в твоем случае использовать while(x!=6.28), но тут те же возражения.здесь нужно использовать
while(x<6.28) ... дальше не смотрел
2. Ты так все домашнее задание делать будешь?)

Добавлено через 1 минуту
ага,еще одна ошибка,сразу бросающаяся в глаза :
строка >>> х+0.7854 не делает ничего - здесь нет оператора присваивания
используй x+=0.7854 или x=x+0.7854
Константы в программе лучше определять с помощью const или #define

Добавлено через 3 минуты
и переменная x у тебя объявлена целой. замени int x на float или double x
Chicanos
0 / 0 / 0
Регистрация: 21.06.2008
Сообщений: 6
21.06.2008, 19:56  [ТС]     Написать функцию копирующую строку из исходной области памяти #7
спасибоо)))) это не домашнее задание, это подготовка к экзамену)))
ибо сессия
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2220 / 735 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
21.06.2008, 20:05     Написать функцию копирующую строку из исходной области памяти #8
Если еще будут вопросы - спрашивай) я пока тут.
Chicanos
0 / 0 / 0
Регистрация: 21.06.2008
Сообщений: 6
21.06.2008, 20:17  [ТС]     Написать функцию копирующую строку из исходной области памяти #9
вот тут еще) Написать результат выполнения программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
 
 
main()
{
    int x,y,z;
 
    x = 3; y = 5; z = 1; 
    printf("%d\n", x & y | z );     
    printf("%d\n", x | y | ~ z );   
    printf("%d\n", !(x ^ y & ~ z) );   
    printf("%d\n", x & y - 10 );
    getch();
}
несовсем понятно что делает в данном случае принтф, точнее (&,|,~,^)
в лекциях написано:
1) & поразрядно логическое И
2) | поразрядно логическое ИЛИ
3) ~ поразрядно логическое НЕ
4) ^ поразрядно исколючающее ИЛИ
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2220 / 735 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
21.06.2008, 20:44     Написать функцию копирующую строку из исходной области памяти #10
поразрядный значит обрабатывает каждый бит
& -- возвращает 1 в соотв. бит,если оба соотв. бита операндов равны1
| - позазрядное "или". возвращает в бит один,если один из битов операндов 1
~ отражает биты.вместо 1 - 0,вместо 0 - 1
^ исключаещее или. возвращает в бит один,если соотв. биты операндов не равны.

теперь к задаче :
x=3. биты последнего байта : 00000011
y=5. биты последнего байта : 00000101
z=1. биты последнего байта : 00000001

правильные ответы :
1
-1
0
3

Добавлено через 12 минут
поясню последний ответ : у этих операций приоритет ниже,чем у арифметических
Chicanos
0 / 0 / 0
Регистрация: 21.06.2008
Сообщений: 6
21.06.2008, 21:06  [ТС]     Написать функцию копирующую строку из исходной области памяти #11
вот еще задача
Написать функцию
void Transp(int src[10][10], int dest[10][10]);
транспонирующую исходный массив src и записывающую результат в массив dest.



чтото мыслей совсем нет(( может как матрицу как нибудь?
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2220 / 735 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
21.06.2008, 21:13     Написать функцию копирующую строку из исходной области памяти #12
C++
1
2
3
4
5
6
7
void Transp(int src[10][10], int dest[10][10]) {
      for(int i=0;i<10;i++) {
               for(int j=0;j<10;j++) {
                dest[j][i]=src[i][j];
               }
      };
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2008, 21:47     Написать функцию копирующую строку из исходной области памяти
Еще ссылки по теме:

Написать функцию которая копирует строку S1 в строку S2 N раз, без использования Strcopy C++
C++ Написать функцию, вставляющую строку в указанную позицию двумерного массива
Реализовать функцию UnSpace(s), возвращающую строку, полученную удалением из исходной всех лишних пробелов C++
C++ Сформировать матрицу из максимальных элементов области исходной матрицы
C++ Написать функцию для определения вхождения в строку слова

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Chicanos
0 / 0 / 0
Регистрация: 21.06.2008
Сообщений: 6
21.06.2008, 21:47  [ТС]     Написать функцию копирующую строку из исходной области памяти #13
хитрый минтай спасиб тебе огромное
осталось еще три задачи... что то я их совсем незнаю как делать((
1)Написать функцию
void Sort(int arr[20]);
сортирующую значения массива arr по убыванию любым известным вам способом. Размер массива передаётся в функцию через параметр iSize.

2)Написать функцию
int FindMax(int src[20]);
возвращающую наибольший элемент массива src.

3)Написать функцию
int* ReadData(int iSize);
динамически выделяющую память размером в iSize байт и считывающую туда блок данных размером iSize байт из файла “input.txt”. Указатель на выделенную область памяти возвращать как значение функции.

П.С. буду оч признателен
Yandex
Объявления
21.06.2008, 21:47     Написать функцию копирующую строку из исходной области памяти
Ответ Создать тему
Опции темы

Текущее время: 03:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru