powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите исправить ошибки в программах на С++.
25 сообщений из 83, страница 2 из 4
Помогите исправить ошибки в программах на С++.
    #33600857
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
char *charBuf;
char* Rus(const char* text)
{
 if(charBuf!=NULL)
	 delete [] charBuf;
 charBuf=(char *)calloc( 256 ,sizeof(char));
 CharToOem(text,charBuf);
 return charBuf;
}


Эта палучша будит, правда нириинтирабильна нифига, и почему-то на больше чем 255 символов ниработаит, но уже прагресс.
Ище нипанятна пачиму нада перевыдилять буфир пастаяннай длины фсе время, ну да ладна, машина жилезная, пусть работаит !!
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600861
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тожи написал свой вариант. Он дажи работаит инагда. Но я иво вам нипакажу. Пусть студент сам думаит. А патом пакажу.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600867
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parenyokЕсли что-то покажется странным, то сообщаю, что я писал программу на основе примера из книги Павловской стр. 74-75.

Кстати у Павловской я лично учился С (тогда еще С++ не преподавали). Она мне заочно 5 поставила.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600887
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас БарабасВ каком стандарте написано, что строка "Введите значение х!=0:" - только для чтения ?Ни один стандарт не выдерживает проверки жизнью :)
А то что такие строки только для чтения можно легко убедиться например при помощи такого кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
char *foo(char *str) {
   int i;
   for(i= 0 ; i< 10 ; i++) {
     str[i] = i+ 48 ;
   }
}

void main() {
   printf(foo("abcdefghijklmnop"));
   printf("\n");

   printf(foo("ABCD"));
   printf("\n");

   printf(foo("QWERTYUIOPASDFGH"));
   printf("\n");
}
Запусти, и посмотри где упадет :)
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600920
cpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpp
Гость
авторchar *foo(char *str) {
int i;
for(i=0; i<10; i++) {
str = i+48;
}
}


во-первых забыл return str.
А то так она валиться будет всякий раз при printf-е непонятно чего.
а с retrun-ом тоже завалится - но правильнее.
строковые константы изменять вообще круто
Давайте еще напишем

strcpy("бим","бом")

и посмотрим что получицца :-)
И не может быть шоб в стандарте не было про то што константы read only.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600935
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cppво-первых забыл return str.Ну забыл, ну склероз, ну и что? :)

cppДавайте еще напишем
strcpy("бим","бом")
и посмотрим что получицца :-) Лучше strcpy("бим","бомба"); :)

cppИ не может быть шоб в стандарте не было про то што константы read only.Вот сейчас просканировал ANSI C по диагонали - не нашел. А на практике встречал несколько подходов - помещение таких текстов в сегменты edata и в code. А если в тексте программы есть строчки типа:
Код: plaintext
1.
char *s1 = "Hello world!";
char *s2 = "world!";
То компилятор может сделать s2 == s1+6.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600964
cpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpp
Гость
модификация строковой константы относится к случаю неопределенного поведения компилятора.
Поэтому где-то работает, где-то core dumped. Вывод: фтопку :-)
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600967
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где ж наш париньок ?
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600974
cpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpp
Гость
нету иво патамушта пара падоть ф корку и спать
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33601036
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
char *charBuf;
char* Rus(const char* text)
{
 if(charBuf!=NULL)
	 delete [] charBuf;
 charBuf=(char *)calloc( 256 ,sizeof(char));
 CharToOem(text,charBuf);
 return charBuf;
}


Эта палучша будит, правда нириинтирабильна нифига, и почему-то на больше чем 255 символов ниработаит, но уже прагресс.
Ище нипанятна пачиму нада перевыдилять буфир пастаяннай длины фсе время, ну да ладна, машина жилезная, пусть работаит !!
Ты понимаешь, когда я писал этот код был конец рабочего дня, когда все мысли... Ну, Вы понимаете о чем я (с)...
Естественно, что:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
char* Rus(const char* text)
{
 char *tmp_string=(char*)text;
 char *charBuf;
 charBuf=new char[strlen(text)];
 CharToOem(tmp_string,charBuf);
 tmp_string=charBuf;
 return tmp_string;
}

получше будет...
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33601049
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl printf(foo("ABCD"));
printf("\n");
Мне достаточно мозга, чтобы не запускать это :)
Извини, но это другая песня. Я говорил о _возможности_ изменять строковые "константы". Бильдер позволяет - ничего плохого в этом не вижу. Надо просто это знать и учитывать
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33601052
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cppмодификация строковой константы относится к случаю неопределенного поведения компилятора. C++Builder 5 helpMerge duplicate strings Causes the compiler to merge two literal strings when one matches another. This produces smaller programs (at the expense of a slightly longer compile time), but can introduce errors if you modify one string .Стало быть возможность менять содержимое строковой константы заложена в компилятор. О возможных последствиях предупреждают. А возможность такая жизнь облегчает, потому как избавляет от бестолковых strcpy и лишних выделений памяти (и последующих ее освобождений)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33601171
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э! Пацаны! Чё вам делать что ли нечего? Блин, забралися в чужую тему и базарят себе непонятно о чём как бабки на базаре! :-)))) Тут, по-моему, кто-то говорил, что времени у многих нэхватат. Значит вот как да? Базарить в чужих темах время есть, а помочь бедному студенту - времени нет, да?
MasterZivА где ж наш париньок ?
cppнету иво патамушта пара падоть ф корку и спатьА по сопатке??? Шо, соскучились по мне, да? Тогда вот вам задание, чтобы не скучали.
Код: plaintext
1.
2.
3.
Задание: написать программу для решения поставленной задачи (см. варианты заданий). На экран вывести исходный файл (а также преобразованный, если такой требуется получить по заданию). Имена необходимых для работы файлов должны задаваться в командной строке при вызове программы. 


Дан файл f, содержащий действительные числа. Вычислить среднее арифметическое всех чисел, записанных в файле.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33601192
cpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpp
Гость
Карабас БарабасСтало быть возможность менять содержимое строковой константы заложена в компилятор. О возможных последствиях предупреждают. А возможность такая жизнь облегчает, потому как избавляет от бестолковых strcpy и лишних выделений памяти (и последующих ее освобождений)
Лучше их все-таки избегать. Хорошо, что Builder это докуентирует. Но это непереносимое решение.


parenyok Э! Пацаны! Чё вам делать что ли нечего? Блин, забралися в чужую тему и базарят себе непонятно о чём как бабки на базаре! :-))))
мы выясняем космические проблемы, а не работаем страничкой ответов к задачнику.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33601265
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хэ-Хэ-Хэ... Так создайте кто-нибудь тему "Космические проблемы" или ещё как-нибудь. Нет-нет. Лучше так: "Общество непомогающих умников!" \:-| И болтайте там! А ета тема для тех, кто согласен мне помогать!!!
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33601513
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже опять чья-то провокация, чтобы вынудить нас обзавестись модератором
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33601523
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас БарабасПохоже опять чья-то провокация, чтобы вынудить нас обзавестись модератором
Posted via ActualForum NNTP Server 1.3

Ну ежели пошел напрынцып, остается одно
!!! нисдаватся !!!
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33601772
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parenyokХэ-Хэ-Хэ... Так создайте кто-нибудь тему "Космические проблемы" или ещё как-нибудь. Нет-нет. Лучше так: "Общество непомогающих умников!" \:-| И болтайте там! А ета тема для тех, кто согласен мне помогать!!!
Хамишь, парниша...

parenyok
Задание: написать программу для решения поставленной задачи (см. варианты заданий). На экран вывести исходный файл (а также преобразованный, если такой требуется получить по заданию). Имена необходимых для работы файлов должны задаваться в командной строке при вызове программы.

Дан файл f, содержащий действительные числа. Вычислить среднее арифметическое всех чисел, записанных в файле.

Ты из какого файла читать будешь? Из текстового или бинарного? Это, как говорят в Одессе, две большие разницы...

Алгоритм следующий:
1. Открываешь файл
2. Считываешь очередное число
3. +1 к счетчику считанных чисел
4. + считанное число к сумме считанных чисел
5. Если достигнут конец файла, выичсляем среднее арифметическое
и выдаем на консоль

"Пилите, Шура. Пилите" (с)
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33603286
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parenyok Шо, соскучились по мне, да? Тогда вот вам задание, чтобы не скучали.

Ты ище с придыдущим заданием нисправился, с заданием номир 2.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33603296
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станслав C.
Алгоритм следующий:
1. Открываешь файл
2. Считываешь очередное число
3. +1 к счетчику считанных чисел
4. + считанное число к сумме считанных чисел
5. Если достигнут конец файла, выичсляем среднее арифметическое
и выдаем на консоль



Алгаритм гаразда прощи. (0) аткрываишь книшку (1) читаишь (2) пишишь праграмму.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33604067
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C. parenyokХэ-Хэ-Хэ... Так создайте кто-нибудь тему "Космические проблемы" или ещё как-нибудь. Нет-нет. Лучше так: "Общество непомогающих умников!" \:-| И болтайте там! А ета тема для тех, кто согласен мне помогать!!!
Хамишь, парниша...Хэк... А чё ещё делать если вы не магёте в одной теме болтать. А Вам обязательно надо в чужую тему залезть. А спрашивается для чего? Для того, чтобы помочь тому, кто не может понять как ошибку в программе исправить (Повторяю: "Не написать программу, а всего лишь навсего исправить в ней ошибку!!!")? Нет! А для чего? Для того, чтобы написать "оскорбительное" письмо в адрес того, кому отказал в предыдущих темах, тем самым отбив желание помочь у тех, кто сначала захотел помочь такому как я! Ну и кто Вы после этого?!

parenyok
Задание: написать программу для решения поставленной задачи (см. варианты заданий). На экран вывести исходный файл (а также преобразованный, если такой требуется получить по заданию). Имена необходимых для работы файлов должны задаваться в командной строке при вызове программы.

Дан файл f, содержащий действительные числа. Вычислить среднее арифметическое всех чисел, записанных в файле.

Ты из какого файла читать будешь? Из текстового или бинарного? Это, как говорят в Одессе, две большие разницы...[/quot]Да вот я тоже, кстати, задался этим вопросом... Ну, по-моему, в этой программе без разницы.

Станислав C.Алгоритм следующий:
1. Открываешь файл
2. Считываешь очередное число
3. +1 к счетчику считанных чисел
4. + считанное число к сумме считанных чисел
5. Если достигнут конец файла, выичсляем среднее арифметическое
и выдаем на консольНу здесь мне всё понятно кроме 1-го... У Павловской про файлы как-то не понятно написано... Объясни.
MasterZivТы ище с придыдущим заданием нисправился, с заданием номир 2.Вспомнила бабка как девкой была... Слышь? А у тебя по руссичу чё? Так как ты, даже мой младшой братишка не пишет... %-D
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33604146
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parenyokУ Павловской про файлы как-то не понятно написано... Объясни.

Легко...
Абстрактно рассматриваем файл как магнитную ленту (бобину, а не кассету), на каждом участке которой записано какое-то значение. Считывающая головка =указатель позиции в файле.

1. При открытии файла (=вставке новой бобины с пленкой) считывающая головка помещается на начало данных (первый байт в файле).
2. При каждой операции чтения-записи головка перемещается на столько позиций (с учетом указанного при открытии файла режима текстовый или бинарный), сколько запрошено для данных (параметры 2 и 3 в функции fread()). 3. При достижении конца файла (бобины) и попытке последующего чтения выдается ошибка...

Лучше всегда файлы рассматривать так, как я описал выше (файл с последовательным доступом). Файлы с произвольным доступом - от лукавого...

Классы - лишь удобная оболочка над этим алгоритмом... Я бы рекомендовал сначала "пощупать" это руками...

В программе пишем:
Код: plaintext
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.
#include <stdio.h>
#include <fcntl.h>
#include <io.h>

//Имеем структуру FILE, которая сохраняет информацию о текущем состоянии 
//потока. (описание содержится в STDIO.H).
FILE *stream;
int hr;
BYTE buffer[ 1024 ];
....
//открываем файл для чтения
  if((stream=fopen((LPCTSTR)FileName,"rb"))!=NULL) 
   {
    //Если файл открыт и до конца файла не добрались
    while(!feof(stream))
    {
     //Читаем данные из файла в буфер
     hr=fread(buffer,sizeof(BYTE), 1 ,stream);

     //обрабатываем считанное значение из буфера
     func(buffer);
    }

   //закрываем открытый файл
   fclose(stream);
  }

Более подробно см. описание соответствующих команд в справке.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33606969
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C.
В программе пишем:
Код: plaintext
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.
#include <stdio.h>
#include <fcntl.h>
#include <io.h>

//Имеем структуру FILE, которая сохраняет информацию о текущем состоянии 
//потока. (описание содержится в STDIO.H).
FILE *stream;
int hr;
BYTE buffer[ 1024 ];
....
//открываем файл для чтения
  if((stream=fopen((LPCTSTR)FileName,"rb"))!=NULL) 
   {
    //Если файл открыт и до конца файла не добрались
    while(!feof(stream))
    {
     //Читаем данные из файла в буфер
     hr=fread(buffer,sizeof(BYTE), 1 ,stream);

     //обрабатываем считанное значение из буфера
     func(buffer);
    }

   //закрываем открытый файл
   fclose(stream);
  }

Так... А где писать вычисления? Между hr=fread(buffer,sizeof(BYTE),1,stream); и func(buffer);?
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33606976
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parenyok
Так... А где писать вычисления? Между hr=fread(buffer,sizeof(BYTE),1,stream); и func(buffer);?
Я не понял: ты придуриваешься или как?
ведь ясно же написано:
Код: plaintext
1.
2.
     //обрабатываем считанное значение из буфера
     func(buffer);
т.е. в приведенном примере функция func() и производит все вычисления...

Хотя, если хочешь, можно написать вычисления прямо в цикле (вместо вызова функции func()). Это на любителя...

И вообще, приведенный мной код - только схема (скелет, "рыба") проведения реальной работы с файлом. Все остальное наполнение (прикрепить к скелету мышцы, обтянуть кожей, т.е. написать необходимые функции и довести их "до ума") тебе надо делать самому...
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33606981
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пацаны! Чё за глюк в 6-ом билдере?! Короче, вчера сделал 5-ю лабу. Проверил работоспособность - вроде работает нормально. Сегодня решил ещё раз проверить свои прошлые лабы, чтобы исправить кое-какие недочёты. Всё. Запускаю через Far первую лабу, а мне вместо неё запускается снова 5-я, хотя я её не запускал. А первая запускается только после того, как я сделаю в ней ошибку. Например, уберу одну фигурную скобку, запущу, компилятор заругается, я скобку востановлю и только после этого запускается первая.
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 2 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите исправить ошибки в программах на С++.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]