Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Задача по строкам. / 24 сообщений из 24, страница 1 из 1
12.03.2011, 00:40
    #37160701
AleksXX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Здравствуйте, помогите мне решить задачу на языке С: "Даны две строки. Получить из этих строк новую строку, объединив N1 первых символов первой строки и N2 последних символов второй строки. N1 и N2 вводятся пользователем."
С учетом, что максимальная длина строки не менее 50 символов. При реализации программы использование функций для работы со строками из библиотек stdlib.h и string.h запрещено.
Спасибо.
...
Рейтинг: 0 / 0
12.03.2011, 00:48
    #37160708
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Хотел-бы я посмотреть в глаза этому преподу...
...
Рейтинг: 0 / 0
12.03.2011, 01:21
    #37160721
к е к с
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
AleksXX,

а как же лекции, конспекты, книжки?
...
Рейтинг: 0 / 0
12.03.2011, 10:45
    #37160868
AleksXX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Преподаватель не объясняет, а самому сложно понять.
...
Рейтинг: 0 / 0
12.03.2011, 11:00
    #37160878
ModulNET
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
А что, нормально, учись студент !

Судя по задачке на С надо ?

Давай пиши , как 2 строки создаешь. Примерно...Подскажемс...

Книжку возьми, полистай по тип char.
...
Рейтинг: 0 / 0
12.03.2011, 11:28
    #37160897
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
AleksXX,

Для начала надо знать, "строки" - это char* или string. Т.е. чистый C или все-таки С++?

Так же не ясно, что значит "учесть, что максимальная длина строки не менее 50 символов". Т.е. какая разница, сколько?
...
Рейтинг: 0 / 0
12.03.2011, 12:06
    #37160945
AleksXX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Чистый С. Извините, просто я не особо разбираюсь... Смог бы сам понять - сюда бы не писал.
...
Рейтинг: 0 / 0
12.03.2011, 12:27
    #37160961
AleksXX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Тип - char.
Код: plaintext
char str_c[] = “ String!”;
Вроде бы так объявлять строку.
...
Рейтинг: 0 / 0
12.03.2011, 15:26
    #37161139
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
AleksXXТип - char.
Код: plaintext
char str_c[] = “ String!”;
Вроде бы так объявлять строку.

круто. уже неплохо.
а как вторую создаешь?
...
Рейтинг: 0 / 0
12.03.2011, 16:08
    #37161196
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
On 12.03.2011 10:45, AleksXX wrote:

> Преподаватель не объясняет, а самому сложно понять.

Ага, так и поверил ...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.03.2011, 19:11
    #37161405
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
AleksXXТип - char.
Код: plaintext
char str_c[] = “ String!”;
Вроде бы так объявлять строку.
Здесь - финт ушами. Хотя преп запретил юзать стандартный АПИ для ASCIIZ массивов
мы всё таки ему "втюхали" хорошенькую константу. Жаль. Можно было-бы
придумать "свои" строки. Ну например, заканчивающиеся ENTER-ом. Или символом смайлика.
Или хранящиеся задом наперёд. Или под каким-нибудь shuffle для пущей секюрности.
Дескать у меня библиотечка "устойчивая к хаку". Строковые переменные не ищутся
через поиск и не трессируются в дампе.
...
Рейтинг: 0 / 0
13.03.2011, 16:13
    #37162254
Сыроежка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
AleksXX С учетом, что максимальная длина строки не менее 50 символов.
Спасибо.

Наверное вы имели в виду, что максимальная длина строки не должна превышать 50 символов?
...
Рейтинг: 0 / 0
13.03.2011, 18:03
    #37162378
Сыроежка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
AleksXXЗдравствуйте, помогите мне решить задачу на языке С: "Даны две строки. Получить из этих строк новую строку, объединив N1 первых символов первой строки и N2 последних символов второй строки. N1 и N2 вводятся пользователем."
С учетом, что максимальная длина строки не менее 50 символов. При реализации программы использование функций для работы со строками из библиотек stdlib.h и string.h запрещено.
Спасибо.

Напишите сами стандартные функции, а из них "собирите" свою задачу.

Например, копирование из одной строки в другую выполняется циклом

while ( ( *dest++ = *src++ ) != '\0' );

Копирование n-символов можно выполнить так

while ( n-- && ( *dest++ = *src++ ) != '\0' );

И т.д.
...
Рейтинг: 0 / 0
14.03.2011, 10:02
    #37162991
AleksXX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Даны две строки. Получить из этих строк новую строку, объединив N1 первых символов
первой строки и N2 последних символов второй строки. N1 и N2 вводятся пользователем.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#include<stdio.h>
#include<string.h>

int main (int argc, char *argv[]) 
{
  int N1, N2;
  char str1[ 101 ], str2[ 101 ], str3[ 101 ] = "";
	puts("Vvedite stroky 1: ");
	scanf("%s", str1);
  puts("Vvedite stroky 2: ");
	scanf("%s", str2);
	puts("Skolko skopirovat simvlov s nachala 1 ctroki?");
	scanf("%d", &N1);
  puts("Skolko skopirovat simvlov s konca 2 ctroki?");
	scanf("%d", &N2);
  strncpy(str3,str1,N1);    
	printf("Stroka 3: \n %s \n", str3);
	return  0 ;
}

Проверьте пожалуйста.
...
Рейтинг: 0 / 0
14.03.2011, 17:14
    #37164274
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
AleksXX,

1. strncpy() библиотечная функция которую (если верить твоему первому посту) использовать нельзя.
2. Забыл обработать вторую строку.
...
Рейтинг: 0 / 0
14.03.2011, 20:31
    #37164569
AleksXX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Что не правильно??? Перепишите.
...
Рейтинг: 0 / 0
15.03.2011, 11:50
    #37165284
ДобрыйКот
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
{
  int N1 =  5 , N2 =  4 ;
  char str1[ 101 ], str2[ 101 ], str3[ 101 ];

	puts("Vvedite stroky 1: ");
	scanf("%s", str1);
  puts("Vvedite stroky 2: ");
	scanf("%s", str2);
	puts("Skolko skopirovat simvlov s nachala 1 ctroki?");
	scanf("%d", &N1);
  puts("Skolko skopirovat simvlov s konca 2 ctroki?");
	scanf("%d", &N2);

	for (int i= 0 ; i<N1; i++)
		str3[i] = str1[i];

	for (int j=N1, i=strlen(str2)-N2; i<=strlen(str2); i++,j++)
		str3[j] = str2[i];

	strlen(str2);
	printf("Stroka 3: \n%s \n", str3);
	return  0 ;
}
...
Рейтинг: 0 / 0
15.03.2011, 12:05
    #37165343
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
ДобрыйКот,
вот это, конечно, супер эффективный код:
Код: plaintext
1.
2.
for (int j=N1, i=strlen(str2)-N2; i<=strlen(str2); i++,j++)
		str3[j] = str2[i];
правильно, пусть процессор поработает, нефига ему простаивать :-))
...
Рейтинг: 0 / 0
15.03.2011, 12:12
    #37165364
ДобрыйКот
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
отбалдуя писал, без проверки на ошибки и тп. Ему понятней будет
...
Рейтинг: 0 / 0
15.03.2011, 12:40
    #37165430
Микросекунда
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
ДобрыйКот пишет:

Д> отбалдуя писал, без проверки на ошибки и тп. Ему понятней будет

А потом появляются темы типа "Почему программа на С++ работает медленнее, чем такая же на С#"
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
25.03.2011, 23:31
    #37183301
AleksXX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Всем привет проверьте пожалуйста.

Дана строка, содержащая число в десятичной системе исчисления. Преобразовать число в строке к восьмеричной системе.


#include<stdio.h>
#include<string.h>
int main (int argc, char *argv[]) {
int N1, N2;
char str1[101], str2[101], str3[101] = "";
puts("Vvedite stroky 1: ");
scanf("%s", str1);
puts("Vvedite stroky 2: ");
scanf("%s", str2);
puts("Skolko skopirovat simvlov s nachala 1 ctroki?");
scanf("%d", &N1);
puts("Skolko skopirovat simvlov s konca 2 ctroki?");
scanf("%d", &N2);
for (int i=0; i<N1; i++)
str3[i] = str1[i];

for (int j=N1, i=strlen(str2)-N2; i<=strlen(str2); i++,j++)
str3[j] = str2[i];

strlen(str2);
printf("Stroka 3: \n%s \n", str3);
return 0;
}
...
Рейтинг: 0 / 0
26.03.2011, 17:14
    #37183821
Сыроежка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
AleksXXВсем привет проверьте пожалуйста.

Дана строка, содержащая число в десятичной системе исчисления. Преобразовать число в строке к восьмеричной системе.


#include<stdio.h>
#include<string.h>
int main (int argc, char *argv[]) {
int N1, N2;
char str1[101], str2[101], str3[101] = "";
puts("Vvedite stroky 1: ");
scanf("%s", str1);
puts("Vvedite stroky 2: ");
scanf("%s", str2);
puts("Skolko skopirovat simvlov s nachala 1 ctroki?");
scanf("%d", &N1);
puts("Skolko skopirovat simvlov s konca 2 ctroki?");
scanf("%d", &N2);
for (int i=0; i<N1; i++)
str3[i] = str1[i];

for (int j=N1, i=strlen(str2)-N2; i<=strlen(str2); i++,j++)
str3[j] = str2[i];

strlen(str2);
printf("Stroka 3: \n%s \n", str3);
return 0;
}

Это неправильный код! Вы работаете со строками, а потому вы должны проверять, не встретился ли нулевой символ. Все строковые функции, которые объявляют параметры, как строки, работают по этому принципу.
Кроме того, неясно, каому стандарту соответствует ваш компилятор. Если он соответствует стандарту С89, то нельзя объявлять переменную внутри цикла

for (int i=0; i<N1; i++)

То есть этот код не будет компилироваться, если ваш компилятор не поддерживает новый стандарт С99.

Кроме того, есть вопросы к постановке задачи. Если вы копируете str2, длина которой меньше, чем N1, то что делать? Либо прекращать копирование, как только вся строка str2 будет скопирована в str1, либо дополнить строку str3 нулями, пока не исчерпаем N1.
На мой взгляд вы должны ориентироваться на интерфейс функции strncpy, которая дополняет строку-назначение нулями, если N больше длины копируемой строки. Но в вашем случае это деалть, после копирования двух строк.
То есть сначала вы копируете строку str1 в str3. Запоминаете, сколько у вас осталось резева в числе N1 ( то есть N1 может быть больше, чем strlen( str1 )). Затем копируете целиком строку str2 в str3. А затем str3 дополняете нулями, количеству которых равно тому, что еще осталось в N1 + N2.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
11.07.2013, 11:01
    #38327811
Иван7485783
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
#include <iostream>
#include <cstdio>
using namespace std;
int s_length(char s[])
{
    int length;
    for(length=0;s[length];i++);
    return length;
}
void s_copy_N(int number,char s_1[],char s_2[])
{
    int i , j;
    for(i=s_length(s_1),j=0;j<number;i++,j++)
    {
        s_1[i]=s_2[j];
    }
    s_1[i]='\0';
}
void s_reverse(char s[])
{
    char rev;
    int length=s_length(s);
    for(int i=0;i<=length/2-1;i++)
    {
        rev=s[i];
        s[i]=s[length-i-1];
        s[length-i-1]=rev;
    }
}
void show_string(char s[])
{
    for(int i=0;s[i];i++)cout << s[i];
}
int main()
{
    int  N1 , N2;
    char s1[101] , s2[101] , s3[201]="";
    cout <<"Enter the first string: "; gets(s1);
    cout <<"Enter the second string: "; gets(s2);
    do
    {
        cout <<"Enter two numbers: Sum of that's numbers must be >= 50 <= 200 \n";
        cout <<"N_1 = "; cin >> N1;
        cout <<"N_2 = "; cin >> N2;
    }
    while((N1+N2)>200||(N1+N2)<50);
    s_reverse(s2);
    s_copy_N(N1,s3,s1);
    s_copy_N(N2,s3,s2);
    show_string(s3);
    return 0;
}
...
Рейтинг: 0 / 0
11.07.2013, 19:50
    #38328641
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по строкам.
С Новым Годом, некромант ты наш!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Задача по строкам. / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]