Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2009, 14:15   #1
spirit_trapper
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 19
По умолчанию Поиск символа и подсчет пробелов (С)

Дана вот такая задача:

1.Дана строка и натуральное число n. Определить количество пробелов в подстроке, состоящей из первых n символов исходной строки, и выяснить, имеются ли в этой подстроке в точности два соседствующих символа «?» (если вводимое значение n оказывается больше длины строки, выдать сообщение об ошибке).

У меня получился вот такой код:

#include <stdio.h>
#include <ncurses.h>

int Length (const char*s, const int n);
int Num (char* s, int n);
int Ask (char* s, int n);
char* ResultF (char* s, int n);

int main()
{
char str[1000];
int n;

clear;
do
{
printf ("Введите строку, содержащую символ '??' или не содержащую такового (на ваш выбор)\n");
fgets(str,1000,stdin);
printf ("Введите колличество символов подстроки:\n");
scanf("%d",&n);
printf (ResultF(str,n));
}
while (0<=n||n<=1000);
if (1000>n||n<0)
printf ("\nОшибка. Введенное значение превышает длину строки.\n");
return 0;
getch();
}

int Length (const char* s, const int n)
{
int i;

if (s[i] <= n)
for ( i=0; s[i] != '\0'; i++ )
return i;
}

int Num (char* s, int n)
{
int i;
int lh=Length(s,n);
int probel;
int prob;

for ( i=0; i<=lh; i++ )
{
if (prob=' ')
do
{
probel=getchar();
switch (probel)
{
case ' ': prob++;
printf ("\nВ подстроке содержится %d пробелов\n", prob);break;
default:
printf ("\nВ подстроке не пробелов\n");
}
}
while (probel != EOF);
}
return i;
}

int Ask (char* s, int n)
{
int i;
int lh=Length(s,n);

for (i=0; i<lh; i++)
{
if (s[i] == '??')
printf ("\nВ подстроке присутствует символ '??'\n");
else
printf ("\nВ подстроке отсутствует символ '??'\n");
}
return i;
}

char* ResultF (char* s, int n)
{
int i;
int lh= Length(s,n);
int nu=Num(s,n);
int ak=Ask(s,n);

for (i=0; i<lh; i++)
{(s[i] == nu)&&(s[i] == ak);}
return s;
}

Не могу понять где ошибка. Компилятор ошибок не находит, однако сама программа работает неадекватно - выдает сообщение только о том что в подстроке нет пробелов. Возможно я что-то напутал в программе подсчета. Подскажите пожалуиста.
spirit_trapper вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и удаление символа в строке Karl_Karlovi4 Общие вопросы Delphi 14 26.10.2011 18:04
поиск и подсчет по условиям insector Microsoft Office Excel 1 18.09.2009 18:47
поиск в строке символа IvanM Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.06.2009 22:27
Поиск символа в Edit1.text Alar Компоненты Delphi 0 29.10.2006 19:02