Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

Тааак...следующие особенности програмы...

Если написать выражения вида (2+15/3+2) програма так же неправильно считает. Блин...может у кого-нить есть рабочий вариант с числами любого разряда?

Ссылка на комментарий
Поделиться на другие сайты

Random:

Слить две упорядоченные последовательности чисел в одну. (при помощи рекурсии).
В следующий раз попросят это сделать при помощи тензорного исчисления, вероятно :(.
#include<stdio.h>int a[100],b[100],c[200]; void f(int i, int j){if(i+j+1>=0){if(i<0)c[i+j+1]=b[j--]; if(j<0)c[i+j+1]=a[i--];   if(i>=0&&j>=0)a[i]>=b[j]?(c[i+j+1]=a[i--]):(c[i+j+1]=b[j--]); f(i,j);}}main(){int k,m,n;printf("\ndimension of A? "); scanf("%d",&m);printf("\nA?\n"); for(k=0;k<m;k++)scanf("%d",&a[k]);printf("\ndimension of B? "); scanf("%d",&n);printf("\nB?\n"); for(k=0;k<n;k++)scanf("%d",&b[k]);   f(m-1,n-1);for(k=0;k<m+n;k++)printf("%8d",c[k]);getchar(); getchar();}
Ссылка на комментарий
Поделиться на другие сайты

Народ у меня программа пишет ошибку Function `getchar` should have a prototipe :)

что надо подправит надо чтоб запускало программу :(

Ссылка на комментарий
Поделиться на другие сайты

Dr0n4eG:

Вероятно, заголовочный файл с прототипом getchar(), например, stdio.h

Не подправлять его, конечно, а подключить командой #include<stdio.h>

Ссылка на комментарий
Поделиться на другие сайты

В следующий раз попросят это сделать при помощи тензорного исчисления, вероятно .

:( С чего ты взял?

А за программу спасибо...

Ссылка на комментарий
Поделиться на другие сайты

Random:

С чего ты взял?
Просто использование для простого слияния рекурсии делает программу намного сложнее по сравнению с такой же программой без рекурсии. А получившаяся программа будет в десятки раз медленнее выполняться.
Ссылка на комментарий
Поделиться на другие сайты

http://www.softboard.ru/index.php?s=&s...st&p=442423

Будут какие соображения?

Да, забыл добавить - на входе есть строка вида

xxx + xx + xxxx + x + xx =

x - цифра 0..9

Ссылка на комментарий
Поделиться на другие сайты

Будут какие соображения?
Да никаких. В таких случаях надо отлаживать, отладочных средств в интегрированной среде хватает, или хотя бы вставить распечатки промежуточных результатов. Или, если программа чужая, чем разбираться в чужой программе, проще брать алгоритм и писать заново самому.
Ссылка на комментарий
Поделиться на другие сайты

Мне по объектно-ориентированному прогораммированию задали написать программку, которая конвертировала бы файлы. Сам процесс конвертирования оформить в виде функции. Помогите пожалуйста, только учтите что я учусь только на 1 курсе и по дисциплине было всего лишь порядка 8-10 лекций... :cool:

Забыла сказать - язык с++

Ссылка на комментарий
Поделиться на другие сайты

Nata6enka:

Слишком абстрактное задание. То же самое, что задание преобразовать текст, не говоря какой и во что. Конечно, любой файл можно без труда изменить так, что его родной компьютер не узнает, но пока что задание выглядит как в сказке: пойди туда - не знаю куда, принеси то - не знаю что.

Например, берем файл, содержащий текст и конвертируем его в файл, в котором все цепочки пробелов заменены на одиночные пробелы - подходит?

Ссылка на комментарий
Поделиться на другие сайты

Из исходной строки a$ (на русском языке) вывести

в обратном алфавитном порядке различные имеющиеся гласные буквы.

Определить, сколько раз в строку a$ входят символы, перечисленные в

строковом массиве M$(n). Вывести строку и результаты расчета: символы и соответствующие числа.

Только с помощью простых операторов...если можно..

Ссылка на комментарий
Поделиться на другие сайты

Дана матрица X(n, m) целых чисел. Получить новую матрицу, элементы

столбцов которой меньше элементов исходной матрицы на величину

минимального элемента соответствующего столбца исходной матрицы.

Вывести исходную и полученную матрицы.

Все задачи в Qbasiq...Заранее Больщое спасибо!!!!

Ссылка на комментарий
Поделиться на другие сайты

dimka-xd:

Все задачи в Qbasiq...
А ведь был такой язык... В эпоху ручных рубил. Как раз каменные топоры изобретали...

Легендарные времена, когда DOS еще не было и Гейтс писал свой первый Бейсик для компьютера Альтаир с памятью в 4000 байт... Впрочем, QBASIC был написан потом, уже для DOS. Тогда имена языков писали большими буквами. И basic есть basic (базовый, простейший), а не basiq. Впрочем, писать на нем - как считать в римской системе записи чисел...

Вообще задачи такого уровня надо уметь решать самому. Плюс опять же рещать тут нечего, в основном ввод-вывод.

Задача 1.

g$ = "яюэыуойиёеаЯЮЭЫУОЙИЁЕА"PRINT "Введите строку "; : INPUT a$FOR i = 1 TO 11: FOR j = 1 TO LEN(a$)IF MID$(a$, j, 1) = MID$(g$, i, 1) OR MID$(a$, j, 1) = MID$(g$, i + 11, 1) THEN PRINT MID$(a$, j, 1): EXIT FORNEXT: NEXTPRINT "Исходная строка: ", a$ : PRINT : PRINT "Введите количество символов "; : INPUT n: DIM m$(n) PRINT : PRINT "Введите символы с Enter после ввода каждого символа: ": FOR i = 1 TO n: INPUT m$(i): NEXTPRINT "Частоты символов:"FOR i = 1 TO n: s = 0: FOR j = 1 TO LEN(a$): IF m$(i) = MID$(a$, j, 1) THEN s = s + 1NEXT: IF s <> 0 THEN PRINT m$(i); sNEXTEND

Задача 2.

INPUT "n: ", n: INPUT "m: ", m: PRINTDIM x(n, m)FOR i = 1 TO n: FOR j = 1 TO m: PRINT "X("; i; ","; j; ") "; : INPUT x(i, j): NEXT: NEXTPRINT : FOR i = 1 TO n: FOR j = 1 TO m: PRINT x(i, j); : NEXT: PRINT : NEXTFOR j = 1 TO m: s = x(1, j): FOR i = 1 TO n: IF s > x(i, j) THEN s = x(i, j) NEXTFOR i = 1 TO n: x(i, j) = x(i, j) - s: NEXTNEXTPRINT : FOR i = 1 TO n: FOR j = 1 TO m: PRINT x(i, j); : NEXT: PRINT : NEXTPRINTEND

P.S. При просмотре делай окно на весь экран, чтобы избежать лишних переносов строк - в отличие от более поздних языков, разделение исходного текста на строки в QBASIC имеет значение для работы программы.

Ссылка на комментарий
Поделиться на другие сайты

Nata6enka:

Слишком абстрактное задание. То же самое, что задание преобразовать текст, не говоря какой и во что. Конечно, любой файл можно без труда изменить так, что его родной компьютер не узнает, но пока что задание выглядит как в сказке: пойди туда - не знаю куда, принеси то - не знаю что.

Например, берем файл, содержащий текст и конвертируем его в файл, в котором все цепочки пробелов заменены на одиночные пробелы - подходит?

Не совсем... Скорее здесь имеется в виду преобразование типов файлов. Мне не нужна программа, а скорее только кусочки ее : описание классов, и функция, выполняющая конвертизацию.

Ссылка на комментарий
Поделиться на другие сайты

Nata6enka:

Конвертирование = конвертизация = преобразование

Правда, слова "конвертизация" практически не существует, оно встречается в Рунете 440 раз, в то время как конвертирование - 11 милллионов раз, но это просто по ходу обсуждения.

Ты хочешь написать функцию, выполняющую преобразование неизвестно чего в неизвестно что - одного неизвестного формата файла в другой неизвестный формат файла.

Конечно, C++ - мощный язык, и в нем абстрактную функцию преобразования файлов написать проще простого:

virtual void conv(char *,char *)=0;

Всё, функция написана! (кстати, C++ и тут остается верным себе - вместо того, чтобы обозначить абстрактную функцию каким-нибудь подходящим понятным словом вроде abstract, в нем используется ничего не говорящая ни уму, ни сердцу конструкция =0 вместо обычного тела функции в фигурных скобках).

Тут параметры char * - это описания строк - имен входного и выходного файлов. Но делать описанная нами абстрактная функция, ничего, естественно, не будет до того, как ты объяснишь компилятору, как она должна это конвертирование делать.

Слово "конвертирование" само по себе значит столько же, сколько слово "заклинание". Существуют сотни форматов файлов, и каждый вариант их конвертирования друг в друга - отдельный алгоритм.

Для примера сделаем какой-нибудь простенький вариант конвертирования. Ну, например, просто переписывание исходного текстового файла в выходной без изменений.

Итак, пишем класс для конвертирования, собственно, в нем у нас только функция (метод класса) конвертирования:

class conver {virtual void conv(char *, char *)=0;};

Тут у нас параметры метода - имена входного и выходного файлов.

Дальше можно создавать потомков этого класса, конкретизируя в них этот метод для определенных типов файлов.

Например,

#include <iostream.h>#include <fstream.h> // using namespace std;class conver  {virtual void conv(char *, char *)=0;}; class convert : public conver {public: void conv(char nif[], char nof[])  {ifstream ifs(nif); ofstream ofs(nof); char letter;   if (ifs.fail()) {cerr<<"error of opening of the file"<< endl; return;}  while(!ifs.eof()) {letter=ifs.get(); if(letter!=-1)ofs.put(letter);} };};main(){char nif[100],nof[100]; cout<<endl<<"name of the input file? "; cin>>nif; cout<<endl<<"name of the output file? "; cin>>nof; cout<<endl; convert c; c.conv(nif,nof); }

Конвертирование в этой программе, по сути, просто посимвольно переписывает содержание одного текстового файла в другой. Имена входного и выходного файлов задаются с клавиатуры.

Закомментированная строка using namespace std; может быть нужна для некоторых версий компиляторов.

Можно было записать это без определения абстрактного метода конвертирования и его дальнейшей конкретизации в классе-наследнике, используя сразу конкретный метод:

#include <iostream.h>#include <fstream.h> // using namespace std;class convert{public: void conv(char nif[], char nof[])  {ifstream ifs(nif); ofstream ofs(nof); char letter;   if (ifs.fail()) {cerr<<"error of opening of the file"<<endl; return;}  while(!ifs.eof()) {letter=ifs.get(); if(letter!=-1)ofs.put(letter); } };};main(){char nif[100],nof[100]; cout<<endl<<"name of the input file? "; cin>>nif; cout<<endl<<"name of the output file? "; cin>>nof; cout<<endl; convert c; c.conv(nif,nof); }

Естественно, для такой простой программы с тем же успехом можно было обойтись вообще без классов

#include <iostream.h>#include <fstream.h> // using namespace std;void conv(char nif[], char nof[])  {ifstream ifs(nif); ofstream ofs(nof); char letter;   if (ifs.fail()) {cerr<<"error of opening of the file"<<endl; return;}  while(!ifs.eof()) {letter=ifs.get(); if(letter!=-1)ofs.put(letter);} };main(){char nif[100],nof[100]; cout<<endl<<"name of the input file? "; cin>>nif; cout<<endl<<"name of the output file? "; cin>>nof; cout<<endl; conv(nif,nof); }

Сначала ты должна знать, что хочешь, и уметь описать это на русском языке. А потом уже ты переводишь с русского на понятный машине C++. Но перевести то, что ты не можешь описать на русском языке, невозможно.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Задача - написать програму в с++. В файл идет запись стрктуры (поля есть в примере), потом надо считать все записи и записать их обратно в етот же файл с условием, что если поле "year" меньше заданого, тогда ети записи не писать в файл.

Вот то что уже написано:

//---------------------------------------------------------------------------#include <conio.h>#include <stdlib.h>#include <iostream.h>#include <fstream.h>#include <iomanip.h>struct company {char Nazva[100];char PIB[30];char form[15];int year,count_work;float balance;};void PrintFile (ifstream &inCompany){cout<<setiosflags(ios::left)<<setw(15)<<"Name"<<setw(13)<<"PIB"<<setw(11)<<"Form"<<setw(10)<<"Rik"<<setw(6)<<"Work"<<setiosflags(ios::right)<<setw(10)<<"VNP"<<endl;company blankCompany;while (! inCompany.eof()){inCompany.read((char*)&blankCompany,sizeof(blankCompany));  cout<<setiosflags(ios::left)  <<setw(15)<<blankCompany.Nazva  <<setw(16)<<blankCompany.PIB<<setw(11)<<blankCompany.form  <<setw(10)<<blankCompany.year  <<setw(6)<<blankCompany.count_work  <<setiosflags(ios::showpoint|ios::right)  <<setw(11)<<setprecision(3)<<blankCompany.balance<<endl;  }}void main(){company blankCompany;ofstream outCompany ("G:\\baza.dat", ios::binary);if (!outCompany){  cerr<<"File can't open"<<endl;  exit(1);  } int count; cout<<"Write count of companies: "; cin>>count;for (int i=0; i<count; i++){	cout<<"Name of company:  "; cin.getline(blankCompany.Nazva,99);	cout<<"Name of director: "; cin.getline(blankCompany.PIB,29);	cout<<"Having form: "; cin.getline (blankCompany.form,14);	cout<<"Year of creating: "; cin>>blankCompany.year;	cout<<"Count of workers: "; cin>>blankCompany.count_work;	cout<<"Balanse: "; cin>>blankCompany.balance;outCompany.write((char*)&blankCompany,sizeof(blankCompany)); } outCompany.close(); ifstream inCompany ("G:\\baza.dat", ios::binary); PrintFile (inCompany); inCompany.close(); getch(); }

Да и еще, в етом примере почему-то все время проскакивает ввод Названия предприятия. Помню было что-то такое с потоком cin, но исправить не могу.

Да и еще, в етом примере почему-то все время проскакивает ввод Названия предприятия. Помню было что-то такое с потоком cin, но исправить не могу.

вот так склероз у меня. Сам уже задавал етот вопрос. Решение собсно если кому надо - здесь:

http://www.softboard.ru/index.php?s=&s...st&p=434264

Проблема с пропуском решена, но почему-то в вышеописано примере последняя запись пишется два раза в файл. Подскажите в чемь проблема. Ну и собственно само задание остается нерешенным

Ссылка на комментарий
Поделиться на другие сайты

Фуф, значит вот что-то состряпал. Не работает, но может легче будет кому-то помочь. Задание - запись нескольких структур "Предприятие" в файл. Сортировка предприятий за годом создания, удаление структур, в которых поле year меньше заданого.

//---------------------------------------------------------------------------#include <conio.h>#include <stdlib.h>#include <iostream.h>#include <fstream.h>#include <iomanip.h>struct company {char Nazva[100];char PIB[30];char form[15];int year,count_work;float balance;};void PrintFile (ifstream &inCompany){cout<<setiosflags(ios::left)<<setw(15)<<"Name"<<setw(13)<<"PIB"<<setw(11)<<"Form"<<setw(10)<<"Rik"<<setw(6)<<"Work"<<setiosflags(ios::right)<<setw(10)<<"VNP"<<endl;company blankCompany;while (! inCompany.eof()){inCompany.read((char*)&blankCompany,sizeof(blankCompany));  cout<<setiosflags(ios::left)  <<setw(15)<<blankCompany.Nazva  <<setw(16)<<blankCompany.PIB<<setw(11)<<blankCompany.form  <<setw(10)<<blankCompany.year  <<setw(6)<<blankCompany.count_work  <<setiosflags(ios::showpoint|ios::right)  <<setw(11)<<setprecision(3)<<blankCompany.balance<<endl;  }}void SortingByYear (ifstream &inCompany){company Change[20],Rev;int i=0;while (!inCompany.eof()){inCompany.read((char*)&Change[i],sizeof(Change[i]));i++;}inCompany.close();for (int j=0; j<i;j++)for (int k=0;k<=i;k++){if (Change[k].year>=Change[k+1].year){Rev=Change[k]; Change[k]=Change[k+1]; Change[k+1]=Rev;}}ofstream outCompany ("G:\\baza.dat", ios::binary);if (!outCompany){  cerr<<"File can't open"<<endl;  exit(1);  }  for (k=0; k<=i; k++)  outCompany.write((char*)&Change[k],sizeof(Change[k]));  outCompany.close();  }void main(){char skip;company blankCompany;ofstream outCompany ("G:\\baza.dat", ios::binary);if (!outCompany){  cerr<<"File can't open"<<endl;  exit(1);  } int count; cout<<"Write count of companies: "; cin>>count; // zaluwae kinec stri4ku v potoci, tomy po getline prohodut pysta stri4kafor (int i=0; i<count; i++){	cout<<"Name of company:  ";	 cin>>skip;	cin.putback(skip);	 cin.getline(blankCompany.Nazva,99);	cout<<"Name of director: "; cin.getline(blankCompany.PIB,29);	cout<<"Having form: "; cin.getline (blankCompany.form,14);	cout<<"Year of creating: "; cin>>blankCompany.year;	cout<<"Count of workers: "; cin>>blankCompany.count_work;	cout<<"Balanse: "; cin>>blankCompany.balance;outCompany.write((char*)&blankCompany,sizeof(blankCompany)); } outCompany.close(); ifstream inCompany ("G:\\baza.dat", ios::binary); PrintFile (inCompany); inCompany.close(); cout<<"\n\n"; inCompany.open("G:\\baza.dat", ios::binary); SortingByYear (inCompany); PrintFile(inCompany); int year; cout<<"\n\nInput year for clean:\n"; cin>>year; ofstream SortOutCompany("G:\\sortedbase.dat", ios::binary); if (!SortOutCompany){  cerr<<"File can't open"<<endl;  exit(1);  } while (! inCompany.eof()){ inCompany.read((char*)&blankCompany,sizeof(blankCompany)); if (blankCompany.year>=year) SortOutCompany.write((char*)&blankCompany,sizeof(blankCompany));} SortOutCompany.close(); inCompany.open("G:\\sortedbase.dat", ios::binary); PrintFile(inCompany); inCompany.close(); getch(); }

Проблемы:

1. Последняя структура записывается два раза в файл.(или считывается два раза?)

2. Не работает функция сортировки.

3. Не работает удаление структур с годом создание меньше заданого.

Прошу помощи в исправлении проблем.

Ссылка на комментарий
Поделиться на другие сайты

Составить прогрыммы на Си.

составить программу для рисования фигуры(цвет и размер(в пределах разумного) задается случайно) для каждой отдельно:

круга,

элипса,

квадрата,

ромба,

треугольника.

и если можно сделать мигание с периодисностью в 0,5-7 сек. (задается случайно)

Ссылка на комментарий
Поделиться на другие сайты

Random:

Для простоты напишу не пять программ, а одну на Turbo C, в которой рисуются все 5 фигур. Легко сделать пять копий и из каждой выкинуть рисование ненужных в данном варианте фигур. Рисование каждой фигуры - в отдельной строке, так что легко разобраться.

#include <graphics.h>#include <stdio.h>#include <time.h>int main(){int GDriver=VGA,GMode=VGAHI,ErrorCode; int j,r,t,col,c=0,x=320,y=240;initgraph(&GDriver,&GMode,""); ErrorCode=graphresult();if(ErrorCode!=grOk){printf("Graphics Error: %s\n",grapherrormsg(ErrorCode));getch();exit();}srand(time(NULL)); col=rand()%15; col=col+1;while(1){if(!c){r=rand(); r=r%200+40; col=rand()%15+1;} setcolor(c=col-c); circle(x,y,r); rectangle(x-r,y-r,x+r,y+r); ellipse(x,y,0,360,1.3*r,r); line(x-r,y,x,y-r);line(x,y-r,x+r,y);line(x+r,y,x,y+r);line(x,y+r,x-r,y); line(x,y-r,x-1.12*r,y+r);line(x-1.12*r,y+r,x+1.12*r,y+r);line(x+1.12*r,y+r,x,y-r); t=rand(); t=t%2000+100; for(j=0;j<t;j++){if(kbhit())exit(); delay(1000);}}closegraph();}

Выход из программы - нажатием любой клавиши.

С периодичностью мигания могут быть некоторые сложности. так как таймер Turbo C, рассчитанный на DOS, под Windows дает задержку на несколько порядков меньше, поэтому приходится число циклов таймера подбирать вручную. У меня на компьютере - более или менее в нужных временных рамках, на других может понадобиться изменить число в операторе delay(1000);

Кроме того, так как Turbo C не рассчитывался под жидкокристаллические дисплеи, в зависимости от используемого монитора могут не совсем точно выдерживаться соотношения размеров по вертикали и горизонтали.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

core_st:

Опять неизвестно чем набитая простыня, у меня она даже так, как у тебя сказано, не работает.

Пиши программы так: написал что-то максимально упрощенное, например, чтение записей в файл и вывод их оттуда, проверил - работает? Усложняем: добавляем сортировку записей в файле и вывод их из отсортированного файла. Работает? Усложняем: добавляем поиск в файле заданной записи и ее распечатку. Работает? Усложняем: добавляем поиск в файле и удаление из него заданной записи. Работает? Усложняем: поиск в файле и удаление нскольких записей. Работает? И так далее.

Нельзя писать сразу большую программу, в которой дюжина ошибок, и начинать разбираться сразу со всеми ошибками. За семью зайцами погонишься - ни одного не поймаешь.

А вопросы типа "я тут такое написал, что сам не могу разобраться, объясните, что не так", если речь не идет о нескольких строчках, обычно остаются без ответа :bye1:.

Процедуры распечатки записи из файла и удаления одной записи по заданному критерию к программе Radu записи записей в файл и их вывода из файла из этого поста у меня написаны тут, правда, на Pascal, но, может, и программа Radu и процедуры к ней из моего поста пригодятся.

P.S. В исходной поговорке речь шла о двух зайцах, но тут их явно больше :).

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Ок, тогда вот укрощенный пример. Запись и вывод работает. Но почему-то последняя запись печатается(или еще записывается) два раза. Здесь можно обьяснить почему? Вроде все правильно, но ошибку найти не могу.

//---------------------------------------------------------------------------#include <conio.h>#include <stdlib.h>#include <iostream.h>#include <fstream.h>#include <iomanip.h>struct company {char Nazva[100];char PIB[30];char form[15];int year,count_work;float balance;};void PrintFile (ifstream &inCompany){cout<<setiosflags(ios::left)<<setw(15)<<"Name"<<setw(13)<<"PIB"<<setw(11)<<"Form"<<setw(10)<<"Rik"<<setw(6)<<"Work"<<setiosflags(ios::right)<<setw(10)<<"VNP"<<endl;company blankCompany;while (!inCompany.eof()){inCompany.read((char*)&blankCompany,sizeof(blankCompany));  cout<<setiosflags(ios::left)  <<setw(15)<<blankCompany.Nazva  <<setw(16)<<blankCompany.PIB<<setw(11)<<blankCompany.form  <<setw(10)<<blankCompany.year  <<setw(6)<<blankCompany.count_work  <<setiosflags(ios::showpoint|ios::right)  <<setw(11)<<setprecision(3)<<blankCompany.balance<<endl;  }}void main(){char skip;company blankCompany;ofstream outCompany ("D:\\base.dat", ios::binary);if (!outCompany){  cerr<<"File can't open"<<endl;  exit(1);  } int count; cout<<"Write count of companies: "; cin>>count; // zaluwae kinec stri4ku v potoci, tomy po getline prohodut pysta stri4kafor (int i=0; i<count; i++){	cout<<"Name of company:  ";	cin>>skip;	cin.putback(skip);	cin.getline(blankCompany.Nazva,99);	cout<<"Name of director: "; cin.getline(blankCompany.PIB,29);	cout<<"Having form: "; cin.getline (blankCompany.form,14);	cout<<"Year of creating: "; cin>>blankCompany.year;	cout<<"Count of workers: "; cin>>blankCompany.count_work;	cout<<"Balanse: "; cin>>blankCompany.balance;outCompany.write((char*)&blankCompany,sizeof(blankCompany)); } outCompany.close(); ifstream inCompany; ("D:\\base.dat", ios::binary); PrintFile (inCompany); inCompany.close();getch();}
Ссылка на комментарий
Поделиться на другие сайты

core_st:

можно обьяснить почему? Вроде все правильно, но ошибку найти не могу.
Потому что метод eof() выдает истину не когда достигнут конец файла, а когда сделана попытка прочитать что-то за концом файла. Когда ты достиг конца файла, eof тебя об этом не предупредит. Только после безуспешной попытки чтения, когда буфер не изменится и последняя запись будет напечатана повторно, цикл while прервется. Фактически eof - сообщение об ошибке.

Вот и выкручивайся, легко придумать несколько способов :doh:. Это C++ :g:.

Ссылка на комментарий
Поделиться на другие сайты

Тролль:

Вот и выкручивайся, легко придумать несколько способов . Это C++

спасибо конечно. Тогда если не сложно наведи пример способа. Как не печатать два раза последнюю запись?

Ссылка на комментарий
Поделиться на другие сайты

Проблема решена пока-что. если кому надо:

while (1){inCompany.read((char*)&blankCompany,sizeof(blankCompany));  if(inCompany.eof()) break;

тоисть проверять после каждого считывания

Ссылка на комментарий
Поделиться на другие сайты

Народ помогите плиз....нужно сделать задачу на Delphi7.

Условие задачи: Дан текстовый файл А. Переписать его содержимое в файл В, перенося при этом в конец каждой строки все входящие в нее знаки препинания.

На форме два Memo для отображения исходного файла и итогового, кнопочка-диалог для выбора пути и выполнить....

ЗЫ не успеваю сделать, да и не до конца понимаю логику... :g: народ помогите плиз....

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...