#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();
}
Символьные строки. Язык С. Помогите найти ошибку.
Вот мой код, помогите пожалуста найти ошибку, заранее благодарен.
((str[j]!=' ')&&(str[j]!='\n'))
Цитата: Kursachok
Как минимум каждое условие надо брать в скобки, вот так:
((str[j]!=' ')&&(str[j]!='\n'))
((str[j]!=' ')&&(str[j]!='\n'))
Зачем?
Цитата: 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();
}
#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();
}
Ты уверен, что это твой код?
А что он должен делать?
А что он делает? В чем ошибка?
Он должен в массиве символьных строк удалять максимальное слово. Когда я написал код для символьной строки он удаляет, а когда зацикливаю для двумерного массива, уже чото не так. я где то не так ввел.
Код:
#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();
}
#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();
}
Цитата: Michael89
Код:
while(d<10&&(*gets(str[d])!='\n'))
d++;
d++;
Здесь тоже небольшая ошибка. При вводе пустой строки символа перевода строки там не получится. Можно вроде бы вот так:
Код:
while(d<10&&(*gets(str[d]))) d++;
Или даже без лишних скобок
Код:
while(d<10&&*gets(str[d])) d++;
Я уже нашел ошибки, так что в эту тему можно не писать.