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

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


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

Помогите написать программу в QBasic .....

Релеозовать програму

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

И еще надо какуюто БЛОК-Схему вывести..... :)

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

Я решила, практически задачу только в конце не идет, я создала файл в него записала с труктуру, теперь мне нужно удалить все элементы, у которых численность меньше заданной, добавить элемент после элемента с указанным номером. Для удаления/ добавления элементов в файл использо-вать вспомогательный файл. Помогите!

#include <STDLIB.h>

#include <conio.h>

#include <iostream.h>

#include <stdio.h>

typedef struct

{

char name[40];

char city [40];

long ch;

float s;

}

gos;

void main()

{

FILE *f;

gos h;

gos mas[5];

if ((f=fopen ("t.dat","w"))==NULL)

{

perror ("\n oshibka 1");

}

for (int i=1; i<=5;i++)

{

printf("name=");scanf("%s", &h.name);

printf("city=");scanf("%s", &h.city);

printf("ch=");scanf("%d", h.ch);

printf("s=");scanf("%d", h.s);

fwrite(&h, sizeof(gos),1,f);

}

fclose(f);

if ((f=fopen ("t.dat","rb"))==NULL)

{

perror ("\n oshibka 2");

}

exit(3);

i=0;

while (!feof && i<=3)

{

fread (&mas, sizeof(gos),1,f);

i++;

}

fclose(f);

if ((f=fopen ("t.dat","w+"))==NULL) exit(4);

{

perror ("\n oshibka 3");

}

char name[40];

fread (&name, sizeof(name),1,f);

char city[40];

fread (&city, sizeof(city),1,f);

long ch;

fread (&ch, sizeof(long),1,f);

float s;

fread (&s, sizeof(float),1,f);

FILE *l,

*ff;

if ((ff=fopen ("ff.dat","rw"))==NULL)

{

perror ("\n oshibka 1");

}

char buf[255];

while (fgets(buf,255,l)!=NULL)

{

if (ch>4000)

// fputs(*ch,ff);

fwrite(&ch, sizeof(gos),1,l);

}

fclose(ff); fclose(f);

getch();

}

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

ketrin:

Я решила, практически задачу только в конце не идет

На самом деле не идет с начала. Начиная с ввода данных. C очень терпим к ошибкам, с благодарностью проглотит почти любую, только сделает невесть что. Так что успешная компиляция почти ни о чем не говорит. Посмотрим, например, на ввод данных.

for (int i=1; i<=5;i++)

{

printf("name=");scanf("%s", &h.name);

printf("city=");scanf("%s", &h.city);

printf("ch=");scanf("%d", h.ch);

printf("s=");scanf("%d", h.s);

fwrite(&h, sizeof(gos),1,f);

}

Сначала неясно, зачем ввод ограничивается пятью наборами данных. Далее, в данном способе ввода name и city функция scanf("%s"... будет вводить строку до первого пробела, оставив остальное на следующую команду ввода, поэтому пробел во вводимом имени испортит весь последующий ввод данных. А при вводе ch и s в командах ввода нехватает указания адресов, поэтому значения переменных будут использоваться как их адреса. Кроме того, для ввода длинных целых нужна спецификация %ld, а не %d, а вместо %d для ввода float нужно %f.

Ну и так далее.

Вот мой вариантик программы, за исключением вставки дополнительной записи, я его написал в стиле С. Данные вводятся в файл f1.dat (ввод данных прекращается, если в ответ на запрос имени просто нажать Enter), затем запрашивается ввод граничной численности, данные снова вводятся, уже из созданного ранее файла, и для контроля выводятся на экран, а те из записей, где численность не меньше заданной, переписываются в файл f2.dat. Затем файл f2.dat переоткрывается для чтения и данные из него выводятся на экран, чтобы продемонстрировать правильность работы программы.

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

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

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

#include <stdio.h>int main(){struct{char name[40];char city [40];long ch;float s;}h;FILE *f1,*f2; long ch;if ((f1=fopen ("d1.dat","w"))==NULL)perror("\n oshibka 1");while(1){printf("\nname=");gets(h.name);if(!h.name[0])break;printf("city=");gets(h.city);printf("ch=");scanf("%ld",&h.ch);printf("s=");scanf("%f",&h.s);fwrite(&h, sizeof(h),1,f1);getchar();}fclose(f1);printf("\nMin. chislennost="); scanf("%ld", &ch); getchar();if ((f1=fopen("d1.dat","r"))==NULL)perror("\n oshibka 2");if ((f2=fopen("d2.dat","w"))==NULL)perror("\n oshibka 3");while(1){   fread(&h,sizeof(h),1,f1);  if(feof(f1))break;	  printf("\nname=%s\n",h.name);printf("city=%s\n",h.city);printf("ch=%ld\n",h.ch);printf("s=%f\n",h.s);if(h.ch>=ch)fwrite(&h, sizeof(h),1,f2);}fclose(f1);fclose(f2);printf("\n______________\n");if ((f2=fopen ("d2.dat","r"))==NULL)perror("\n oshibka 4");while(1){fread(&h,sizeof(h),1,f2);  if(feof(f2))break;	  printf("\nname=%s\n",h.name);printf("city=%s\n",h.city);printf("ch=%ld\n",h.ch);printf("s=%f\n",h.s);}fclose(f2);getchar(); }

P.S. Чуть подправил: у меня было сделано условие "оставить записи с численностью > заданной", изменил на ">= заданной"

.

Оффтоп
Я очень скептически отношусь к использованию в обучении непрограммистов языков C или C++. Точнее, считаю это издевательством. Чтобы работать с этими языками, каждая их команда должна стать личным другом программиста - у каждой свой "характер", каждая имеет свой собственный набор "подводных камней". Эти языки - скороговорка профессионалов. Они базируются на понимании того, что делает машина на уровне битов и байтов. C и C++ с самого начала были языками, созданные профессионалами для употребления в своем узком кругу. Pascal и Basic - другие.
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

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

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

zidfan:

на qbasic?
Слава Богу, нет. И на Коболе нет, и для Eniac'а (первая ЭВМ) нет... :no: Твои задания заставляют уходить в глубь веков...

Хорошо, перепишем на QBASIC...

DEFINT I-J, N: DEFLNG K-M: DEFSTR S: DIM k(27): CLSFOR i = 1 TO 27: k(i) = 0: NEXT: l = 1000000: s = "": k(1) = 1: PRINT "n "; : INPUT nFOR i = 1 TO n: m = 0: FOR j = 1 TO 27: k(j) = k(j) * i + m: m = k(j) \ l: k(j) = k(j) MOD l: NEXT: NEXTFOR j = 27 TO 1 STEP -1: s = s + RIGHT$("	  " + STR$(k(j)), 6): NEXTFOR j = 1 TO LEN(s): IF MID$(s, j, 1) = " " THEN MID$(s, j, 1) = "0"NEXTFOR j = 1 TO LEN(s): IF MID$(s, j, 1) > "0" THEN s = MID$(s, j, LEN(s) - j + 1): EXIT FORNEXTj = 1: WHILE MID$(s, j, 1) = "0": MID$(s, j, 1) = " ": j = j + 1: WENDPRINT : PRINT s: PRINTFOR i = LEN(s) TO 1 STEP -1:IF (LEN(s) - i) MOD 10 = 0 THEN PRINT "***********": WHILE LEN(INKEY$) = 0: WENDPRINT STRING$(VAL(MID$(s, i, 1)), MID$(s, i, 1)): NEXT

После ввода аргумента факториала вычисляет и выводит его значение, потом по нажатиям любой клавиши выводит горизонтальные гистограммы значений десятичных разрядов ("цифр") в записи числа по десятку за раз, начиная с младших разрядов. Работает до факториала 100 (это довольно большое число, почти 160 цифр).

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

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

Тролль: Привет!У меня опять проблемка появилось.

Алгоритм который находит минимальное значение в одном векторе.Решить обязательно нужно при помощи методике "Divide et Impere" .

Спасибо!

Решить обязательно нужно при помощи методике "Divide et Impera" .

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

Qbasic

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

Вывод: таблицы (текст,числа): горизонтальная гистограмма для первого пункта..

Очень нужно...

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

1) по исходной строке text$ определить кол-во слов, содержащих ровно n символов а$

2)для заданной строки text$ определить, какой символ встречается в ней чащё других. вывести сам символ и число вхождений в строку

3)сформировать и вывести таблицу умножения в 16-ричной системе исчисления. вывод - в виде таблицы на пересечении i-oй строки и j-ого столбца, в которой располагается результат перемножения 16-ричных цифр "i" и "j"

Вот :-[

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

Привет=)) Решите плиз задачки:

1)Сформировать одномер.массив из n элементов. Упорядочить егоповозростанию.

2)Сформировать матрицу (n x n). Возвести её в квадрат.

Парни пожалуйста помогите завтра здавать надо=))))

i

Уведомление:

Artur88: Если вам лень, ну или "некогда" изучать языки программирования - не поленитесь хоть прочитать шапку (1 сообщение) данной темы

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

dimka-xd:

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

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

DEFINT I-N: DIM name$(50), p$(50), k(50)OPEN "Data.txt" FOR INPUT AS #1FOR n = 1 TO 50IF EOF(1) THEN EXIT FORINPUT #1, name$(n), p$(n)NEXTCLOSE #1n = n - 1: l = LEN(p$(1))CLS : PRINT "Tablitza poseshchaemosti": PRINTFOR i = 1 TO nPRINT name$(i); : LOCATE , 35: PRINT p$(i)NEXTPRINT : PRINT "Dlja prodolzhenija nazhmite Enter": INPUT "", z$: CLSFOR i = 1 TO n: k(i) = 0: FOR j = 1 TO lIF MID$(p$(i), j, 1) = "0" THEN k(i) = k(i) + 1NEXT: NEXTPRINT "Poseshchaemostj po nomeram dnej": PRINTFOR j = 1 TO l: m = 0: FOR i = 1 TO nIF MID$(p$(i), j, 1) = "1" THEN m = m + 1NEXT: PRINT j, m: NEXTPRINT : PRINT "Dlja prodolzhenija nazhmite Enter": INPUT "", z$: CLSPRINT "Kolichestvo propushchennih dnej": PRINTFOR i = 1 TO n: PRINT name$(i); : LOCATE , 35: PRINT k(i): NEXTPRINT : PRINT "Dlja prodolzhenija nazhmite Enter": INPUT "", z$: CLSPRINT "Prisutstvovavshie v etom mesjaze studenti": PRINTFOR i = 1 TO n: IF k(i) <> l THEN PRINT name$(i)NEXTPRINT : PRINT "Dlja prodolzhenija nazhmite Enter": INPUT "", z$: CLSPRINT "Diagramma poseshchaemosti": PRINTFOR i = 1 TO n: PRINT name$(i); : LOCATE , 35:PRINT STRING$(l - k(i), "*"): NEXT

Данные программа берет из текстового файла с именем data.txt, в коем для теста, например, могут содержатся следующие строки (моей волей и ленью месяц состоит из пяти дней, желающие могут подкорректировать длину строк в файле соответственно своему календарю):

Altuhov Andrej10101Beznogov Boris10001Vislouhov Vitalij00010Grobovoj Garik00000

Тут 1 -присутствие, 0 - отсутствие.

P.S. Всякое совпадение имен и фамилий из примера с именами и фамилиями реальных людей является случайным.

Radu:

С румынского переходим на латынь? Правильно пишется Divide et impera. А на каком языке писать? Pascal, C, C++, в последнее время к высшей популярности явно стремится Qbasic, скоро будем сочинять инструкции по перетаскиванию камней Стоунхенджа :). Итак, уточни язык. Dixi et animam levavi!

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

prev:

1) по исходной строке text$ определить кол-во слов, содержащих ровно n символов а$
INPUT "text? ", text$: INPUT "a? ", a$: INPUT "n? ", n: text$ = " " + text$ + " "k = 0: j = 0: FOR i = 2 TO LEN(text$)IF MID$(text$, i - 1, 1) <= "@" AND MID$(text$, i, 1) > "@" THEN k = 1: m = 0IF MID$(text$, i - 1, 1) > "@" AND MID$(text$, i, 1) <= "@" THEN k = 0: IF m = n THEN j = j + 1IF k = 1 AND MID$(text$, i, 1) = a$ THEN m = m + 1NEXT: PRINT j: PRINT
2)для заданной строки text$ определить, какой символ встречается в ней чащё других. вывести сам символ и число вхождений в строку
А если есть несколько символов с макимальным числом вхождений?

Тогда надо или ничего не выводить, или выводить все такие символы. Выбрал последнее.

DIM k(16 TO 255): INPUT "text? ", text$: FOR i = 16 TO 255: k(i) = 0: NEXTFOR i = 1 TO LEN(text$): m = ASC(MID$(text$, i, 1)): k(m) = k(m) + 1: NEXTm = 0: FOR i = 16 TO 255: IF k(i) > m THEN m = k(i)NEXTFOR i = 16 TO 255: IF k(i) = m THEN PRINT CHR$(i); mNEXT
3)сформировать и вывести таблицу умножения в 16-ричной системе исчисления. вывод - в виде таблицы на пересечении i-oй строки и j-ого столбца, в которой располагается результат перемножения 16-ричных цифр "i" и "j"
CLS : a$ = "0123456789ABCDEF"FOR i = 1 TO 15: PRINT : FOR j = 1 TO 15PRINT USING "\ \"; MID$(a$, i * j \ 16 + 1, 1) + MID$(a$, i * j MOD 16 + 1, 1);NEXT: NEXT

dimka-xd:

А блок схему к этой задачи можно))))

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

Был бы Pascal, я для него знаю программы, которые сами по тексту на Паскале чертят соответствующую блок-схему, а для Бейсика уж, пожалуйста, вписывай команды программы в квадратики и ромбики сам. Задача для детского сада.

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

Radu:

Алгоритм который находит минимальное значение в одном векторе....Решить обязательно нужно при помощи методике "Divide et Impera" .
var i,n:integer; m:real; a:array[0..100]of real; s:string;procedure min(i,j:integer);var m1:real; d:integer;beginif i=j then m:=a[i]else if i=j-1 then if a[i]<a[j] then m:=a[i] else m:=a[j] else begin d:=(i+j)div 2; min(i,d); m1:=m; min(d+1,j); if m>m1 then m:=m1 end;end;beginwrite('Number of numbers? '); readln(n); write('Numbers? ');for i:=1 to n do read(a[i]); readln;m:=a[0]; min(1,n); writeln('Ave Caesar! Minimum est: ',m:15:5); readlnend.

P.S. Выкинь ненужное объявление s:string; - сначала объявил, потом оказалось, что строка не понадобилась, а выкинуть забыл.

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

помогите пожалста, в Qbasic 3 задачи сделать ато зачет не поставЯт:

1. написать программу, реализующую операции (+,-,*,/)с комплексными числами. Исходные числа и результат имеют вид "a+bi"

2. построить пирамиду(в изометрии)и расскрасить ее грани.

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

4.реализовать программу получения последовательности восьмеричных цифр. эквивалентной заданномуцелому десятичному числу n (суммарное число разрядов числа n не больше 30)

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

koketka15:

написать программу, реализующую операции (+,-,*,/)с комплексными числами. Исходные числа и результат имеют вид "a+bi"
DEF fnk% (s$) : STATIC i%FOR i% = 2 TO LEN(s$)IF MID$(s$, i% - 1, 1) >= "." AND MID$(s$, i%, 1) < "." THEN fnk% = i%NEXTEND DEFDEF fnr (s$) = VAL(LEFT$(s$, fnk%(s$) - 1))DEF fni (s$) = VAL(MID$(s$, fnk%(s$), LEN(s$) - fnk%(s$)))DEF fnstr$ (a, b) : STATIC c$c$ = STR$(b) + "i": IF MID$(c$, 1, 1) = " " THEN MID$(c$, 1, 1) = "+"c$ = STR$(a) + c$: IF MID$(c$, 1, 1) = " " THEN c$ = MID$(c$, 2)fnstr$ = c$END DEFDEF fnsum$ (a$, b$) = fnstr$(fnr(a$) + fnr(b$), fni(a$) + fni(b$))DEF fnsub$ (a$, b$) = fnstr$(fnr(a$) - fnr(b$), fni(a$) - fni(b$))DEF fnmul$ (a$, b$) : STATIC c, d, e, fc = fnr(a$): d = fni(a$): e = fnr(b$): f = fni(b$)fnmul$ = fnstr$(c * e - d * f, c * f + d * e)END DEFDEF fndiv$ (a$, b$) : STATIC c, d, e, f, gc = fnr(a$): d = fni(a$): e = fnr(b$): f = fni(b$): g = e * e + f * ffndiv$ = fnstr$((c * e + d * f) / g, (d * e - c * f) / g)END DEFINPUT "a"; t$: INPUT "b"; r$: PRINTPRINT "a+b="; fnsum$(t$, r$) PRINT "a-b="; fnsub$(t$, r$)PRINT "a*b="; fnmul$(t$, r$) PRINT "a/b="; fndiv$(t$, r$)PRINT
реализовать программу получения последовательности восьмеричных цифр. эквивалентной заданномуцелому десятичному числу n (суммарное число разрядов числа n не больше 30)
DEFINT A-Z: nl = 5: d = 8: DIM a(100)INPUT s$: nl = LEN(s$) FOR i = 1 TO nl: a(nl + 1 - i) = ASC(MID$(s$, i, 1)) - 48: NEXTFOR j = 1 TO 1.2 * nl + 1: r = 0 FOR i = nl TO 1 STEP -1: r = r * 10 + a(i): a(i) = r \ d: r = r MOD d: NEXT t$ = CHR$(r + 48) + t$NEXTFOR i = 1 TO LEN(t$): IF MID$(t$, i, 1) <> "0" THEN EXIT FORNEXT: PRINT RIGHT$(t$, LEN(t$) - i + 1)END

Остальные задачи - это в основном геометрия плюс рисование командами Бейсика. Точка, точка, два крючочка... :bleh: Их делать не буду, наверняка вам давали примеры рисования.

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

Я скорее всего задаю глупый вопрос но всё же для меня он нужный :bleh: "У меня все программки в формате СРР и запускать их можно токлько через Борланд, а как сделать чтобы они были в формате ЕХЕ и работали когда на них 2 раза нажимаеш ?" :)

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

Dr0n4eG:

Это скорее вопрос в тему Помогите с C++. Файлы программ в формате exe автоматически создаются при запуске cpp, они хранятся по умолчанию в папке Projects. Оттуда их можно скопировать или переместить в любую другую папку.

P.S. Не вздумай выкинуть после этого cpp как ненужный. Из cpp (файл исходного кода на C++) можно сделать exe (файл с кодами команд процессора), наоборот (для корректировки программы или просто посмотреть исходный код) - нельзя.

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

Чтобы сделать ЕХЕ более-менее переносимым нужно в опцыях проекта в закладке "пакеты" убрать метку с "Build with runtime packages":

4150d4f684e2c7dd765f10fdc96a.jpeg\

И даже если всё ето проделать, для запуска программы на других комп'ютерах, будут нужны две DLL'ки:

borlndmm.dll

cc3260mt.dll

их можна найти в папке:

C:\Program Files\Borland\CBuilder6\Bin

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

Ребят решите пожалуйста оставшиеся две задачи ! препод ужасно объясняет, мы ничего не понимаем, а сдавать надо срочно :D

!

Предупреждение:

Artur88: что вы хотите сказать при использовании капс лока ? Так же перечитываем шапку данной темы в частности уведомление в 1 сообщении

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

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

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

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

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

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

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

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

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

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

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



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