Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
5 / 5 / 0
Регистрация: 22.05.2012
Сообщений: 122

Выводит какую то ересь

16.02.2014, 01:01. Показов 1310. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем начал выполнять свою лабораторную, задание которой было таковым:
"В заданном предложении указать слово, в котором доля гласных(A, E, I, O)(a, e, i, o) максимальна. Предложение может иметь больше одной строки и заканчивается точкой"

Прошу не осуждать что программа без функций. Пока делаю так потом переделаю...
Пока что я пробую вывести на экран таблицу(матрицу) в которой будет записано кол-во этих гласных в каждом слове и их сумма... Н у и в общем выводит у меня вместе таблицы вот это:



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
#include "stdafx.h"
#include "fstream"
#include "iostream"
#include "iomanip"
 
using namespace std;
 
int main()
{
    char ch;
    int n=0,m=5;
    char np;
    int al=0,il=0,el=0,ol=0;
    
    ifstream fin("include_inform.txt");
    if (!fin)
        cout<<"\n\tThis file is not found\n";
    
    while(!fin.eof())
    {
        fin.get(np);
        if (np=='\n')
            n++;
    }
    
    int **f_mas=new int* [n];
 
    for (int count=0;count<n;count++)
        f_mas[count]=new int[m];
 
    while (fin.get(ch)) 
    {
        if (ch==' ')
        {
            f_mas[n][4]=0;
            for(int i=0; i<4;i++)
                f_mas[n][4]=+f_mas[n][i];
            n++;
            al=0;il=0;el=0;ol=0;
        }
        else
        {
            if (ch=='A' || ch=='a')
            {
                f_mas[n][0]=al++;
            }
            if (ch=='E' || ch=='e')
            {
                f_mas[n][1]=el++;
            }   
            if (ch=='I' || ch=='i')
            {
                f_mas[n][2]=il++;
            }
            if (ch=='O' || ch=='o')
            {
                f_mas[n][3]=ol++;
            }
 
        }
 
    }
    cout<<endl;
    for(int i=0; i<n;i++)
    {
        for(int j=0;j<m;j++)
            cout<<setw(7)<<f_mas[i][j];
        cout<<endl;
    }
    system("pause");
    return 0;
}

Содержимое файла include_inform.txt:
Katherine Mansfield, an outstanding English short-story writer of the 20th century,
was born in New Zealand in 1888 and died in 1923.
Помогите решить проблему. Ну и если есть варианты решения этой задачи получше, рассказивате, буду рад вас послушать Я пока только учу работу со строками...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2014, 01:01
Ответы с готовыми решениями:

Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь(
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде...

При выводе получается какая-то ересь в матрице
Дано задание: написать программу,транспонирующую матрицу, используя указатели и единицы трансляции, программа написана, но итогом является...

Условные метки. Вывод числа: от 0 до 99 выводит гуд. Свыше 100 - непонятная ересь
model small ; сравнение 2-х чисел stack 512 ;---------------------------- dataseg a db 11 msgone db &quot;210 $&quot; msg1 db 'a &lt;=...

8
5 / 5 / 0
Регистрация: 22.05.2012
Сообщений: 122
16.02.2014, 01:23  [ТС]
Переделал код.
Так как немного начудил с количеством строк массива:
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
#include "stdafx.h"
#include "fstream"
#include "iostream"
#include "iomanip"
 
using namespace std;
 
int main()
{
    char ch;
    int n=1,m=5;
    char np;
    int al=0,il=0,el=0,ol=0;
    
    ifstream fin("include_inform.txt");
    if (!fin)
        cout<<"\n\tThis file is not found\n";
    
    while(!fin.eof())
    {
        fin.get(np);
        if (np=='\n')
            n++;
    }
    
    int **f_mas=new int* [n];
    for (int count=0;count<n;count++)
        f_mas[count]=new int[m];
    n=0;
 
    while (fin.get(ch)) 
    {
        if (ch==' ')
        {
            f_mas[n][4]=0;
            for(int i=0; i<4;i++)
                f_mas[n][4]=+f_mas[n][i];
            n++;
            al=0;il=0;el=0;ol=0;
        }
        else
        {
            if (ch=='A' || ch=='a')
            {
                f_mas[n][0]=al++;
            }
            if (ch=='E' || ch=='e')
            {
                f_mas[n][1]=el++;
            }   
            if (ch=='I' || ch=='i')
            {
                f_mas[n][2]=il++;
            }
            if (ch=='O' || ch=='o')
            {
                f_mas[n][3]=ol++;
            }
 
        }
 
    }
    cout<<endl;
    for(int i=0; i<n;i++)
    {
        for(int j=0;j<m;j++)
            cout<<setw(7)<<f_mas[i][j];
        cout<<endl;
    }
    system("pause");
    return 0;
}
Но теперь на вывод идет 2 пустых строки и "Нажмите энтэр чтобы продолжить"
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.02.2014, 01:31
После подсчёта строк, нужно сбросить флаг eof и вернуть курсор к началу файла:
C++
1
2
fin.clear();
fin.seekg(0);
1
5 / 5 / 0
Регистрация: 22.05.2012
Сообщений: 122
16.02.2014, 01:39  [ТС]
Переделал код.
Так как немного начудил с количеством строк массива:
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
#include "stdafx.h"
#include "fstream"
#include "iostream"
#include "iomanip"
 
using namespace std;
 
int main()
{
    char ch;
    int n=1,m=5;
    char np;
    int al=0,il=0,el=0,ol=0;
    
    ifstream fin("include_inform.txt");
    if (!fin)
        cout<<"\n\tThis file is not found\n";
    
    while(!fin.eof())
    {
        fin.get(np);
        if (np=='\n')
            n++;
    }
    
    int **f_mas=new int* [n];
    for (int count=0;count<n;count++)
        f_mas[count]=new int[m];
    n=0;
 
    while (fin.get(ch)) 
    {
        if (ch==' ')
        {
            f_mas[n][4]=0;
            for(int i=0; i<4;i++)
                f_mas[n][4]=+f_mas[n][i];
            n++;
            al=0;il=0;el=0;ol=0;
        }
        else
        {
            if (ch=='A' || ch=='a')
            {
                f_mas[n][0]=al++;
            }
            if (ch=='E' || ch=='e')
            {
                f_mas[n][1]=el++;
            }   
            if (ch=='I' || ch=='i')
            {
                f_mas[n][2]=il++;
            }
            if (ch=='O' || ch=='o')
            {
                f_mas[n][3]=ol++;
            }
 
        }
 
    }
    cout<<endl;
    for(int i=0; i<n;i++)
    {
        for(int j=0;j<m;j++)
            cout<<setw(7)<<f_mas[i][j];
        cout<<endl;
    }
    system("pause");
    return 0;
}
Но теперь на вывод идет 2 пустых строки и "Нажмите энтэр чтобы продолжить"

Добавлено через 3 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
После подсчёта строк, нужно сбросить флаг eof и вернуть курсор к началу файла:
C++
1
2
fin.clear();
fin.seekg(0);
Необработанное исключение в "0x00cf17fb" в "Search_word's.exe": 0xC0000005: Нарушение прав доступа при записи "0xfdfdfdfd".
Выскочило и указывает на 45ю строку...
0
 Аватар для Alex566
244 / 155 / 48
Регистрация: 03.04.2013
Сообщений: 317
16.02.2014, 01:46
Лучший ответ Сообщение было отмечено влад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
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    ifstream fin("include_inform.txt");
    string max;
    int count = 0, i = 0;
    if (!fin.fail())
    {
        while (!fin.eof())
        {
            string tm;
            fin >> tm;
            for (char c : tm)
                if (c == 'A' || c == 'a' || c == 'E' || c == 'e' || c == 'I' || c == 'i' || c == 'O' || c == 'o')
                    i++;
            if (i > count)
            {
                count = i;
                max = tm;
            }
            i = 0;
        }
        cout << max << endl;
    }
    fin.close();
    system("pause");
    return 0;
}
1
5 / 5 / 0
Регистрация: 22.05.2012
Сообщений: 122
16.02.2014, 01:52  [ТС]
Цитата Сообщение от Alex566 Посмотреть сообщение
Я так понимаю вам нужно просто вывести на экран слово с наибольшим количеством этих букв?
C++
1
2
3
            for (char c : tm)
                if (c == 'A' || c == 'a' || c == 'E' || c == 'e' || c == 'I' || c == 'i' || c == 'O' || c == 'o')
                    i++;
Объясните мне до каких пор работает такой цикл For?
0
 Аватар для Alex566
244 / 155 / 48
Регистрация: 03.04.2013
Сообщений: 317
16.02.2014, 02:01
Цитата Сообщение от влад0 Посмотреть сообщение
Объясните мне до каких пор работает такой цикл For?
Пока не переберет каждый символ из строки tm. По смыслу аналогично
C++
1
2
3
for (int i = 0; i<tm.length(); i++)
                if (tm[i] == 'A' || tm[i] == 'a' || tm[i] == 'E' || tm[i] == 'e' || tm[i] == 'I' || tm[i] == 'i' || tm[i] == 'O' || tm[i] == 'o')
                    i++;
1
5 / 5 / 0
Регистрация: 22.05.2012
Сообщений: 122
16.02.2014, 02:17  [ТС]
Цитата Сообщение от Alex566 Посмотреть сообщение
Пока не переберет каждый символ из строки tm. По смыслу аналогично
C++
1
2
3
for (int i = 0; i<tm.length(); i++)
                if (tm[i] == 'A' || tm[i] == 'a' || tm[i] == 'E' || tm[i] == 'e' || tm[i] == 'I' || tm[i] == 'i' || tm[i] == 'O' || tm[i] == 'o')
                    i++;
Спасибо! разобрался! Только там наверное условием цикла стоить выбрать другую переменную, не i..
0
 Аватар для Alex566
244 / 155 / 48
Регистрация: 03.04.2013
Сообщений: 317
16.02.2014, 02:20
Цитата Сообщение от влад0 Посмотреть сообщение
Только там наверное условием цикла стоить выбрать другую переменную, не i..
Да. Это я для примера показал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.02.2014, 02:20
Помогаю со студенческими работами здесь

Программа которая анализирует, какую клавишу нажал пользователь и выводит сообщение
Помогите написать программу, буду благодарен! Само задание такое: Напишите программу, которая анализирует, какую клавишу нажал...

Что за ересь???
Ребяты! Что за фигня? смотрю по http://pr-cy.ru на проиндексированные Яшей страницы сайта и вижу следующее (есссно не мое): ...

Ересь на флешке
Щито делать?

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

Ересь вместо кода в ILSpy


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru