• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

задача по основам C строки, массивы,указатели

  • Автор темы Again
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Again

№1.Постановка задачи
Составить функцию для обработки символьных срок и программу для проверки работоспособности функции. За образец можно брать библиотечные функции обработки срок языка С, но не использовать их в своей функции.

При выполнении этой задачи необходимо:
1. Строки для тестирования функции вводятся в главной программе с клавиатуры.
2. Предусмотреть обработку ошибок в задании параметров и особенные случаи.
3. Разработать два варианта заданной функции с использованием:
а) индексированных массивов;
б) указателей.
Функция Word (s, n)
Назначение: выделение n-го слова из строки s.
 
D

DarkKnight

Сразу задам вопрос в лоб! Если у вас свои наработки (свои фрагменты кода по данной задачи, примерный алгоритм, мыли или идеи) ?
 
A

Again

Есть свои наработки по первой задачи, но они очень печальны...
Код:
#include<stdio.h>
#include<conio.h>
char word(char s[],int n);
void main()
{int n;
char s[100];
clrscr();
gets(s);
scanf("%s",&s);
word(s,n);
puts(s);
getch();
}
Я не пойму как ф-цию описать...
Словами я знаю что нужно зделать но код...
Код:
#include<stdio.h>
char word(char s[], int n)
{int n;
 
L

lazybiz

C++:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void word( char *s, int n, char *res )
{
int	i, j;
for ( i = 0, j = 1; s[i]; i++ ) {
if ( s[i] == ' ' ) {
if ( ++j == n ) {
while ( s[++i] != ' ' ) *res++ = s[i];
*res = '\0';
return;
}
}
}
}

int main()
{
char	buf[256];
char *	s = "one two three four five six seven";
word( s, 3, buf );
printf( "\'%s\'\n", buf );
return 0;
}
 
D

dimon131

Дано цілі числа x1, y1,…, xn, yn. З’ясувати, чи є серед точок (x1, y1),…, (xn, yn)
чотири вершини квадрата. Якщо є, то вивести ці вершини.


Пожалуйста помогите решить
 
L

lazybiz

Ты откуда такой взялся!? Во-первых пиши понятным языком. Во-вторых создай отдельную тему. Здесь обсуждается другая задача.
 
D

DarkKnight

dimon131, Пожалуйста создайте новую тему и текст желательно на русском языке....

Добавлено: lazybiz , Лэйз, видно у дураков мысли сходятся ;-)))))))))))))) :(
 
A

Again

Спс большое, а никак нельзя чтобы в ф-ции не использовать *res?

C++:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void word( char *s, int n, char *res )
{
int	i, j;
for ( i = 0, j = 1; s[i]; i++ ) {
if ( s[i] == ' ' ) {
if ( ++j == n ) {
while ( s[++i] != ' ' ) *res++ = s[i];
*res = '\0';
return;
}
}
}
}

int main()
{
char	buf[256];
char *	s = "one two three four five six seven";
word( s, 3, buf );
printf( "\'%s\'\n", buf );
return 0;
}
 
L

lazybiz

а никак нельзя чтобы в ф-ции не использовать *res?
Легко.
C++:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void word( char *s, int n, char *a )
{
int	i, j;
for ( i = 0, j = 1; s[i]; i++ ) {
if ( s[i] == ' ' ) {
if ( ++j == n ) {
while ( s[++i] != ' ' ) *a++ = s[i];
*a = '\0';
return;
}
}
}
}

int main()
{
char	buf[256];
char *	s = "one two three four five six seven";
word( s, 3, buf );
printf( "\'%s\'\n", buf );
return 0;
}
 
A

Again

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

Легко.
C++:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void word( char *s, int n, char *a )
{
int	i, j;
for ( i = 0, j = 1; s[i]; i++ ) {
if ( s[i] == ' ' ) {
if ( ++j == n ) {
while ( s[++i] != ' ' ) *a++ = s[i];
*a = '\0';
return;
}
}
}
}

int main()
{
char	buf[256];
char *	s = "one two three four five six seven";
word( s, 3, buf );
printf( "\'%s\'\n", buf );
return 0;
}
 
A

Again

можете пож-ста объяснить что означает char*?
и если можно дайте Вашу аську
 
L

lazybiz

Может тогда вот так:
C++:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

char	w[40];

void word( char s[], int n )
{
int		i, j;
char *	p = w;
for ( i = 0, j = 1; s[i]; i++ ) {
if ( s[i] == ' ' ) {
if ( ++j == n ) {
while ( s[++i] != ' ' ) *p++ = s[i];
*p = '\0';
return;
}
}
}
}

int main()
{
char *	s = "one two three four five six seven";
word( s, 3 );
printf( "\'%s\'\n", w );
return 0;
}
И волки сыты, и яйца целы.
 
A

Again

СПС ОГРОМНОЕ!!!
Может тогда вот так:
C++:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

char	w[40];

void word( char s[], int n )
{
int		i, j;
char *	p = w;
for ( i = 0, j = 1; s[i]; i++ ) {
if ( s[i] == ' ' ) {
if ( ++j == n ) {
while ( s[++i] != ' ' ) *p++ = s[i];
*p = '\0';
return;
}
}
}
}

int main()
{
char *	s = "one two three four five six seven";
word( s, 3 );
printf( "\'%s\'\n", w );
return 0;
}
И волки сыты, и яйца целы.
 
L

lazybiz

C++:
#include <stdio.h>

char	w[40];

void word( char s[], int n )
{
int		i, j;
char *	p = w;
for ( i = 0, j = 1; s[i]; i++ ) {
if ( s[i] == ' ' ) {
if ( ++j == n ) {
while ( s[++i] != ' ' ) *p++ = s[i];
*p = '\0';
return;
}
}
}
}

int main()
{
char *	s = "one two three four five six seven";
word( s, 3 );
printf( "\'%s\'\n", w );
return 0;
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!