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

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

Войти
Регистрация
Восстановить пароль
 
Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
#1

Проверте, пожалуйста, правильность программного кода - C++

11.07.2012, 19:04. Просмотров 576. Ответов 11
Метки нет (Все метки)

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
#include "stdafx.h"
#include "string.h"
#include "iostream"
using namespace std;
int main()
{
    char text[200];
    char*slova[250];
    char*str=" ";
    char*tekst;
    int i=0;
    cout<<"V-te text: ";
    cin.getline(text,200);
    tekst=strcat(" ",text);
    char*t=" ";
    int min=strlen(tekst);
    int j=0;
    while(i<min)
    {
        slova[j]=strtok(text+i," ");
        i=i+strlen(slova[j])+1;
        j++;
    };
    min=strlen(slova[0]);
    char*slovo;
    for (i<j;i++;){
        if(strlen(slova[i])<min){
            min=strlen(slova[i]);
            slovo=slova[i];
        };
    };
    int k=0;
    for (i<j;i++;){
        if(!strstr(slova[i],slovo)==0){k++;};
    };
    cout<<"Samoe kotorkoe slovo vstechalos"<<k<<"raz";
    cin.get();cin.get();
    return 0;
}
Запускаю этот код в VS 2010, но результаты не вижу, т.к. постоянно появляется такое сообщение:
Необработанное исключение в "0x0f8ed2e9 (msvcr100d.dll)" в "текст.exe": 0xC0000005: Нарушение прав доступа при записи "0x00d578a1".

А также: Первый этап обработки исключения в "0x0f8ed2e9 (msvcr100d.dll)" в "текст.exe": 0xC0000005: Нарушение прав доступа при записи "0x00d578a1".
Необработанное исключение в "0x0f8ed2e9 (msvcr100d.dll)" в "текст.exe": 0xC0000005: Нарушение прав доступа при записи "0x00d578a1". - в окне Вывода. Помогите, пожалуйста!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2012, 19:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверте, пожалуйста, правильность программного кода (C++):

Описание программного кода - C++
Ребята, поспособничайте мне и опишите этот программу(желательно каждую строчку) #include &quot;stdafx.h&quot; #include &quot;math.h&quot; #include...

Оптимизация программного кода - C++
Не могу оптимизировать программный код, пыталась много раз, но никак. Вот текст задачи: &quot;Даны четыре положительных вещественных числа a,...

Упрощение программного кода - C++
Всем здравствуйте а можно ли упростить вот этот код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;stdlib.h&gt; ...

Замер времени выполнения программного кода - C++
Как замерить время выполнения этого программного кода (в секундах) и вывести его на экран? Как провести оптимизацию, чтобы время...

Правильность кода - C++
Решал вот эту функцию, которая прикреплена ниже, дошел до такого кода: #include &quot;stdafx.h&quot; #include &quot;stdafx.h&quot; #include &quot;cmath&quot; ...

Проверьте правильность пожалуйста - C++
Правильно ли я реализовал задание? Задание: В массиве Z(m) найти число чередований знака, то есть число переходов с минуса на плюс или с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор FAQ
11.07.2012, 20:09 #2
DELDEL

Добавлено через 2 минуты
Цитата Сообщение от Aleksashka Посмотреть сообщение
tekst=strcat(" ",text);
- вот эта строка сомнительна
1
Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
11.07.2012, 20:29  [ТС] #3
и что в ней нужно поменять?
0
-=ЮрА=-
Заблокирован
Автор FAQ
11.07.2012, 20:34 #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
#include <string>
#include <iostream>
using namespace std;
 
//Функция возвращает число слов в блоке str разделённых символами delim
//если words != NULL в неё происхоит запись слов (строки в 2-мерном массиве)
int getWords(char * str, char * delim, char **words);
 
int main()
{
    char text[1024] = {0};//Наш вводимый текст
    char ** words   = NULL;//Наш будующий массив со словами
    char delim[] = ".,-!? ";//Возможные разделители между словами
    int nWords   = 0;//Счётчик слов
    int index    = 0;//Будет содержать индекс слова с наименьшей длинной
    int i;//Счётчик
    int nCount   = 0;//Будет содержать в себе число слов с наименьшей длинной
    cout<<"Enter text : ";cin.get(text,1023);
    nWords = getWords(text, delim,words);
    //Выделяем память под массив слов
    words = new char * [nWords];
    //Записываем слова из text в массив words
    nWords = getWords(text, delim, words);
    for(i = 0; i < nWords; i++)
    {
        if(strlen(words[i]) < strlen(words[index]))
            index = i;
    }
    for(i = 0; i < nWords; i++)
    {
        if(strcmp(words[i],words[index]) == 0)
            nCount = nCount + 1;
    }
    cout<<"Word with min lengh : "<<words[index]<<endl;
    cout<<"Input text contain  : "<<nCount<<" words with min len\n";
    system("pause");
    //память не чищу её ОС сама за программой почистит
    return 0;
}
 
int getWords(char * str, char * delim, char **words)
{
    int nWords = 0;
    char * buf = NULL;//Указатель на буффер текста
    char * word= NULL;//Указатель на текущее слово
    if(str != NULL)
    {
        buf = new char[strlen(str) + 1];
        strcpy(buf, str);
        for(word = strtok(buf, delim); word != NULL; word = strtok(NULL, delim))
        {
            if(words != NULL)
            {
                words[nWords] = new char[1 + strlen(word)];
                strcpy(words[nWords], word);
            }
            nWords = nWords + 1;
        }
    }
    return nWords;
}
1
Миниатюры
Проверте, пожалуйста, правильность программного кода  
-=ЮрА=-
Заблокирован
Автор FAQ
11.07.2012, 20:37 #5
PS:
Цитата Сообщение от Aleksashka Посмотреть сообщение
min
- который раз уже вижу - люди min - это имя функции стандартной библиотеки, ну вы же не называте переменные именами cin cout sin cos и т.д. сколько будете на теже грабли наступать?

Aleksashka, всматриваясь в алгоритм нашё ещё много недочётов, если задание звучит именно так
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
поиску числа вхождений в текст слова с мин длинной
лучше используй или измени под себя мой код, твой не годиться
1
Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
11.07.2012, 20:37  [ТС] #6
Задание вот какое:

Дана строка, содержащая текст на русском языке. Определить, сколько раз встречается в нем самое короткое слово.

Я на паскале программу написать смог, а вот на С++ уже проблемы
0
-=ЮрА=-
Заблокирован
Автор FAQ
11.07.2012, 20:39 #7
http://codepad.org/dttqE9fe

Добавлено через 47 секунд
Цитата Сообщение от Aleksashka Посмотреть сообщение
Дана строка, содержащая текст на русском языке. Определить, сколько раз встречается в нем самое короткое слово.
- ну вот используй мой код, только вбей в самом начале main setlocale(LC_ALL,"RUS");
1
Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
11.07.2012, 20:41  [ТС] #8
мне трудно переделать, потому что я С++ вообще не понимаю...(
0
-=ЮрА=-
Заблокирован
Автор FAQ
11.07.2012, 20:44 #9
Цитата Сообщение от Aleksashka Посмотреть сообщение
мне трудно переделать, потому что я С++ вообще не понимаю...(
- друг я готовый код тебе дал, прочти ещё раз
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
и решил написать свой код по поиску числа вхождений в текст слова с мин длинной (как я понял задание стоит именно так)
С русским только грабли локаль как то криво рссифицирует (т.е на латинице 100% отрабатывает а для русского надо костыли писать)
1
Aleksashka
0 / 0 / 0
Регистрация: 14.11.2011
Сообщений: 38
11.07.2012, 20:45  [ТС] #10
я сейчас ввел русский текст английскими буквами, все отлично работает
спасибо за помощь
0
-=ЮрА=-
Заблокирован
Автор FAQ
11.07.2012, 20:46 #11
Короче чтобы поменьше слов и побольше дела - вот код с костылём system("chcp 1251");
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
#include <string>
#include <iostream>
using namespace std;
 
//Функция возвращает число слов в блоке str разделённых символами delim
//если words != NULL в неё происхоит запись слов (строки в 2-мерном массиве)
int getWords(char * str, char * delim, char **words);
 
int main()
{
    system("chcp 1251");
    char text[1024] = {0};//Наш вводимый текст
    char ** words   = NULL;//Наш будующий массив со словами
    char delim[] = ".,-!? ";//Возможные разделители между словами
    int nWords   = 0;//Счётчик слов
    int index    = 0;//Будет содержать индекс слова с наименьшей длинной
    int i;//Счётчик
    int nCount   = 0;//Будет содержать в себе число слов с наименьшей длинной
    cout<<"Enter text : ";cin.get(text,1023);
    nWords = getWords(text, delim,words);
    //Выделяем память под массив слов
    words = new char * [nWords];
    //Записываем слова из text в массив words
    nWords = getWords(text, delim, words);
    for(i = 0; i < nWords; i++)
    {
        if(strlen(words[i]) < strlen(words[index]))
            index = i;
    }
    for(i = 0; i < nWords; i++)
    {
        if(strcmp(words[i],words[index]) == 0)
            nCount = nCount + 1;
    }
    cout<<"Word with min lengh : "<<words[index]<<endl;
    cout<<"Input text contain  : "<<nCount<<" words with min len\n";
    system("pause");
    //память не чищу её ОС сама за программой почистит
    return 0;
}
 
int getWords(char * str, char * delim, char **words)
{
    int nWords = 0;
    char * buf = NULL;//Указатель на буффер текста
    char * word= NULL;//Указатель на текущее слово
    if(str != NULL)
    {
        buf = new char[strlen(str) + 1];
        strcpy(buf, str);
        for(word = strtok(buf, delim); word != NULL; word = strtok(NULL, delim))
        {
            if(words != NULL)
            {
                words[nWords] = new char[1 + strlen(word)];
                strcpy(words[nWords], word);
            }
            nWords = nWords + 1;
        }
    }
    return nWords;
}
0
Миниатюры
Проверте, пожалуйста, правильность программного кода  
-=ЮрА=-
Заблокирован
Автор FAQ
11.07.2012, 20:49 #12
Цитата Сообщение от Aleksashka Посмотреть сообщение
я сейчас ввел русский текст английскими буквами, все отлично работает
спасибо за помощь
не зацени последний код там благодаря system("chcp 1251") можно и с русским работатьВ Release думаю русский всё равно вылезет каракулями, поэтому возможно потребуется настройка шрифта приложения, см сюда Создание файла в UTF-8 кодировке
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2012, 20:49
Привет! Вот еще темы с ответами:

Пожалуйста, проверьте правильность - C++
Вобщем вот просая задача скрин: мой вариант программы #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main...

Создание объектного файла с использованием программного кода - C++
Интересует вопрос, как создать объектный файл, некоторой, программы на C++, из другой программы? То есть, имеется файл temp.cpp и я хочу...

Проверьте правильность кода - C++
Здравствуйте. Задали рассчитать площадь треугольника по заданным параметрам: сторонам треугольника ABC и радиусу описанной окружности....

Проверка на правильность кода - C++
// C++ 6.6 I.12.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.07.2012, 20:49
Ответ Создать тему
Опции темы

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