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

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

Again

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

При выполнении этой задачи необходимо:
1. Строки для тестирования функции вводятся в главной программе с клавиатуры.
2. Предусмотреть обработку ошибок в задании параметров и особенные случаи.
3. Разработать два варианта заданной функции с использованием:
а) индексированных массивов;
б) указателей.
Функция Word (s, n)
Назначение: выделение n-го слова из строки s.
 
Сразу задам вопрос в лоб! Если у вас свои наработки (свои фрагменты кода по данной задачи, примерный алгоритм, мыли или идеи) ?
 
Есть свои наработки по первой задачи, но они очень печальны...
Код:
#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;
 
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;
}
 
Дано цілі числа x1, y1,…, xn, yn. З’ясувати, чи є серед точок (x1, y1),…, (xn, yn)
чотири вершини квадрата. Якщо є, то вивести ці вершини.


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

Добавлено: lazybiz , Лэйз, видно у дураков мысли сходятся ;-)))))))))))))) :(
 
Спс большое, а никак нельзя чтобы в ф-ции не использовать *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;
}
 
а никак нельзя чтобы в ф-ции не использовать *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;
}
 
Это конечно лихо ты сделал, но мне просто нужно объявление ф-ции не менять от начального условия...

Легко.
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;
}
 
можете пож-ста объяснить что означает char*?
и если можно дайте Вашу аську
 
Может тогда вот так:
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;
}
И волки сыты, и яйца целы.
 
СПС ОГРОМНОЕ!!!
Может тогда вот так:
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;
}
И волки сыты, и яйца целы.
 
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;
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab