1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

Дан безразмерный массив.Вставить количество символов каждой строки вна

Тема в разделе "Общие вопросы по С и С++", создана пользователем ACTAVIA, 15 мар 2009.

  1. ACTAVIA

    ACTAVIA Гость

    Репутация:
    0
    в проге используется двойной указатель на массив строк с пробелом(строки считываю из созданного вручную файла через КС).
    Огромное спасибо всем,кто сможет помочь))))
     
  2. Dimmuborgir

    Dimmuborgir Гость

    Репутация:
    0
    А сами что нибудь пробовали? Вы бы код привели, а мы бы подмогнули.
     
  3. ACTAVIA

    ACTAVIA Гость

    Репутация:
    0
    Конечно пробовала.Ща уже осталось доделать один глюк,но не маленький..он выводит количество символов на экран.теперь надо соединить данную матрицу с этими символами,т.е. вставить количество символов в начало каждой строки.для этого int надо перевести в char.стандартные функции типа itoa как-то не работает у мя ,тк там я чего-то с указателями запуталась,а то,как я сделала,работает но ток если в строке до 10 символов,я к размеру прибавляла код 0)))))а если идут двузначные числа,то пошел сдвиг и они остаются в виде символов.Ща кину код,но попрошу обойтись без улыбок))))))

    #include<fstream.h>
    #include <iostream.h>
    #include<string.h>
    #include<stdlib.h>
    #include <stdio.h>
    #include<conio.h>
    #include<ctype.h>
    #include"G:eclips\class.cpp"
    #define M 300

    //using namespace std;

    void clrscr() {
    system("cls");
    }

    void cl::proverka(int k) {
    cout << "chk1\n";
    clrscr();
    if (k == 1) {
    cout << "‚л ­Ґ Ї®¤Є«озЁ«Ё ⥪бв®ўл© д ©«!" << endl;//комменты о наличии
    //прикрепленного файла,подключен
    exit(1);
    }
    if (k >= 3) {
    cerr << "Њ®¦­® Ї®¤Є«оз вм в®«мЄ® 1 ⥪бв®ўл© д ©«!" << endl;//не подключен
    exit(1);
    }
    }

    char **cl::vvod(char *name) {
    ifstream fin;
    int i;
    cout << "chk2\n";
    char *ch = new char[M + 1];
    mas = new char*[M + 1];
    for (i = 0; i < M + 1; i++) {
    mas = new char[M + 1];
    }



    fin.open(name);
    if (!fin) {
    cerr << "ЌҐ г¤ «®бм ®вЄалвм " << name << endl;
    fin.clear();
    exit(1);
    }

    cout << "’ҐЄг饥 ᮤҐа¦Ё¬®Ґ д ©«  " << name << ":" << endl;
    n = 0;
    while (fin.getline(ch, M)) {
    cout << ch << endl;
    n++;
    }
    fin.clear();
    fin.close();

    cout << endl << n << " бва®зҐЄ ў " << name << endl;

    fin.open(name);
    for (i = 0; i < n; i++) {
    fin.getline(mas, M);
    mas[M] = '\0';
    }
    fin.clear();
    fin.close();

    return mas;
    }

    char **cl::obr(char **mas) {
    int i;
    cout << "chk3\n";
    char *str;
    for (i=0; i < n; i++) {
    //cout << "1";
    int size = strlen(mas);
    str = new char[size+1];
    strcpy(str, mas);
    //cout << "2";
    delete mas;
    //cout << "3";
    mas = new char[size+2];
    //cout<<strlen((char)size)<<"\n";
    char ch = size+48;

    //char *itoa(size, ch*, 10);
    cout<<size<<"\n";
    // char ch1 = '0', ch2 = '1';
    // int i1 = ch1, i2 = ch2;
    // cout<<i1<<" "<<i2<<"\n";
    // ch[0] = (char) size;
    mas[0] = ch;
    // int asd = mas[0];
    // cout<<asd<<"\n";
    for(int j = 0; j<size; j++){
    mas[j+1] = str[j];
    }
    mas[size+1] = '\0';
    // strcat(mas, ch);
    // strcat(mas, str);
    delete (str);
    cout<<mas<<"\n";
    }
    return mas;
    }

    void cl::vivod(char **mas) {
    ifstream fin;
    ofstream fout;
    cout << "\n chk4 \n";
    int a, i, p;
    char fn[50], c;

    cout << endl << "ЋЎа Ў®в ­­л© ¬ ббЁў:" << endl;

    for (i = 0; i < n; i++)
    cout << endl << mas << endl;

    do {
    cout << endl << "‡ ЇЁб вм ¬ ббЁў ў д ©«?(1-¤ ,2-­Ґв)" << endl;
    cin >> a;
    } while ((a != 1) && (a != 2));

    if (a == 1) {
    do {
    cout << "‚ўҐ¤ЁвҐ Ё¬п ­®ў®Ј® д ©« :" << endl;
    cin >> fn;
    fout.open(fn);
    if (!fout) {
    cerr << "ЌҐ г¤ «®бм ®вЄалвм " << fn << endl;
    fout.clear();
    }
    } while (!fout);

    for (i = 0; i < n; i++)
    fout << mas << endl;
    fout.clear();
    fout.close();
    } else
    exit(1);

    fin.open(fn);
    cout << "‘®¤Ґа¦Ё¬®Ґ § ЇЁб ­­­®Ј® д ©«  " << fn << ":" << endl;
    while (fin.get&copy;)
    cout << c;
    fin.clear();
    fin.close();
    }

    int main(int argc, char *argv[]) {
    cl ob;
    ob.proverka(argc);
    char **mas1 = ob.vvod(argv[1]);
    mas1 = ob.obr(mas1);
    ob.vivod(mas1);

    return 0;
    }
     
  4. ACTAVIA

    ACTAVIA Гость

    Репутация:
    0
    там надо через командную строку подключить файл.вывести его на экран,а потом уже отдельной функцией осуществить обработку,т.е. вставку колва символов.у мя в проге эт не в файле.
     
Загрузка...

Поделиться этой страницей