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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2011, 21:37   #21
blak333
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 25
По умолчанию

а как найти расстояние между этими словами?
blak333 вне форума Ответить с цитированием
Старый 09.07.2011, 21:44   #22
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

По-разному можно. Например я бы как-то так делал: проходим строку в цикле, если текущий символ буква (не помню как это на Си записывается), то прибавляем в другую строку ("буфер"), когда встретили не букву (или если строка (в которой предложение, а не слово) кончилась) смотрим сколько в этом слове букв и если подходит, то сохраняем в какой-нибудь массив его позицию и обнуляем буфер. Дальше в массиве сравниваем их.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.07.2011, 13:44   #23
hardorsoft
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 35
По умолчанию

В начале всегда тяжело и чем лучше усвоишь начала тем легче будет потом.
Вот смотри сначала ты получаешь строку.
Код:
gets(a);
теперь тебе надо выяснить длину каждого слова в строке.
Код:
#define lim 100 // пусть слов в строке может быть 100
int b[lim];
j = 0; // счетчик букв в слове
for(i = 0; a[i] != '\0'; i++)
  if(a[i] != ' ' || a[i] != '\t') j++; // пробелы и табуляции не входят в слова иначе мы считаем количество букв в слове.
  if(a[i] == ' ' || a[i] == '\t') // если пробел или табуляция, то слово закончилось. (А если два пробела подряд? Подумай.)
  {
    b[k++] = j; // в массиве в[] - храним количество букв в словах.
    j = 0;    // обнуляем счетчик букв в слове.
  }
Теперь тебе надо найти в массиве b[] элементы с одинаковыми значениями:
попробуй сам, а то я немного занят пока.

Допустим b[2] = b[10] = 5 значит второе слово и десятое одной длины.
Код:
j = 1; // счетчик слов в строке
for(i=0; a[i] != '\0'; i++)
{
  if((a[i] == ' ' || a[i] == '\t') && (a[i+1] != ' ' && a[i+1] != '\t'))
   j++; // считаем слова
  
  if(j == 2) t1 = i;
  if(j == 10) t2 = i;
}
rastoyaniye = t2-t1;
Приблизительно так.
Решенные мною и не только задачи на Си можно смотреть здесь:
http://cirishen.blogspot.com/

Последний раз редактировалось hardorsoft; 10.07.2011 в 13:50.
hardorsoft вне форума Ответить с цитированием
Старый 11.07.2011, 01:50   #24
blak333
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 25
По умолчанию

спасибо большое!
blak333 вне форума Ответить с цитированием
Старый 11.07.2011, 04:40   #25
hardorsoft
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 35
По умолчанию

Есть еще книга Культина С\С++ в задачах и примерах. издательство bhv. Там больше чем 250 решенных задач. Если хочешь более менее разобраться найди эту книгу, а лучше купи http://www.ozon.ru/context/detail/id..._kokukhin_blog
Желаю удачи!
Решенные мною и не только задачи на Си можно смотреть здесь:
http://cirishen.blogspot.com/

Последний раз редактировалось hardorsoft; 11.07.2011 в 04:44.
hardorsoft вне форума Ответить с цитированием
Старый 11.07.2011, 12:34   #26
blak333
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 25
По умолчанию

а какие библиотеки нужны?просто для b[k++] говорит что нет
blak333 вне форума Ответить с цитированием
Старый 12.07.2011, 13:56   #27
blak333
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 25
По умолчанию

помоги пож-та 3 день бюсь и никак не получается написать
blak333 вне форума Ответить с цитированием
Старый 12.07.2011, 14:10   #28
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Для чего библиотеки? Для b[k++] ничего не нужно, кроме массива b и целочисленного k) весь код покажите.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.07.2011, 14:27   #29
blak333
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 25
По умолчанию

как сделать чтобы пробелы не считало ?
Код:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include<iostream.h>
 #define lim 100 // пусть слов в строке может быть 100
 int main()
 { char a[1000],k;
 puts("Vvediye stroky:\n");
 gets(a);
#define lim 100 // пусть слов в строке может быть 100
int b[lim],i,j;
j = 0; // счетчик букв в слове
for(i = 0; a[i] != '\0'; i++)
  if(a[i] != ' ' || a[i] != '\t') j++; // пробелы и табуляции не входят в слова иначе мы считаем количество букв в слове.
  if(a[i] == ' ' || a[i] == '\t') // если пробел или табуляция, то слово закончилось. (А если два пробела подряд? Подумай.)
  if(a[i] == ' ' || a[i] == '\t')
  {
          
    b[k++] = j; // в массиве в[] - храним количество букв в словах.
    j = 0;    // обнуляем счетчик букв в слове.
  }
  cout<<j;
  getch();
}
blak333 вне форума Ответить с цитированием
Старый 12.07.2011, 14:57   #30
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы на Си или С++ пишите? cout, например, это С++.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10