1. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    он юзает команды strlen, strtok они нафиг не нужны ) зачем разбитвать строку на слова?
    встретил цифру заменил ) встретил точку поставил перенос строки... все

    fseek(f, 0, SEEK_END);
    buflen = ftell(f);
    rewind(f);

    определяем скока байт файл занимает

    buffer = (unsigned char * ) malloc(buflen); выделяем памяти под весь файл и туда считываем файл все... терь файл в памяти

    побайтово движемся по памяти - файлу. если точка ставим перенос строки
    если не точка

    преобразовываем в цифру если от нуля до 9 то вместо этого пишем слово из массива num а если не цифра просто печатаем этот символ ) усе...

    но я думаю можно круче сделать если напрямую указатель прибавлять ) тогда si не понадобится + можно еще несколько переменных убрать а то че они лишние хех
     
    _________________________
  2. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    вооо пашет, вот тока бы чтоб каждое предложение с новой строки, это видимо, если находит точку, то перескакивает на новую строку походу...
     
  3. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Некрасиво конечно, но проще уже точно некуда
    Code:
    #include <iostream>
    #include <fstream>
    #include <ctype.h>
    #include <string>
    using namespace std;
    
    int main () {
        string line;
        string filename;
        cout << "Vvedite imja/putj fajla\n";
        cin >> filename;
        ifstream file(filename.c_str());
        if (file.is_open()) {
            while (!file.eof()) {
                getline(file, line);
                for (int i = 0; i < line.length(); i++ ) {
                    if (isdigit(line.at(i))) { // vidim cifru, vivodim ee
                        switch (atoi(line.substr(i, 1).c_str())) {
                            case 0:
                                cout << "NOLJ";
                                break;
                            case 1:
                                cout << "ADZIN";
                                break;
                            case 2:
                                cout << "DVA";
                                break;
                            case 3:
                                cout << "TRI";
                                break;
                            case 4:
                                cout << "CETIRE";
                                break;
                            case 5:
                                cout << "PJATJ";
                                break;
                            case 6:
                                cout << "SSESTJ";
                                break;
                            case 7:
                                cout << "SEMJ";
                                break;
                            case 8:
                                cout << "VOSEMJ";
                                break;
                            case 9:
                                cout << "DEVATJ";
                                break;
                        }
                    }
                    else if (line.at(i) == 46) { // vidim tochku t.e. konec stroki vivodim ee i novuju stroku
                        cout << line.at(i) << endl;
                    }
                    else { // vivodim vso ostalnoje
                        cout << line.at(i);
                    }
                }
            }
            file.close();
        }
        else {
            cout << "Oshibka pri otkritii fajla " << filename << endl;
        }
        return 0;
    }
     
  4. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    НАДО ДЛЯ Borland C++ 3.1 а не 6.0 ...=\ писал же ..((
     
  5. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    И нравится вам юзать компилер, которому 20 лет и который не поддерживает современный C++.
    Купи нетбук и поставь нормальную IDE, либо на флешку Code::Blocks запиши, он без установки пашет.
     
  6. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    2 nerezus
    у чувака криворукие у него даж норманый рабочий исходник на Си не пашет

    потом тему завел Си... а на самом деле ему нужна прога на Си++
    в общем ппц
     
    _________________________
  7. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    PHP:
     #include<conio.h> 
    #include<stdio.h> 
    #include<string.h> 
    #include<stdlib.h> 
    #define fname "inpt.txt" 
    void print_wrd(char *); 
    void main() 

    clrscr(); 
    char *cfr[]={"HOJIb","oDbIH","DBa","Tpu","4eTbIpu","n9Tb""6ecTb","CeMb","BoceMb","DeB9Tb"}; 
    FILE *fPtr
    char *str[20],*wrd[30]; 
    int i=0,j=0,n,c
    if((
    fPtr=fopen(fname"rt"))==NULL){ 
       
    printf("File could not be open =(\n"); 
       
    getch(); 
       return; 
       } 
    else{ 
       
    fgets(str[i],50,fPtr); 
       
    //printf("%s",str[i]); 
       
    while(!feof(fPtr)){ 
           
    i++; 
           
    fgets(str[i],50,fPtr); 
           
    //printf("%s",str[i]); 
           

       
    fclose(fPtr); 
       } 
    for(
    int k=0k<=ik++){ 
       
    n=strlen(str[k]); 
       for(
    j=0j<=nj++){ 
          
    c=str[k][j]; 
          if(
    c>='0'&&c<='9'
             
    printf(" %s",cfr[c-48]); 
          else 
             
    printf("%c",c); 
          } 
       
    printf("\n"); 
       } 
    getch(); 
    кто может его подправить чтобы КАЖДОЕ предложение,9т.е. если найдётся точка, выводилось с новой строки

    счас выводит из получаемого
    TExt 1 2. TExt 2 3. 3 3
    получает
    Text odin dva. TExt dva tri. tri tri

    а надо именно

    Text odin dva.
    TExt dva tri.
    tri tri
    вот. автор вышеперечисленного кода получит семизнак, как тока установлю на компе винду =\ а тот кто исправит тоже. че я жадина чтоли
     
  8. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    По моему самый простой вариант перехода на новую строку ето в цыкле вставить проверку :
    Code:
    if ( str[k] == '.' )cout<<endl;
    
    При такой проверке как только встретится точка курсор прыгнет на новую строку !

    Да и вообще код какойто масивный для даного задания .... можно и попроще )

    Я в разделе "Студентам с лабами" сделал ето заданице ))) Для проверку на точку в тот код просто вставь :
    Code:
    case '.' :
                  cout<<endl;
                  break;
    
     
  9. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    437
    Reputations:
    90
    про переход на новую строку. пихни в #27
    Code:
    ...................
    c=str[k][j];  c1=str[k][j-1];
    
    
    	 switch(c1) { case '.': printf("\n"); break;   }
    
    
          if(c>='0'&&c<='9') {
    ..............
    
    
    ну и c1 задай.. вроде похоже на правду.
     
  10. fker

    fker Member

    Joined:
    26 Nov 2008
    Messages:
    135
    Likes Received:
    64
    Reputations:
    -1
    интересно ТС сдержал свое слово... Кому отправилась семерка?
     
  11. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    не мне ) тк ТС пощитал что "главное чтобы работало" у меня реализовано как-то сложно для его понимания ггг
     
    _________________________