Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: zzDimazz   (02.01.2008 в 06:46)
Вот имеется файл с текстом :
А5S1R2G8FMMD4E32
программа его преобразует в :
ASSSSSRGGFFFFFFFFMMDEE22
короче смысл в том что символ перед которым нет цифри пишеться как есть а тот перед которым цифра n(0..9) повторяется n раз!
вот я и сделал это теоритически но плин практически трабл какой то
я считал кол-во строк и символов в строке и выделял под каждый символ память а обратиться скажем к символу немогу типа str[ j ][ j ] немогу, думаю проблема именно в этом
PS дайте пожалуйста линки и еще какие нибудь информаионные сведения про строки в Си
есть у кого РУССКИЙ ХЕЛП для Turbo C++ v 3.1
был бы признателен!
код :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

//Функция определения числа от 0-9

int isnum(char **s,int i,int j,int ln)
{
if (
(*(*s+j*ln+i)=='0')|(*(*s+j*ln+i)=='1')|(*(*s+j*ln+i)=='2')|(*(*s+j*ln+i)=='3')|(*(*s+j*ln+i)=='4')
|(*(*s+j*ln+i)=='5')|(*(*s+j*ln+i)=='6')|(*(*s+j*ln+i)=='7')|(*(*s+j*ln+i)=='8')|(*(*s+j*ln+i)=='9')
   ) return 1;
else return 0;

}


////////////////////////////////////////////

void main()
 {
  char *buffer[255];
  char *s,ch;
  int *a,i=0,j=0,m,n=0,cs=0,k,ln;
  FILE *f;
  
clrscr();


f=fopen("C:\\files_l6\\l6.txt","rt");
if (f==NULL)                                                                                                                                     
{
perror("\t ERROR:/n/tFile not exist!");
exit(1);
}
else
printf("\nOpened sucesfully!!!\n\n");


   //scan the file!
   while(!feof(f))
   {
   n++; //count of symbols
   if(fgetc(f)=='\n') i++; //calculating the lines
   }
   printf("Symbols = %d\n",n);
  
   ln=i;
   i=0;
   printf("strok = %d (0 - %d)\n",ln+1,ln);
s = (char*)malloc(ln*sizeof(char)); //making memory (lines - ln )
a = (int*)malloc(ln*sizeof(int)); //massiv of line length
fseek(f,SEEK_SET,0);//putting cursor in the begining of the file
while(!feof(f))
{

cs++; // count of symbols in 1 line
ch=fgetc(f);
if (ch=='\n')
{
s[i] = (char*)malloc(i*(cs)*sizeof(char));
i++;
a[i] = cs;//
printf("| end of line %d symbols = %d+1(\\n) \n",i,a[i]);

cs=0;

}
putch(ch);

}
i=0;
printf("| end of file  on line %d symbols = %d +1(EOF)\n",ln+1,cs-1);

fseek(f,SEEK_SET,0);//putting cursor in the begining of the file


// grabb the liness into strings[i]

while(!feof(f))
{

fgets(&s[i],a[i],f);
printf("%s",&s[i]);
i++;
}



//for(i=0;i<ln;i++)
printf("//%d \n",isnum(&s,0,0,ln));
//printf("!%s!\n",&s[1][1]);
//////////////////////////////////////////////////////
///////////        MAIN PART       ///////////////////
//////////////////////////////////////////////////////

for(j=0;j<ln;j++)
        {
i=0;m=0;
while(i<a[ln])
{
ifisnum(&s,j,i,ln) )
{
for(k=0;k< int(*(s+j*ln+i));k++)
{
*buffer[m]=*(s+j*ln+i+1);
m++;
}
i+=2;
}
else
{
*buffer[m]=*(s+j*ln+i);
m++;
i++;

}
}
//
buffer[m]='\0';
printf("%s\n",&buffer);

}





//////////////////////////////////////////////////////
///////////        ENDS PART       ///////////////////
//////////////////////////////////////////////////////

fclose(f);

for(i=0;i<ln;i++)
free(&s[i]);

free(s);


 getch();
}


Я пользуюсь Turbo C++ v 3.1!
заранее спасибо[


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: