3 / 3 / 0
Регистрация: 15.03.2009
Сообщений: 57
1

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

15.03.2009, 02:24. Показов 2121. Ответов 6
Метки нет (Все метки)

Массив считывается из файла,а в проге указывается как указатель на указатель **.Запуск программы+файла происходит из командной строки.Если кто знает,как определить длину этой строки(она должна быть с пробелами) или правильно оформить функцию strlen.Заранее большое спасибо всем,кто чем-нибудь сможет помочь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2009, 02:24
Ответы с готовыми решениями:

Перед каждой строкой текстового файла вставить номер строки и количество символов в этой строке
Перед каждой строкой текстового файла вставить номер строки и количество символов в этой строке

В конец каждой строки текстового файла дописать количество символов этой строки
Помогите, нужно : "В конец каждой строки текстового файла дописать количество символов этой...

Дан массив размерностью n*m. Поделить все элементы каждой строки на наибольший по модулю элемент этой строки
массив двумерный

Дан текст (массив строк). Составить программу, которая в начале каждой строки текста припишет длину этой строки
(длина - это количество символов в строке).

6
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
15.03.2009, 13:18 2
C
1
2
3
4
5
6
7
int strlen(char *s)
{
    char *p = s;
    while(*p!='\0')
       p++;
    return p - s;
}
Или так (без указателей):
C
1
2
3
4
5
6
7
int strlen(char s[])
{
    int i = 0;
    while(s[i]!='\0')
       i++;
    return i;
}
0
3 / 3 / 0
Регистрация: 15.03.2009
Сообщений: 57
15.03.2009, 13:23  [ТС] 3
мне надо с двойным указателем(

Добавлено через 1 минуту 3 секунды
Код
char **cl::obr(char **mas)
 {
  int i,j;
  z[0]=0;
  for(i=0;i<n;i++)
  for(j=0;j<n;j++)
   z[i]=strlen(char  *mas[i][j]);
что-нить в этом роде,ток чтоб это работало)
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
15.03.2009, 14:06 4
Цитата Сообщение от ACTAVIA Посмотреть сообщение
мне надо с двойным указателем(
Вы так strlen'у будете передавать весь двумерный массив, а ему достаточно одной строки. Ничто не мешает в main пройтись циклом по строкам и для каждой отдельно подсчитать ее длину.
C
1
2
for(i=0; i<N; i++)
   z[i] = strlen(mas[i]);
N - число строк в массиве mas.
0
3 / 3 / 0
Регистрация: 15.03.2009
Сообщений: 57
15.03.2009, 16:11  [ТС] 5
при компиляции ошибок нет,ток она че-то нифига не выдает(((я вообще с програм на вы(
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
15.03.2009, 16:26 6
А что должна выдавать-то? Выкладывайте код программы.
0
3 / 3 / 0
Регистрация: 15.03.2009
Сообщений: 57
15.03.2009, 16:36  [ТС] 7
Главная
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
#include"G:\newevg\class.cpp"
#define M 300

void cl:roverka(int k)
{ clrscr();
if(k==1)
{cerr<<"Вы не подключили текстовый файл!"<<endl;
exit(1);}
if(k>=3)
{
cerr<<"Можно подключать только 1 текстовый файл!"<<endl;
exit(1);
}
}



char **cl::vvod(char *name)
{
ifstream fin;

char *ch;
int i;

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[i],M);

fin.clear();
fin.close();

return mas;
}



char **cl::obr(char **mas,int *z)
{
int i;
for(i=0;i<n;i++)
{
z[i]=strlen(mas[i]);
cout<<endl<<z[i]<<endl;
}
return mas;
};

void cl::vivod(char **mas,int *z)
{
ifstream fin;
ofstream fout;
int a,i;
char fn[50],c;

cout<<endl<<"Обработанный массив:"<<endl;
for(i=0;i<n;i++)
{ // cout<<mas[i]<<endl;
cout<<endl<<"koli4estvo simvolov v stroke"<<' '<<z[i]<<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[i]<<endl;
fout.clear();
fout.close();
}
else
exit(1);

fin.open(fn);
cout<<"Содержимое записаннного файла "<<fn<<":"<<endl;
while (fin.get(c))
cout<<c;
fin.clear();
fin.close();
}


int main(int argc,char *argv[])
{
char **mas1;
int *z1;
cl ob;
ob.proverka(argc);
cout<<'10';
mas1=ob.vvod(argv[1]);
cout<<'20';


mas1=ob.obr(mas1,z1);
cout<<'30';
ob.vivod(mas1,z1);

return 0;
}

сразу прошу над кодом не смеяться,,я че уже ток с ним не делала и си я недавно начала))
класс
class cl{
long n;
char **mas;
//int *z;
public:
void proverka(int k);
char **vvod(char *name);
char **obr(char **mas);
void vivod(char **mas);
};
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2009, 16:36
Помогаю со студенческими работами здесь

В начале каждой строки текстового файла записать количество символов в этой же строке
Написать программу которая копирует или преобразовывает текст входного текстового файла(файлов)так...

Дан файл. Подсчитать кол-во слов в каждой строке и если оно будет четным, то в середину этой строки вставить заданное слово. Составить ГСА.
Дан файл. Подсчитать кол-во слов в каждой строке и если оно будет четным, то в середину этой строки...

Дан текстовый файл заданный пользователем, определить и напечатать количество символов для каждой строки
Дан текстовый файл определить и напечатать количество символов заданных пользователем для каждой...

как сделать из строки массив из символов этой строки
как? заранее спасибо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru