Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Символьные строки. Язык С. Помогите найти ошибку.

31K
01 апреля 2008 года
Michael89
7 / / 29.11.2007
Вот мой код, помогите пожалуста найти ошибку, заранее благодарен.
Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{char str[10][81], word[82];
 int nac=-1,lmax=-1,kon=-1,d=0,i=0,j=0,k=0,n=0;
 clrscr();
 puts("Удаление максимального слова");
 puts("Введите не более 10 строк:");
 while(d<10&&(*gets(str[d])!='\n'))
   d++;
 for(j=0;j<d;j++)
  {for(i=0;i<n;i++)
     if(str[j]!=' '&&str[j]!='\n')
       k++;
     else
       if(lmax<k)
     {
     lmax=k;
     k=0;
     kon=i;
     }
       else
     k=0;
   nac=kon-lmax;
   kon-=1;
   printf("Максимальное слово:\n");
   for(i=nac;i<=kon;i++)
     printf("%c",str[j]);
   printf("\nДлина:%d Начало:%d Конец:%d\n",lmax,nac,kon);
   strncpy(word,str[j]+kon+2,lmax);
   strcpy(str[j]+nac,word);
   printf("Новая строка:\n");
   puts(str[j]);
  }
 getch();
}
37K
01 апреля 2008 года
Kursachok
2 / / 27.03.2008
Как минимум каждое условие надо брать в скобки, вот так:
((str[j]!=' ')&&(str[j]!='\n'))
3
01 апреля 2008 года
Green
4.8K / / 20.01.2000
Цитата: Kursachok
Как минимум каждое условие надо брать в скобки, вот так:
((str[j]!=' ')&&(str[j]!='\n'))


Зачем?

3
01 апреля 2008 года
Green
4.8K / / 20.01.2000
Цитата: Michael89
Вот мой код, помогите пожалуста найти ошибку, заранее благодарен.
Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{char str[10][81], word[82];
 int nac=-1,lmax=-1,kon=-1,d=0,i=0,j=0,k=0,n=0;
 clrscr();
 puts("Удаление максимального слова");
 puts("Введите не более 10 строк:");
 while(d<10&&(*gets(str[d])!='\n'))
   d++;
 for(j=0;j<d;j++)
  {for(i=0;i<n;i++)
     if(str[j]!=' '&&str[j]!='\n')
       k++;
     else
       if(lmax<k)
     {
     lmax=k;
     k=0;
     kon=i;
     }
       else
     k=0;
   nac=kon-lmax;
   kon-=1;
   printf("Максимальное слово:\n");
   for(i=nac;i<=kon;i++)
     printf("%c",str[j]);
   printf("\nДлина:%d Начало:%d Конец:%d\n",lmax,nac,kon);
   strncpy(word,str[j]+kon+2,lmax);
   strcpy(str[j]+nac,word);
   printf("Новая строка:\n");
   puts(str[j]);
  }
 getch();
}


Ты уверен, что это твой код?
А что он должен делать?
А что он делает? В чем ошибка?

31K
01 апреля 2008 года
Michael89
7 / / 29.11.2007
Конечно, уверен!!!
Он должен в массиве символьных строк удалять максимальное слово. Когда я написал код для символьной строки он удаляет, а когда зацикливаю для двумерного массива, уже чото не так. я где то не так ввел.
24K
03 апреля 2008 года
Mixalov_Aleksandr
40 / / 13.01.2008
[LEFT]Попробуйте изменить код вот-так:
Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char str[10][81], word[82];
int nac=-1,lmax=-1,kon=-1,d=0,i=0,j=0,k=0,n=[COLOR=red]81[/COLOR];
clrscr();
puts("Удаление максимального слова");
puts("Введите не более 10 строк:");
while(d<10&&(*gets(str[d])!='\n'))
   d++;
for(j=0;j<d;j++)
  {
     [COLOR=red]for(i=0;i<n;i++)[/COLOR]
[COLOR=red]     {[/COLOR]
        if(str[j]!=' '&&str[j]!='\n')
          k++;
        else
          if(lmax<k)
          {
             lmax=k;
             k=0;
             kon=i;
           }
           else
           {
             k=0;
           }
    nac=kon-lmax;
    kon-=1;
    printf("Максимальное слово:\n");
    for(i=nac;i<=kon;i++)
    {
      printf("%c",str[j]);
    }
    printf("\nДлина:%d Начало:%d Конец:%d\n",lmax,nac,kon);
    strncpy(word,str[j]+kon+2,lmax);
    strcpy(str[j]+nac,word);
    printf("Новая строка:\n");
    puts(str[j]);
    [COLOR=red]}[/COLOR]
  }
getch();
}
[/LEFT]
5.3K
03 апреля 2008 года
Somebody
185 / / 24.12.2006
Цитата: Michael89

 
Код:
while(d<10&&(*gets(str[d])!='\n'))
   d++;


Здесь тоже небольшая ошибка. При вводе пустой строки символа перевода строки там не получится. Можно вроде бы вот так:

 
Код:
while(d<10&&(*gets(str[d]))) d++;

Или даже без лишних скобок
 
Код:
while(d<10&&*gets(str[d])) d++;
31K
05 апреля 2008 года
Michael89
7 / / 29.11.2007
Я уже нашел ошибки, так что в эту тему можно не писать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог