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

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

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

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

10.12.2009, 19:51. Просмотров 404. Ответов 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);
0
Миниатюры
маленькая прожка с ошибкой  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2009, 19:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос маленькая прожка с ошибкой (C++):

прооостенькая прожка) - 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;; ...

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

Маленькая ошибка - 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...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.12.2009, 04:38 #2
C
1
n=0;j++;
проверь j на переполнение за 54
0
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();
}
0
Миниатюры
маленькая прожка с ошибкой  
Том Ардер
Модератор
Эксперт по математике/физике
3742 / 2355 / 293
Регистрация: 15.06.2009
Сообщений: 4,219
12.12.2009, 00:13 #4
Строка 13
Цитата Сообщение от Credo Посмотреть сообщение
i=100; printf("_%c",al[i])
Что будет в 100-м элементе?

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

а здесь случай, видимо, в циклах
0
Том Ардер
Модератор
Эксперт по математике/физике
3742 / 2355 / 293
Регистрация: 15.06.2009
Сообщений: 4,219
14.12.2009, 02:01 #6
Цитата Сообщение от Credo Посмотреть сообщение
char s,al[100]
Цитата Сообщение от Credo Посмотреть сообщение
i=100; printf("_%c",al[i]);
Переформулирую вопрос:
Что такое al[i] при i=100 ?
0
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 ))))
Длинна текста те известно ...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2009, 02:13
Привет! Вот еще темы с ответами:

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

маленькая ошибка в программе - 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...

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


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

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

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