Форум программистов, компьютерный форум CyberForum.ru

переделать с исполбзованием динамических массивов - C++

Восстановить пароль Регистрация
 
darkside
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 12
26.12.2009, 16:07     переделать с исполбзованием динамических массивов #1
плз может кто знает как это делать
вобщем вот это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// 9.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <cctype>
#include <string.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int  t=0, n, k[50], max;
  char str[256];
  cout<<"vvedite stroku: "<<endl;
cin>>str;
n=strlen(str);
 for (int i=0; i<n; i++)
  {
    if (isalpha(str[i])) 
{
printf ("%c is alphabetic\n",str[i]);
k[i]=t; //массив с числами кол-ва не-букв
t=0; //прерывает подсчет кол-ва не-букв когда встречает букву
}
    else 
{
printf ("%c is not alphabetic\n",str[i]);
t++; // считает кол-во символов-не-букв
k[i]=t;
}
max=k[0];
  for (int i=0; i<=50; i++)
{
if (k[i]>max) max=k[i];//находит макс кол-во символов не-ьукв идущих подряд
}
 
  }
  cout<<"max: "<<max<<endl;
 
    return 0;
}

нужно переделать с использованием динамических массивов..я пытался,но у меня какая-то ошибка, вот:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 9.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <cctype>
#include <string.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int  t=0, n, max;
  char *str = new char[];
  cout<<"vvedite stroku: "<<endl;
cin>>str;
n=strlen(str);
int *arr=new int[n];
//unsigned int arr_size = n;
 for (int i=0; i<n; i++)
  {
    if (isalpha(*(str+i))) 
{
printf ("%c is alphabetic\n",*(str+i));
*(arr+i)=t; //массив с числами кол-ва не-букв
t=0; //прерывает подсчет кол-ва не-букв когда встречает букву
}
    else 
{
printf ("%c is not alphabetic\n",*(str+i));
t++; // считает кол-во символов-не-букв
*(arr+i)=t;
}
max=*(arr+0);
  for (int i=0; i<=50; i++)
{
if (*(arr+i)>max) max=*(arr+i);//находит макс кол-во символов не-букв идущих подряд
}
 
  }
  cout<<"max: "<<max<<endl;
delete [] arr;
delete []str;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2009, 16:07     переделать с исполбзованием динамических массивов
Посмотрите здесь:

C++ Использование динамических массивов
Использование динамических массивов C++
C++ Обработка динамических массивов
Из динамических массивов в обычные C++
C++ Обработка динамических массивов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.12.2009, 16:34     переделать с исполбзованием динамических массивов #2
Цитата Сообщение от darkside Посмотреть сообщение
char *str = new char[];
При выделении памяти необходимо указывать размер этой памяти. Эту строку можно переписать например так:
C++
1
char *str = new char[256];
И еще напишите, как у Вас запланировано использование переменной max. По моему использование ее тоже неправильно
darkside
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 12
26.12.2009, 22:45  [ТС]     переделать с исполбзованием динамических массивов #3
спасибо..
max у меня наибольший элем. в массиве arr. я там считаю количество символов отличных от букв. мне нужно найти самую длинную последовательность таких символов идущих подряд. вот там где без динамических массивов вроде нормально все работает..плз а в чем ошибка с max??
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
27.12.2009, 08:38     переделать с исполбзованием динамических массивов #4
Убрал массив arr[] - для подсчета подряд идущих символов не букв он не нужен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "stdafx.h"
#include <iostream>
#include <cctype>
#include <string.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        int  t=0, n, max=0;
  char *str = new char[256];
  cout<<"vvedite stroku: "<<endl;
cin>>str;
n=strlen(str);
//unsigned int arr_size = n;
 for (int i=0; i<n; i++)
  {
    if (isalpha(*(str+i))) 
{
printf ("%c is alphabetic\n",*(str+i));
 t=0;//ïðåðûâГ*ГҐГІ ïîäñ÷åò êîë-ГўГ* Г*ГҐ-ГЎГіГЄГў êîãäГ* âñòðå÷Г*ГҐГІ ГЎГіГЄГўГі
}
    else 
{
        
printf ("%c is not alphabetic\n",*(str+i));
t++; // Г±Г·ГЁГІГ*ГҐГІ êîë-ГўГ® ñèìâîëîâ-Г*ГҐ-ГЎГіГЄГў
 if(max<t)
     max=t;
} 
}
  cout<<"max: "<<max<<endl;
delete []str;
        return 0;
}
Yandex
Объявления
27.12.2009, 08:38     переделать с исполбзованием динамических массивов
Ответ Создать тему
Опции темы

Текущее время: 09:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru