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

помогите плиз, не работает прога

14.10.2011, 19:01. Показов 860. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
После ввода в командной строке путь к экзе и набора букв вылетает "Прекращена работа программы si.exe". ОС windows 7, неужели из-за этого? задание во вложении
вот код проги
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printreverse(char *str) 
{
    int i;
    for(i = strlen(str) - 2;i >= 0; i--)
    printf("%c",str[i]);
}
int main(int argc, char *argv[])
{
  
    if(argc == 1)
    {
        printf("Vy ne peredali parametr iz komandnoj stroki\n");
        return 0;
    }
    char dir[40] = "c:\\1.txt"; 
    int n; 
    char *buf,bb; 
    FILE *F = NULL;
    F = fopen("c:\\1.txt","r"); 
    while(!feof(F)) 
    {
        buf = (char*)malloc(sizeof(char)); 
        buf[0] = '\0';
        while(!feof(F)) 
        {
            n = strlen(buf); 
            bb = fgetc(F); 
            if(bb == '\n') break; 
            buf = (char*)realloc(buf,sizeof(char)*(n+2));
            buf[strlen(buf)+1] = '\0'; 
            buf[strlen(buf)] = bb; 
        }
        if(strstr(buf,argv[1]) != NULL) {printreverse(buf);printf("\n");
        } 
        free(buf); 
 
    }
    fclose(F); 
    
    return 0; 
}
Вложения
Тип файла: rar Doc1.rar (144.0 Кб, 13 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2011, 19:01
Ответы с готовыми решениями:

Не работает прога. Помогите
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; float f1(float); float f2(float); float...

Помогите студенту плиз
Было дано задание-&quot;Подобрать несколько примеров тем программных продуктов&quot;. Задание корявое, в следствии- на ум ничего вообще не приходит. ...

Списки (Помогите плиз)
1)Линейный упорядоченный список с удалением,нахождением и вставкой элемента. 2)Список списков(список состоит из заголовков списков) ...

6
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.10.2011, 21:11
Цитата Сообщение от Гузель Посмотреть сообщение
F = fopen("c:\\1.txt","r");
- ну и чтоже делает программа если аргументов передано более 1-го, хм пытается открыть данный файл c:\\1.txt, а дальше считываем данные из него?А если файла c:\\1.txt нет?
0
Заблокирован
14.10.2011, 21:25
Цитата Сообщение от Гузель Посмотреть сообщение
После ввода в командной строке путь к экзе и набора букв вылетает "Прекращена работа программы si.exe". ОС windows 7, неужели из-за этого? задание во вложении
вот код проги
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printreverse(char *str) 
{
    int i;
    for(i = strlen(str) - 2;i >= 0; i--)
    printf("%c",str[i]);
}
}
Не смотрел весь код, но сразу же бросается в глаза, что приведенная выше функция некорректная. Цикл должен начинаться не с strlen(str) - 2, а strlen(str) - 1. То есть если строка содержит всего один символ, то ее длина будет равна 1, а индекс посленднего элемента, то есть в данном случае единственного будет strlen(str) - 1, то есть будет равен 0.
0
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 15
14.10.2011, 23:15  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ну и чтоже делает программа если аргументов передано более 1-го, хм пытается открыть данный файл c:\\1.txt, а дальше считываем данные из него?А если файла c:\\1.txt нет?
я ввожу в командной строке набор букв и он их выводит в обратном порядке, считывает из текст.файла. а если файла нет, то по идее прога не работает

Добавлено через 50 секунд
Цитата Сообщение от Сыроежка Посмотреть сообщение
Не смотрел весь код, но сразу же бросается в глаза, что приведенная выше функция некорректная. Цикл должен начинаться не с strlen(str) - 2, а strlen(str) - 1. То есть если строка содержит всего один символ, то ее длина будет равна 1, а индекс посленднего элемента, то есть в данном случае единственного будет strlen(str) - 1, то есть будет равен 0.
если даже меняешь так как Вы сказали, прога все равно не работает
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.10.2011, 23:19
Цитата Сообщение от Гузель Посмотреть сообщение
я ввожу в командной строке набор букв и он их выводит в обратном порядке, считывает из текст.файла. а если файла нет, то по идее прога не работает
вы бы задание толком написали, а то сплошной сумбур
0
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 15
14.10.2011, 23:35  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
вы бы задание толком написали, а то сплошной сумбур
задание во вложении, внизу
0
56 / 56 / 16
Регистрация: 01.08.2011
Сообщений: 141
15.10.2011, 14:59
Вот код, с небольшими комментариями. Измени его в соответствие со своим заданием.
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
 
using namespace std;
 
void printreverse(char *str) ;
char** AddStr(char** pbuf, char* buf,int m);
 
int main()
{
    setlocale(LC_ALL,"");
 
 
    fstream File("text.txt");
    if(!File.is_open())
    {
        cout<<"Файл не найден, создаем и записываем";
        exit(1);
    }
    //Допустим в файле эти строки:
 
    //Helloy word
    //77890
    //llo
    //lloooof
 
    char buf[255];           /*Буфер дляя записи строк из файла               */
    char **pbuf = NULL;      /*Указатель на все строки содержащие подстроки   */
    int m=0;                 /*Количество строк в указателе pbuf             */
    char you_str[255]="llo"; /*заданная подстрока                             */
       
 
 
    while(!File.eof())
    {
        File.getline(buf,255,'\n');  //чтение строки из файла
 
        int a=-1;
        unsigned int i=0,j,k;
 
        //Поиск строки файла с заданной подстракой
        while ( i < strlen(buf) && a!=strlen(you_str))
        {
            if(buf[i]==you_str[0])
            {
                k=i;
                j = 1;
                while( j<strlen(you_str) && (k+j)<strlen(buf) )
                    if(buf[k+j]==you_str[j])
                    {
                        j++;
                        a=j;
                    }
                    else
                        break;
            }
            i++;
        }
        if(a == strlen(you_str))
        {
            m++;
            pbuf=AddStr(pbuf,buf,m);
        }
    }
 
    File.close();
 
 
    if(pbuf)
        for(int i=0; i<m; i++)
            printreverse(pbuf[i]);
    else
        cout<<"Нет строк где встречается заданная подстрока!";
 
    for(int i=0; i<m; i++)
        delete [] pbuf[i];
    delete [] pbuf;
 
 
    return 0; 
}
void printreverse(char *str) 
{
        int i;
        for(i = strlen(str)-1;i >=0; i--)
            cout<<str[i];
        cout<<endl;
}
 
char** AddStr(char** pbuf, char* buf, int m)
{
    if(m<2)
    {
        pbuf = new char*[1];
        pbuf[0]=new char[strlen(buf)+1];
        strcpy(pbuf[0],buf);
    }
    else
    {
        //Для копирования содержимого из pbuf.
        char** f = new char*[m-1];
 
        //Собственно копированеи содержимого pbuf в f
        for(int i=0; i < m-1; i++)
        {
            f[i] = new char [strlen(pbuf[i])+1];
            strcpy(f[i],pbuf[i]);
        }
 
        // Полная очистка pbuf**
        for(int i=0; i<m-1;i++)
            delete [] pbuf[i];
        delete []  pbuf;
 
        //Выделение  памяти на массив строк. 
        pbuf = new char*[m];
        // Загоняю туду последнию найденую строку первым элементом.
        pbuf[0]=new char[strlen(buf)+1];
        strcpy(pbuf[0],buf);
 
        //Загоняю туду до этого найденые строки 
        for(int i=1; i<m;i++)
        {
            pbuf[i]=new char[strlen(f[i-1])+1];
            strcpy(pbuf[i],f[i-1]);
        }
 
        //Удаляю все в  вспомогат. мас. 
        for(int i=0; i<m-1; i++)
            delete [] f[i];
        delete [] f;
    }
    return pbuf;
}
А вот результат работы с содержимым файла (содержимое указано в коментах программы)
Миниатюры
помогите плиз, не работает прога  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.10.2011, 14:59
Помогаю со студенческими работами здесь

Помогите написать программу, плиз...
Цель работы:Дана функция, заданная бесконечным рядом. С клавиатуры вводятся x и e(e - точность 0,001 - 0,00001), нужно вычислить...

Новичек) не могу написать программу, помогите плиз)
После окончания цикла формирования массива организуйте вывод массива и вывод результатов обработки массива. Результаты, например, могут...

немогу никак понять в чем ошибка=(помогите плиз!
есть вот такой вот код : #include &lt;iostream.h&gt; #include &lt;math.h&gt; void main(void) { int...

Помогите плиз с алгоритмом проги (переставить слова в строке)
Задача: В заданном тексте поменять местами каждые два соседних слова. Но нужно сделать, не используя библиотеки string. Допустим...

Помогите плиз, как вывести это чудо на экран?
Верхний вывожу из звездочек с помощью цикла, а как нижний вывести вместе с верхним никак не пойму вот верхний #include...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru