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

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

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

маленькая прожка с ошибкой - C++

10.12.2009, 19:51. Просмотров 402. Ответов 6
Метки нет (Все метки)

компиляция проходит успешно, после запуска выдает ошибку (см вложение)
прога открывает файл, посимвольно его читает. если символ есть в массиве al, в st счетчик увеличивается, если нет - добавляет символ и тож увеличивает счетчик.
Код
 FILE *big; char s, al[55]; int t, j, n, st[55];
 big=fopen("big.txt","r");
     for(int i=0;i<55;i++) st[i]=0;
     j=0; n=0;
     while(!feof(big))
     {
       s=getc(big);
       for (int i=0;i<55;i++) if(al[i]==s){st[i]++; j++; n++; i=55;}
       if (n==0) {al[j]=s; st[j]++;} //здесь ошибка
       n=0;j++;
      }
  fclose(big);
Миниатюры
маленькая прожка с ошибкой  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2009, 19:51     маленькая прожка с ошибкой
Посмотрите здесь:

прооостенькая прожка) - C++
не изучал ни када С++,надо, но как то руки не доходят. помогите пожалуйста) :cray: Написать программу, которая проверяет, содержит ли...

маленькая маленькая консультация, не сложная работа - C++
почему эта прога не компилируется? #include&lt;iostream.h&gt; #include&lt;string.h&gt; #include&lt;math.h&gt; int main() { string z=&quot;1011&quot;; ...

Маленькая конструкции с if else - C++
Доброе время суток, товарищи! У меня возник вопрос, как мне в кострукции с if else сделать так, чтобы else были все другие слова, кроме...

Маленькая ошибка - C++
#include&lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; using namespace std; bool myfunc(char x , char x1 ); bool...

Маленькая задачка. - C++
Дано действительное число h. Выяснить, имеет ли уравнение ax2 + bx + c = 0 действительные корни, если ...

Маленькая буква x - C++
Недавно начал изучать С++. Встретил следующий код, не понимаю как он работает. Если кто подскажет, почему из-за буквы &quot;x&quot; выполняется...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.12.2009, 04:38     маленькая прожка с ошибкой #2
C
1
n=0;j++;
проверь j на переполнение за 54
Credo
0 / 0 / 0
Регистрация: 10.12.2009
Сообщений: 4
11.12.2009, 11:50  [ТС]     маленькая прожка с ошибкой #3
спасибо, accept. Переполнение таки было.но основная ошибка оказалось в другом.
вот пробный текст: "A Blu ray Disc also called BD is a high density optical disc format for the storage."
после прогонки проги получаем результат (картинка)
Вопрос: откуда берутся 'd' и как от них избавиться?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void main()
{
 FILE *big; char s,al[100]; int t,j,n,st[100];
   big=fopen("bigp.txt","r");
   for(int i=0;i<100;i++) st[i]=0;
   for(int i=0;i<100;i++) al[i]='1';
     j=0; n=0;
     while(!feof(big))
     {
       s=getc(big);
       for (int i=0;i<100;i++) if(al[i]==s)
       {
         st[i]++; j++; n++; i=100; printf("_%c",al[i]);
       }
       if (n==0) {al[j]=s; st[j]++; printf(" %c",al[j]);}
       n=0; j++;
      }
       fclose(big);
 getch();
}
Миниатюры
маленькая прожка с ошибкой  
Том Ардер
Модератор
Эксперт по математике/физике
3736 / 2349 / 293
Регистрация: 15.06.2009
Сообщений: 4,202
12.12.2009, 00:13     маленькая прожка с ошибкой #4
Строка 13
Цитата Сообщение от Credo Посмотреть сообщение
i=100; printf("_%c",al[i])
Что будет в 100-м элементе?

1)Не надо экономить строки текста
2)Логика крайне запутанная. Не хочется ломать голову над шарадами. Попробуй решить сначала на псевдокоде (русским по белому объясни тупой машине, что ты хочешь сделать).
Когда сам поймёшь, код получится без напряга, простой и понятный
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.12.2009, 11:53     маленькая прожка с ошибкой #5
C
1
char s, al[100];
в al всего сто элементов, последний должен быть зарезервирован под нуль-символ
по нуль-символу определяется где конец строки

а здесь случай, видимо, в циклах
Том Ардер
Модератор
Эксперт по математике/физике
3736 / 2349 / 293
Регистрация: 15.06.2009
Сообщений: 4,202
14.12.2009, 02:01     маленькая прожка с ошибкой #6
Цитата Сообщение от Credo Посмотреть сообщение
char s,al[100]
Цитата Сообщение от Credo Посмотреть сообщение
i=100; printf("_%c",al[i]);
Переформулирую вопрос:
Что такое al[i] при i=100 ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2009, 02:13     маленькая прожка с ошибкой
Еще ссылки по теме:

Маленькая доработка программы - C++
Требуется написать программу для вычисления интеграла методом левых, правых и средних прямоугольников. Вот есть программа как вычислить 1...

маленькая ошибка в программе - C++
ни как не могу исправить(( даже стыдно. // 4_laba_chemes.cpp: определяет точку входа для консольного приложения. // #include...

Ошибочка маленькая и не понятная((( - C++
Исправите ошибку.За ране спасибо! #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace...

Маленькая проблемка со switch - C++
Проблема - невозможность использование перемнной типа string как управляющей в операторе switch. Цель - сделать некий аналог. рабочую...


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

Или воспользуйтесь поиском по форуму:
perchik71
69 / 27 / 2
Регистрация: 08.08.2009
Сообщений: 60
14.12.2009, 02:13     маленькая прожка с ошибкой #7
Цитата Сообщение от Credo Посмотреть сообщение
компиляция проходит успешно, после запуска выдает ошибку (см вложение)
прога открывает файл, посимвольно его читает. если символ есть в массиве al, в st счетчик увеличивается, если нет - добавляет символ и тож увеличивает счетчик.
Код
 FILE *big; char s, al[55]; int t, j, n, st[55];
 big=fopen("big.txt","r");
     for(int i=0;i<55;i++) st[i]=0;
     j=0; n=0;
     while(!feof(big))
     {
       s=getc(big);
       for (int i=0;i<55;i++) if(al[i]==s){st[i]++; j++; n++; i=55;}
       if (n==0) {al[j]=s; st[j]++;} //здесь ошибка
       n=0;j++;
      }
  fclose(big);
напишу так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <windows.h>
#include <fstream.h>
#include <cstring.h>
#include <iostream.h>
 
string str;  //текст файла
unsigned ch;
 
void main()
{
ifstream ifs("big.txt");
while(!ifs.eof()) str=(char)ifs.get();
ifs.close();
cout<<"Длинна файла: " cout<<str.length();
}
После чего делай чё хош с str ))))
Длинна текста те известно ...
Yandex
Объявления
14.12.2009, 02:13     маленькая прожка с ошибкой
Ответ Создать тему
Опции темы

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