1. rubik-nerubik

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

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    СИ++ (подправь код - получи аську)

    Программа считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова
    "ноль", "один",...,"девять", начиная каждое предложение с новой строки.

    Code:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <clocale>
    using namespace std;
    
    int main(){
        setlocale(LC_CTYPE, "Russian"); // для русских букв
        ifstream file("text.txt"); // открываем файл text.txt
        string str;
        string num[10] = {"ноль","один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"};
        getline( file, str, static_cast<char>(EOF)); // считываем текст из файла
    
        cout << str;
        for( char ch = '0'; ch <= '9'; ch++ ){
            string::size_type index = 0;
            while(( index = str.find( ch, index )) != string::npos ){
                str.replace( index, 1, num[ch-'0'] );
            }
        }
        cout << "\n\n\nResultat:\n\n" << str;
    
        cin.sync();
        cout << "\n\n\n Enter to exit\n\n";
        getchar(); // пауза
        return 0;
    }
    
    нашел в нете, кто поможет пордерактировать так, чтоб работало в Borland C 3.1., т.е. ничего лишнего, а это не работает. вот.
     
    #1 rubik-nerubik, 19 May 2009
    Last edited: 19 May 2009
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    ну во первых это Си++, а не Си
    во вторых вот нашел учебник для 9 класса ) (http://kpolyakov.narod.ru/school/c.htm)

    используй двумерный массив
    char num[10][10] = {"ноль","один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"};

    а для замены сделай отделную переменную буффер (char buff[1024]) и туда способом strcat (ст 32 в учбенике) помещай результат замены хех...

    ну а анализировать тебе надо будет каждый байт файлика...
    читай ту книжку толково ;)
     
    _________________________
  3. rubik-nerubik

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

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    с меня семизначная аська, за выполненный полностью результат, тут тупо поменять, для знающего человека пустяк =(


    +у меня одномерный массив а не двух
     
  4. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    в личку тебе отправил...
     
    _________________________
  5. rubik-nerubik

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

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    ты её проверял с файлом????? а то пишет тупо error
     
  6. rubik-nerubik

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

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    кстати, тут пипец у те всякие fopen ))))))можно по проще код? 0_0 и проверь его сразу там, в Borland c 3.1, семизнак будет!!! не ссы, мне главное что пахало всё.

    вот три фотки примеров http://www.rapidshare.ru/1044772 мнеб так, т.е. по простому без заморочек...
     
    #6 rubik-nerubik, 19 May 2009
    Last edited: 19 May 2009
  7. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    канешн с файлом... просто его надо положить в диру с программой )

    в файле записано 3513624 и все...
     
    _________________________
  8. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    чувак в тех примерах не Си а Си++ - это разные языки
    бороды Си 3,1 у мя в памине нет проверял на бороде Си++ 6,0 проект создавал как чистый Си консольный все пашет... файл нужно ложить в папку с прогой или указывать полный путь до него
     
    _________________________
  9. rubik-nerubik

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

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    http://upload.com.ua/get/900318320/ тут качни. я наю что файл должен лежать рядом с исходником ^_^. )))

    проверь на "Privet clovarb 1 2 3. Privet 2 3 4 9. Aga aga 1" этом и не забывай, что прога должна ещё все предложения с новой строки
     
    #9 rubik-nerubik, 19 May 2009
    Last edited: 19 May 2009
  10. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    ушло в личку... а дал ссылку ты мне на бороду Си++ 3.1 )
    я изначально думал тебе просто циферки преобразовать надо а те заменить надо ммм ) хех
     
    _________________________
  11. rubik-nerubik

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

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    ну да. помогите, номерок АСИКЬЮ ещё в силе.
     
  12. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    а моя прога че не устраивает? яж те новую версию вроде отправлял
     
    _________________________
  13. rubik-nerubik

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

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2

    неееее мне так, чтоб работало и небыло заморочек , и чтоб работало, повторюсь)) проверь плиз именно в той 3.1. ОООЧ надо.
     
  14. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    поставь патч прямые руки 1.0.2
     
    _________________________
    1 person likes this.
  15. fker

    fker Member

    Joined:
    26 Nov 2008
    Messages:
    135
    Likes Received:
    64
    Reputations:
    -1
    Спешиал фор ю!) BC 3.1
    написано кривовато конешно, но работает...
    входные данные
    [​IMG]
    результат
    [​IMG]
    сорец:
    PHP:
    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    void print_wrd(char *); //прототип ф-ии, преобраз цифру в слова
    void main()
    {
    clrscr();
    FILE *fPtr;
    char *str[20],*wrd[30];
    int i=0,j=0;
    //открываем файл на чтение
    if((fPtr=fopen("inpt.txt""rt"))==NULL){
       
    printf("File could not be open =(\n");
       
    getch();
       return;
       }
    else{
       
    //в цикле считываем строки из файла в массив str. кста макс строка может быть 50 байт
       
    fgets(str[i],50,fPtr);
       while(!
    feof(fPtr)){
           
    i++;
           
    fgets(str[i],50,fPtr);
           }
       
    fclose(fPtr);
       }
    //разбиваем каждую строку на слова при помощи strtok   
    for(int k=0k<=ik++){
       
    wrd[j]=strtok(str[k]," ");
       while(
    wrd[j]!=NULL){
          
    //передаем слово(цифру) ф-ии print_wrd которая уже и преобразует 123 в АдЫн Два Три  
          
    print_wrd(wrd[j]);
          
    j++;
          
    wrd[j]=strtok(NULL," ");
          }
       }
    getch();
    }
    void print_wrd(char *wrd)
    {
    char *cfr[]={"HOJIb","oDbIH","DBa","Tpu","4eTbIpu","n9Tb""6ecTb","CeMb","BoceMb","DeB9Tb"};
    int n,i,c;
    n=strlen(wrd);
    //в цикле печатаем цифры из слова wrd
    for(i=0i<ni++){
        
    c=wrd[i]-48;//типа превращяем символ в цофру
        //проверка является-ли с цифрой, если является то выбираем ее из cfr
        
    if(c>=0&&c<=9){
           
    printf("%s ",cfr[c]);
           }
        }
    printf("\n");
    }
    Все вместе в архиве
     
    1 person likes this.
  16. rubik-nerubik

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

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    fker он из примера:
    "Privet 1.
    Privet 2. 3"

    ВЫвел только:
    "
    ODblN
    DVA
    Tpu"

    А надо
    "Privet Odin.
    Privet Dva.
    Tpu"
    Т.е. 1)каждое предложение с новой строки 2)чтобы всё выводилось на экран , не внимательно читал, а так, пашет клёва..... доработай и я тебе тогда отдам аську, заслужил
     
  17. fker

    fker Member

    Joined:
    26 Nov 2008
    Messages:
    135
    Likes Received:
    64
    Reputations:
    -1
    Нао было сразу выкладывать примеры входных данных и результат обработки =\
    Тогда получаццо еще проще, но время нет делать\\ если тока завтро
     
  18. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    2 fker ихмо я круче

    Code:
    #include "stdlib.h"
    #include "stdio.h"
    #include "malloc.h"
    
    int main(int argc, char * argv[]) {
    FILE * f;
    size_t buflen = 0,
    result = 0,
    si = 0;
    unsigned char * buffer,
    ch;
    
    char num[10][10] = {
    "nol",
    "odin",
    "dva",
    "tri",
    "chet",
    "pat",
    "shest",
    "sem",
    "vos",
    "dev"
    };
    
    f = fopen("test.txt", "rb");
    if (f == NULL) {
    printf("Error open!");
    return 1;
    }
    
    fseek(f, 0, SEEK_END);
    buflen = ftell(f);
    rewind(f);
    
    buffer = (unsigned char * ) malloc(buflen);
    if (buffer == NULL) {
    printf("Memory error\n");
    return 2;
    }
    result = fread(buffer, 1, buflen, f);
    if (result != buflen) {
    printf("Reading error\n");
    return 3;
    }
    
    while (si < buflen) {
    if (buffer[si] == '.') {
    putc(buffer[si], stdout);
    putc(0x0A, stdout);
    }
    else {
    ch = buffer[si] - 0x30;
    
    if (ch >= 0 && ch <= 9) {
    printf("%s", num[ch]);
    }
    else {
    putc(buffer[si], stdout);
    }
    }
    si++;
    }
    
    free(buffer);
    
    fclose(f);
    
    getchar();
    
    return 0;
    }
     
    _________________________
    #18 Gar|k, 21 May 2009
    Last edited: 21 May 2009
    1 person likes this.
  19. rubik-nerubik

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

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    жесть... чем он лучше?? у него код проще, можешь его код доделать? у тебя слишком замороченный))) "1)каждое предложение с новой строки 2)чтобы всё выводилось на экран" и всё.
     
  20. fker

    fker Member

    Joined:
    26 Nov 2008
    Messages:
    135
    Likes Received:
    64
    Reputations:
    -1
    пиу

    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();
    }
    блё, как ху*ва жить без инета=((