Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
 Аватар для va1n4a
5 / 5 / 2
Регистрация: 11.03.2012
Сообщений: 103

Почему то ничего не происходит в скомпилированной программе

11.10.2016, 23:43. Показов 4541. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему то ничего не происходит в скомпилированной программе ошибок компилятор не нашел ,но никаких значений на экран не выводит в программе
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
#include <iostream>
#include <fstream>
#include <stdio.h>
 
using namespace std;
 
int main()
{
    FILE *f1=fopen("text.txt","r");
    int c1;
     char ch;//переменная для хранения считываемого символа
    int ab=0,a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;//переменные для хранения кол-ва нужных нам букв
    if (f1 == NULL) perror ("Ошибка открытия файлаn");
  else{
fseek(f1,0, SEEK_SET);//идем в начало файла
    while(!fseek(f1,0, SEEK_END))//пока не конец файла
 
    {
     getc(f1)>>ch;//читаем символ
     //getc(f1)=ch;
        switch (ch)//проверяем является ли он нужным нам,если да увеличиваем соответствующий счетчик
        {
            case 'a':{a++;break;}
            case 'b':{b++;break;}
            case 'c':{c++;break;}
            case 'd':{d++;break;}
            case 'e':{e++;break;}
            case 'f':{f++;break;}
            case 'g':{g++;break;}
            case 'h':{h++;break;}
           // case 'ab':{ab++;break;}
        }
    }
    if(ab!=0){
 cout<<"значение аb присутствует";
}else {cout<<"значение аb отсутствует";  }
   //вывод на экран результата
   cout<<"A="<<a<<"B="<<b<<"C="<<c<<"D="<<d;
   cout<<"E="<<e<<"F="<<f<<"G="<<g<<"H="<<h;
    fclose(f1);//закрываем поток
    return 1;
}}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2016, 23:43
Ответы с готовыми решениями:

При запуске скомпилированной программы ничего не происходит
Здравствуйте, программа которая написана на qt запускается только в самом &quot;QtCreator&quot;. Если же запускать через папку где лежит...

В программе ничего не происходит
Программа компилируется, ошибок нет, но она отказывается запускаться? Как это исправить можно? #include &lt;iostream&gt; #include...

Нажимаю на Run и ничего не происходит.Почему?
Ребят я новичок вот только начал изучать паскаль купил книгу все делал по инструкции.Вроде ничего сложного ...скачал турбо паскаль 7.0 ,...

32
79 / 79 / 34
Регистрация: 26.10.2011
Сообщений: 220
11.10.2016, 23:59
Вероятно вы просто не успеваете увидеть вывод программы, попробуйте использовать getch() или system("pause"), чтобы затормозить программу в конце.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12935 / 6802 / 1821
Регистрация: 18.10.2014
Сообщений: 17,214
12.10.2016, 00:30
Цитата Сообщение от va1n4a Посмотреть сообщение
C
1
2
while(!fseek(f1,0, SEEK_END))//пока не конец файла
{
Ого! Это что за феерический креатив?

Циклы с предусловием "пока не конец файла" в С и С++ практически всегда ошибочны, но вот такого я еще не видел.

Что по-вашему делает такой вызов fseek?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
12.10.2016, 00:43
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
практически всегда ошибочны
Так eof практически одна вариация в стандарте и она не верная?
0
 Аватар для va1n4a
5 / 5 / 2
Регистрация: 11.03.2012
Сообщений: 103
12.10.2016, 01:41  [ТС]
sergestus нет тут не это программа компилируется и висит просто пустая пока ее не закроешь. на getc() в конце ругается компилятор
Что по-вашему делает такой вызов fseek?
ну как что пока не дойдем до конца файла читаем символы и увличиваем счетчик.
при закрытие программы я заметил выдает Process terminated with status -1073741510 (0 minute(s), 3 second(s))
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.10.2016, 04:27
Цитата Сообщение от va1n4a Посмотреть сообщение
ну как что пока не дойдем до конца файла
http://www.cplusplus.com/refer... /?kw=fseek
Цитата Сообщение от va1n4a Посмотреть сообщение
getc(f1)>>ch;//читаем символ
Серьёзно?
C++
1
2
3
4
5
6
while(1)
{
     ch = getc(f1);
     if (feof(f1)
        break;
//...
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12935 / 6802 / 1821
Регистрация: 18.10.2014
Сообщений: 17,214
12.10.2016, 05:36
Цитата Сообщение от va1n4a Посмотреть сообщение
ну как что пока не дойдем до конца файла читаем символы и увличиваем счетчик.
В стандартной библиотеке языка С функция проверки состояния "конец файла" - feof. У вас написано некое while(!fseek(f1,0, SEEK_END)). Каким боком вот это последнее должно реализовать ваше "пока не дойдем до конца файла"???

Добавлено через 3 минуты
Цитата Сообщение от nd2 Посмотреть сообщение
C++
1
2
3
4
5
6
while(1)
{
     ch = getc(f1);
     if (feof(f1)
        break;
//...
Для этого понадобится int ch;, а не char ch; (как у ТС). И тогда уже не надо будет никакого вызова feof, ибо getc сама вернет EOF по достижении конца файла.

C++
1
2
3
4
5
6
while(1)
{
     int ch = getc(f1);
     if (ch == EOF)
        break;
//...
Функция feof не нужна почти никогда.
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
12.10.2016, 05:38
ТС, почитайте описание работы fseek.
И вообще - полезно иметь представление о работе функций, которые используешь. Не "делает что-то типа...", а точное.
Хотя бы потому, что программы работают так, как они написаны, а не так, как хочется/надо.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.10.2016, 06:16
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Для этого понадобится int ch;, а не char ch; (как у ТС).
Разве с char, предложенный код, будет неправильно работать?
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
ибо getc сама вернет EOF по достижении конца файла.
EOF она вернёт и при ошибке чтения, но при этом установит не end-of-file indicator, а error indicator. Поэтому, чтобы определить достижение именно конца файла, нужно использовать feof().
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12935 / 6802 / 1821
Регистрация: 18.10.2014
Сообщений: 17,214
12.10.2016, 07:00
Цитата Сообщение от nd2 Посмотреть сообщение
Разве с char, предложенный код, будет неправильно работать?
Ну с очень теоретически-педантичной точки зрения, он может работать неправильно в С в том смысле, что возвращаемое getc значение не обязательно помещается в диапазон char. И если возвращенное значение не помещается, то с чисто теоретически-педантичной точки зрения, реализация может выстрелить сигналом. Но это в С. А у нас тут С++. В С++ вроде сигнала быть не может. Так что тут вроде все в порядке.

Цитата Сообщение от nd2 Посмотреть сообщение
EOF она вернёт и при ошибке чтения, но при этом установит не end-of-file indicator, а error indicator. Поэтому, чтобы определить достижение именно конца файла, нужно использовать feof().
Вот именно. То если если в процессе чтения произошла таки ошибка (а не конец файла), то в варианте с проверкой только на feof получится ерунда - он будет бесконечно безуспешно "читать" символы из "мертвого" потока, ожидая feof, который никогда не наступит.
1
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
12.10.2016, 10:05
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
В С++ вроде сигнала быть не может. Так что тут вроде все в порядке.
Да тех пор, пока не попадем на символ (какой-нибудь 'я'),
который будет представлен в char точно также, как и урезанный EOF.
0
79 / 79 / 34
Регистрация: 26.10.2011
Сообщений: 220
12.10.2016, 10:24
Лучший ответ Сообщение было отмечено va1n4a как решение

Решение

Цитата Сообщение от va1n4a Посмотреть сообщение
нет тут не это программа компилируется и висит просто пустая пока ее не закроешь.
Я думаю это из-за того, что у вас бесконечный цикл. Условие выхода из цикла никогда не выполняется:
C++
1
while(!fseek(f1,0, SEEK_END)
Вам нужно использовать feof (определение достижения конца файла), как вам советовали:
C++
1
while(!feof(f1)
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12935 / 6802 / 1821
Регистрация: 18.10.2014
Сообщений: 17,214
12.10.2016, 10:30
Цитата Сообщение от Croessmah Посмотреть сообщение
Да тех пор, пока не попадем на символ (какой-нибудь 'я'),
который будет представлен в char точно также, как и урезанный EOF.
Да, но коде nd2 он никак не проверяет значение ch на EOF вообще, а напрямую обращается к feof. Таким образом даже если ch из-за этого 'я' станет выглядеть как EOF, это ничему не помешает. До тех пор пока 'я' проходит через все эти перепетии, попадает в ch и там продолжает восприниматься как 'я' для целей автора кода, все должно работать нормально, если я ничего не упустил.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.10.2016, 10:34
Цитата Сообщение от Croessmah Посмотреть сообщение
Да тех пор, пока не попадем на символ (какой-нибудь 'я'),
который будет представлен в char точно также, как и урезанный EOF.
Это как? Там же символы как unsigned char читаются.
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
12.10.2016, 10:35
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
если я ничего не упустил.
Я про последовательность:
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Для этого понадобится int ch;, а не char ch;
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
C++
1
2
int ch = getc(f1);
* * *if (ch == EOF)
Цитата Сообщение от nd2 Посмотреть сообщение
Разве с char, предложенный код, будет неправильно работать?
Что-то мне стукнуло, что речь идет о подобном коде:
C++
1
2
char ch = getc(f1);
* * *if (ch == EOF)
Он бы остановился на каком-нибудь 'я' из-за кастов.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.10.2016, 10:47
Цитата Сообщение от nd2 Посмотреть сообщение
Это как? Там же символы как unsigned char читаются.
Цитата Сообщение от Croessmah Посмотреть сообщение
Он бы остановился на каком-нибудь 'я' из-за кастов.
Понятно. Читаются как unsigned char, а приводятся к char. Из FF получится -1.
Цитата Сообщение от Croessmah Посмотреть сообщение
(какой-нибудь 'я'),
который будет представлен в char точно также, как и урезанный EOF.
0
 Аватар для va1n4a
5 / 5 / 2
Регистрация: 11.03.2012
Сообщений: 103
12.10.2016, 22:15  [ТС]
исправил все прескрасно работает вот только не правильно считает аb выводит "значение аb присутствует кол-во вхождений -> 0 " а должно 1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while(!feof(f1))//пока не конец файла
    {
int ch=getc(f1);
        switch (ch)//проверяем является ли он нужным нам,если да увеличиваем соответствующий счетчик
        {
            case 'ab':{ab++;break;}
            case 'a':{a++;break;}
            case 'b':{b++;break;}
            case 'c':{c++;break;}
            case 'd':{d++;break;}
            case 'e':{e++;break;}
            case 'f':{f++;break;}
            case 'g':{g++;break;}
            case 'h':{h++;break;}
 
        }
    }
    if(ab=0){ cout<<"значение аb отсутствует " "\n";
}else {cout<<"значение аb присутствует кол-во вхождений ->"<< ab <<"\n"; }
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
12.10.2016, 22:41
Цитата Сообщение от va1n4a Посмотреть сообщение
case 'ab':
А что это за буква такая 'ab'?
0
 Аватар для va1n4a
5 / 5 / 2
Регистрация: 11.03.2012
Сообщений: 103
12.10.2016, 22:47  [ТС]
А что это за буква такая 'ab'?
хотел чтобы кол-во словосочетания ab определил(
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12935 / 6802 / 1821
Регистрация: 18.10.2014
Сообщений: 17,214
13.10.2016, 02:35
Цитата Сообщение от va1n4a Посмотреть сообщение
хотел чтобы кол-во словосочетания ab определил(
Это каким это, по-вашему, образом в переменной char ch (один символ) может поместиться сочетание из двух символов ab?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.10.2016, 02:35
Помогаю со студенческими работами здесь

При авторизации почему-то ничего не происходит
Можете помочь с авторизацией , все коды прописаны ошибок нет но почемуто при авторизации не чего не происходит

Пределы (почему ничего не происходит с синусом n в квадрате)
Здравствуйте, решение есть , но не понятен один момент , почему ничего не происходит с синусом н в квадрате. Можно , пожалуйста очень...

Почему программа зависает и ничего не происходит дальше?
Все та же пересылка списка файлов, убрал все лишнее на данный момент, оставил только пересылку списка файлов.. В клиентской части потом...

Почему при нажатии на Space ничего не происходит?
Почему при нажатии на Space ничего не происходит? форма не закрывается private void Form1_KeyDown(object sender, KeyEventArgs e) ...

Почему после нажатия на кнопку ничего не происходит?
1) почему после нажатия на кнопку ничего не происходит, и почему она сразу не отображается 2) как избавиться от мерцания во время...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru