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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 20:22   #1
Yakoff
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 21
По умолчанию Исправить ошибку. Язык Си.

Вот текст программы. Она убирает из максимум 50 слов длиной максимум 20 символов все символы кроме строчных латинских букв. Слова разделены пробелом, за последним словом точка.
Программа отлажена и работает. Но есть один косяк. Она не читает самый первый символ. То есть, например:

input
vbdfsyuvb345678.

output
bdfsyuvb345678.

Не могу найти косяк в программе. Подскажите, пожалуйста

Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>

void main()
{
int a,i,b,j,n,z,v;
char A[50][21],X[50][21];
for(i=0;i<20;i++)
{
for(j=0;j<50;j++)
{
A[j][i]=NULL;
X[j][i]=NULL;
}
}
printf("Enter strings:\n");
for(n=0;n<50;n++)
{
if(getchar()=='.')
break;
scanf("%[^ .]",&A[n]);
}
for(a=0;a<n;a++)
{
char word[20];
	for(int q=0;q<20;q++)
	word[q]='\0';
	char newword[20]={NULL};
	for(int p=0;p<20;p++)
	word[p]=A[a][p];
	v=0;
for(b=0;b<strlen(word);b++)
	{
	if((word[b]>='a')&&(word[b]<='z'))
		{
		newword[v]=word[b];
		v++;
		}
	}
strcpy(X[a],newword);
}
printf("Result strings:\n");
for(z=0;z<n-1;z++)
	{
	printf("%s ",&X[z]);
	}
printf("%s.",&X[z]);
getch();
}

Последний раз редактировалось Yakoff; 25.12.2012 в 20:34.
Yakoff вне форума Ответить с цитированием
Старый 25.12.2012, 21:26   #2
Yakoff
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 21
По умолчанию

В принципе, стартовый кусок с обнулением массивов можно даже и убрать. Не влияет же...
Yakoff вне форума Ответить с цитированием
Старый 25.12.2012, 21:31   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
	int a,i,b,j,n,z,v;
	char s[50*21]="vbdfsyuvb345678",s2[50*21]={0};

printf("Enter strings:\n");
//scanf("%s",&s);
for(int i=0,j=0;s[i];i++) if((s[i]>='a')&&(s[i]<='z')) s2[j++]=s[i];
printf("%s",s2);
getchar();
не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправить ошибку С++ 803 Помощь студентам 3 04.06.2012 18:46
Исправить ошибку imworld Помощь студентам 1 20.02.2012 19:54
С# Исправить ошибку PROkaZZZniK Помощь студентам 3 20.11.2011 22:49
Исправить цикл программы. Язык С (Си) Volinad Помощь студентам 1 27.06.2011 20:25