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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2011, 14:00   #1
Volinad
 
Регистрация: 23.06.2011
Сообщений: 3
По умолчанию Исправить цикл программы. Язык С (Си)

Здравствуйте! Прошу помощи, так как голова вообще перестала варить и вот-вот отвалится... Принцип работы программы следующий: вводим текст (двумерный массив), далее пишем слово, которое хотим заменить и слово на которое заменяем. если в какой-то строке число замен превысило некоторое заданное число, то после этой строки выводится заданная подстрока.
В представленном коде нужно кое-что доработать, а именно: сделать так, чтобы после строки, число замен в которой превышает некоторое заданное число, введенное с клавиатуры, выводилась заданная подстрока. Но проблема в том, что цикл проверяет только первую строку... счетчик, вроде, стоит там, где положено. Что-то с циклом
Код:
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
int prs(int n,char str[],char sl[],char razd[]) //функция для поиска совпадений в слове
{
 int dls=strlen(sl); //мерием длину набора и присваеваем значение dls
 int dv_log=0; //счётчик кол-ва совпавших символов
 int i;
 char p;
for(i=1;i<=dls;i++)
if((n==0)||(str[n-1]==razd[p])||(str[n-1]==32))
 if(str[n+i-1]==sl[dv_log])dv_log++; //если символ из набора совпал символу из участка строки, увеличиваем счётчик с.симв. на единицу
 else dv_log=0; //иначе вообще обнуляем его
if(dls==dv_log)return 1;//если счётчик совп. симв. равен кол-ву симв в наборе то функция возвращает значение 1
else return 0;
}
main()
{
int strings,count=0,k=0;
char text[strings][125]; //массив хранящий текст, состоящий из введенного числа строк
char simv[80]; //слово которое надо заменить
char slovo[80]; //слово на которое заменяем
int x,y,i3,max;
char rzd[4];
char stroka[80]; 
char key;
do
{

 printf("Vvedite chislo strok teksta:\n");
 scanf("%d",&strings);
 printf("Vvedite tekst postrochno:\n");
 for(y=0;y<=strings;y++)
 gets(text[y]); //вводим текст
 printf("Vvedite razdeliteli\n");
for(k=1;k<=4;k++)
 {
  rzd[k]=getch();
  printf("%c ",rzd[k]);
 }
 printf("\n");
 printf("Dl'a nahojdeniya zamenaemogo slova, vvedite nabor simvolov, s kotorogo ono nachinaetsa:\n");
 gets(simv);
 printf("Vvedite slovo, HA kotoroe hotite zamenit' naidennoe:\n");
 gets(slovo);
 printf("Vvedite maksimal'noe chislo zamen, po prevyshenii kotorogo budet vyvodit'sa zadannaya podstroka\n");
 scanf("%d",&max);
 printf("Vvedite podstroku, kotoraya budet vyvodit'sa posle prevysheniya chisla zamen\n");
 scanf("%s",&stroka);


 for(y=0;y<=strings;y++)//пробегаем по всем строкам текста
    {
    if(count>=max) 
                        printf("%s\n",stroka);
    for(x=0;x<=strlen(text[y]);x++)//пробегаем по строке
      {    
      if(prs(x,text[y],simv,rzd)==1)//если от позиции х находится набор, то
      {
      for(i3=x;(text[y][i3]!=rzd[1])&&(text[y][i3]!=rzd[2])&&(text[y][i3]!=rzd[3])&&(text[y][i3]!=rzd[4])&&(text[y][i3]!=32)&&(text[y][i3]!='\0');i3++);//смещаем позицию х пока не закончится всё слово и
       x=i3-1;
       count++;
      printf("%s",slovo);//выводит другое заданное слово
      }
       
      else printf("%c",text[y][x]);//иначе просто выводим символ стоящий в массиве text на позиции х
      }
      printf("\n");
    }

    printf("\nChislo zamen v tekste %d",count);
     getch();   
printf("\n\n");
printf("Vypolnit' ese raz? Y(da)/N(net)");
key=getch();
printf("\n\n");
}
while((key=='y')||(key=='Y'));
}
Код не полностью мой, мне помогли с функцией поиска. Понимаю, что вопрос глупый, но я уже просто не могу сообразить, в чем проблема...
Volinad вне форума Ответить с цитированием
Старый 27.06.2011, 20:25   #2
Volinad
 
Регистрация: 23.06.2011
Сообщений: 3
По умолчанию

Ох) отбой, мне уже помогли разобраться=)
Volinad вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Язык программы KWN, lnc Общие вопросы Delphi 1 22.01.2010 22:33
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34