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

Память - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ реализация двухуровневого меню http://www.cyberforum.ru/cpp-beginners/thread584224.html
Помогите пожалуйста разобраться где я неправильно сделал? Нужно сделать двухуровневое меню.. вроде все так, но почему то ошибки((( вот код: #include <errno.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <ncurses.h> #include <iostream>
C++ Конечные автоматы Нужна помощь в написании программы, строящей правостороннюю и левостороннюю грамматику , в написании конечных автоматов. http://www.cyberforum.ru/cpp-beginners/thread584186.html
C++ Нахождение блочно-верхнетреугольной матрицы
Вводится натуральное число n>=1 и вещественная матрица А порядка n. Определить, является ли матрица А блочно-верхнетреугольной. Если да, то напечатать возможный порядок верхнего левого блока, если нет - напечатать 0. Помогите пожалуйста!
C++ проект в котором по преходу на ссылки открываются видеоуроки
написать программу,приложение, в котором открывается окошко где отображены ссылки.переходя по ним должны открываться видеоуроки мои. там должен быть красивый интерфейс, кнопки плеера,прокрутки.
C++ Как по-русски обозвать целиком эту конструкцию? http://www.cyberforum.ru/cpp-beginners/thread584030.html
Ту что в круглых скобках в операторе for? for (i=0; i<n; ++i) { cout<<i; } В фигурных скобках - тело, вся первая строка - заголовок. А то, что в круглых скобках целиком, но без самого оператора for? Я циклом пользоваться умею, мне нужна только формулировка, как он пишется.
C++ Создание шаблона двунаправленного списка класс List пожалуйста помогите решить задачку, позникли небольшие проблемы с ней.. 3. Создание шаблона двунаправленного списка класс List. а. добавления узла перед заданным элементом; b. удаления всех заданных элементов; c. сортировка элементов меняя узлы. d. добавления узла после заданного элемента. подробнее

Показать сообщение отдельно
paranoya
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 9
23.05.2012, 15:34     Память
Здравствуйте, пишу программу, суть такова:
Нужно строки из файла отсортировать по длине строки, а строки равной длины отсортировать по алфавиту.
Все работало, когда было фиксированное количество строк, но когда я начал количество строк выражать через n, все почему-то работать перестало - циклится и выводит вместо нужных строк рандомные символы.
Подскажите, пожалуйста, в чем может быть проблема?
Архив с файлами: http://rghost.ru/38236986

Код:
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
 
main()
{ int n=0,i,j,len1, len2;
  char bufc;
  char bufer [200];
  FILE *pf, *pr;  
  pf=fopen("1.txt","r"); 
  pr=fopen("2.txt","w");
  while (!feof(pf)){
        if (fgetc(pf) == '\n') {
                 n++;
        }
  }
  n=n+1;
  printf("%d\n\n\n",n);
  char ** ptr = new char*[n];
  for (i = 0; i < n; i++) 
    ptr[i] = new char[20];
  for (i=0;i<n;i++) {
  fgets(ptr[i],20,pf);} 
  for (i=0;i<n;i++) {
      printf("%d; %s\n",i,ptr[i]);}   
  for (i=0;i<n-1;i++){
      for (j=n;j>=(i+1);j--){
      len1 = strlen(ptr[j]);
      len2 = strlen(ptr[j-1]);
      if (len1 < len2){
         strcpy(bufer, ptr[j-1]);
         strcpy(ptr[j-1],ptr[j]);
         strcpy(ptr[j],bufer);
         }
      }
  }   
  for (i=0;i<n-1;i++){
      for (j=n;j>=(i+1);j--){
          len1 = strlen(ptr[j]);
          len2 = strlen(ptr[j-1]);
          if (len1 == len2){
               if(strcmp(ptr[j-1],ptr[j])>0){
                       strcpy(bufer, ptr[j-1]);
                       strcpy(ptr[j-1],ptr[j]);
                       strcpy(ptr[j],bufer);
              }
          }
      }
  }
  for (i=0;i<n;i++) {
      printf("%d; %s\n",i,ptr[i]);}   
      
  system("PAUSE");
}
Добавлено через 15 минут
Когда исключаю из программы вот этот кусок:
C++
1
2
3
4
5
6
  while (!feof(pf)){
        if (fgetc(pf) == '\n') {
                 n++;
        }
  }
  n=n+1;
а перебор по строкам делаю просто фиксированным (числом), то все начинает вновь работать как надо. Как можно толково сделать подсчет количества строк в файле?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru