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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Генри
12 / 12 / 2
Регистрация: 19.08.2012
Сообщений: 51
#1

Работа с памятью - C++

18.02.2013, 10:56. Просмотров 235. Ответов 0
Метки нет (Все метки)

Задали программу написать которая удаляет слова с одинаковым количеством гласных и согласных букв. Слова вводятся через пробел, около 4 штук, а потом выводятся оставшиеся. Проблема в том, что иногда происходит сбой в работе с памятью. Иногда программа работает нормально. Можете подсказать, где ошибка?
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <Windows.h>
using namespace std;
 
int Probel(char*s, int n, int i)
{
    while(i<n && s[i]==' ') 
        i++;
    return i;
}
 
int DEL( char **ms, int m, int k)
{
    char *p=ms[k];
    for (int i=k; i<m; i++)
        ms[i]=ms[i+1];
    delete []p;
    return (m-1);
}
 
 
 
 void main ()
 {
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     cout<<"Дан массив из n строк. Удалим все строки, имеющие одинаковое количество\nгласных и согласных букв.\n";
     char *s, **ms; int i, k=0,j,n=25,g=0,h=0,TAB[256];
     s=new char[80];
     ms=new char* [20];
     puts("Введите строку:"); 
     gets(s); cout<<endl;
     while (s[i]!='\0')
     {
         i=Probel(s,n,i); 
         ms[k]=new char [30];
         for (j=0; s[i]!='\0' && s[i]!=' '; j++, i++)
            ms[k][j]=s[i];
         ms[k][j]='\0';
         k++;
     }
     cout<<"\nСтроки для исследования:\n";
    for (i=0;i<k;i++)
        puts(ms[i]);
    cout<<endl;
    for(h=0,g=0,j=0;j<k;) 
   {
       for(i=0;i<256;i++) 
           TAB[i]=0;
       for(i=0; ms[j][i]!='\0';i++) 
       {
           TAB[ms[j][i]]++; h++;
       }
    if(TAB['a'])  g+=TAB['a'];
    if(TAB['e'])  g+=TAB['e'];
    if(TAB['y'])  g+=TAB['y'];
    if(TAB['o'])  g+=TAB['o']; 
    if(TAB['i'])  g+=TAB['i'];
    if(TAB['u'])  g+=TAB['u'];
    if(g==h-g) 
        k=DEL(ms,k,j);
    else j++;h=0,g=0;
   }
    cout<<"Строки, с разным количеством гласных и согласный:\n";
    for(i=0;i<k;i++) puts(ms[i]);
    for(i=0;i<k;i++) delete[]ms[i];
    delete[]ms;
    delete s;
    _getch();
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 10:56     Работа с памятью
Посмотрите здесь:

Работа с памятью - C++
Нужно ривести пример использования операторов new и delete для выделения памяти под двумерный массив и освобождения памяти двумерного...

Работа с памятью - C++
Всем привет! Не могу разобраться, как написать код программы, которая моделирует механизм виртуальной памяти. Кто сможет реализовать хотя...

работа с памятью - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Работа с памятью - C++
Форумчане, доброго времени суток. Заранее извиняюсь за нубские вопросы, но должен разобраться в теме. Суть такова: написал class...

Работа с памятью в С++ - C++
Здравствуйте. Если я правильно понимаю, то при запуске программы, программе выделяется определенное кол-во памями, которое оно может...

Работа с памятью - C++
Есть приложение,в нем есть label'ы. Есть ли какая-нибудь возможность средствами C++ допустим, перевести эти контролы? Если есть - дайте...

работа с памятью - C++
Доброго времени суток! У меня возникло затруднение - нужно реализовать на языке Си программу,демонстрирующую распределение памяти таким...

Работа с памятью - C++
Всем доброго времени суток. Почитав данный форум и проч. пришёл к выводу, что мой проект на C# нереален в виду бестолковой работы с...

Работа с памятью - C++
Добрый день всем. Я только начал изучение C#(раньше работал c: C++ маленько -т.е. общее представление о нем имею) и у меня вопрос, можно...

Работа с памятью - C++
Может кто хорошо понимает механизм выделения и освобождения памяти объяснить его, а то я в конец запутался с ним, вот помогал одному...

Работа с динамической памятью - C++
Привет всем. Я недавно начал изучать C++ и наткнулся на ошибку:&quot;двумерный динам.exe вызвал срабатывание точки останова&quot; при очистке...

Работа с дин.памятью - C++
Помогите, пожалуйста, решить задачу, на Borland C++ : Имеется массив указателей на числа. разместить в памяти n чисел, на которые...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru