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

  • Автор темы ACTAVIA
  • Дата начала
A

ACTAVIA

#1
в проге используется двойной указатель на массив строк с пробелом(строки считываю из созданного вручную файла через КС).
Огромное спасибо всем,кто сможет помочь))))
 
D

Dimmuborgir

#2
А сами что нибудь пробовали? Вы бы код привели, а мы бы подмогнули.
 
A

ACTAVIA

#3
Конечно пробовала.Ща уже осталось доделать один глюк,но не маленький..он выводит количество символов на экран.теперь надо соединить данную матрицу с этими символами,т.е. вставить количество символов в начало каждой строки.для этого 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::eek:br(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©)
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;
}
 
A

ACTAVIA

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