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

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


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

provirt:

Хм, у меня все работает нормально. Какой у тебя компилятор?

На всякий случай прикладываю скомпилированный файл, проверь. Странно, что программа не может найти файл t2.txt (или как ты его называешь в ответ на вопрос программы, название неважно), который перед записью в него должен был быть создан командой rewrite(f2); А сам этот файл появляется?

Попробуй запустить программу и файлы из папки с каким-нибудь простым именем, например, например, создай папку C:\ttt и помести файлы туда.

Еще можно попробовать ввести на всякий случай после команды rewrite(f2); небольшую задержку, например, командой for i:=1 to 20000 do b:=not b;

Еще: попробуй запускать программу в отладочном режиме, например, из окна среды Turbo Pascal при нажатиях вместо Run клавиши F8 программа будет выполняться построчно, по каждому нажатию одна строка с подсветкой в тексте программы.

pr.zip

pr.zip

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

Тролль:

А сам этот файл появляется?

нет :)

Попробуй запустить программу и файлы из папки с каким-нибудь простым именем, например, например, создай папку C:\ttt и помести файлы туда.

Тоже файл не появляется и пишет ошибку...

Еще можно попробовать ввести на всякий случай после команды rewrite(f2); небольшую задержку, например, командой for i:=1 to 20000 do b:=not b;

Еще: попробуй запускать программу в отладочном режиме, например, из окна среды Turbo Pascal при нажатиях вместо Run клавиши F8 программа будет выполняться построчно, по каждому нажатию одна строка с подсветкой в тексте программы.

Тоже не работает... :)

Я вот думаю.. может у меня что то с паскалем?!

P.s в отладочном режиме помоему пишет что ошибка в строке

writeln; reset(f1); rewrite(f2);
Ссылка на комментарий
Поделиться на другие сайты

P.s в отладочном режиме помоему пишет что ошибка в строке

P.s.s точнее на ней останавливается и все, дальше не идет..

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

Ну, что остается делать? Явно не работает rewrite(f2); Почему, неясно, тем паче что у меня работает. Значит, надо начинать бомбить проблему проверками: переписать эту и соседние строки заново, при этом есть смысл выделить злосчастную команду в отдельную строку для уточнения пошаговой проверки, подставить в rewrite имя файла явно (если сработает, проблема может быть в строке с именем файла или assign), попробовать работу rewrite отдельно (например, программа var f:text; begin assign(f,'test'); rewrite(f) end. должна создавать файл test), действительно попробовать другой компилятор...

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

Опять я. Такое вот задание. Дана строка из n символов. Вводим текст в ету строку. Задание: если у слова парный номер (2,4,6) то перевернуть его задом наперед, если непарный - удалить его из строки.

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

core:

var t,s:string; i,j,k:integer; b:boolean;beginwriteln('Ishodnaja stroka? '); readln(t);k:=0; t:=t+' '; s:=''; b:=false; for i:=1 to length(t) doif t[i]>='0' then k:=k+1else begin if k<>0 then 	   begin if b then for j:=i-1 downto i-k do s:=s+t[j]; 	   k:=0; b:=not b end;    s:=s+t[i] end;writeln(s); readlnend.
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

core:

#include <stdio.h>int main(){char t[255]; int i,j,k,m,b; char s[255];puts("Ishodnaja stroka? "); gets(t+1); k=m=b=0; t[0]=' ';for(i=1;t[i-1];i++) if(t[i]>='0')k++; else{if(k){if(b)for(j=i-1;j>=i-k;j--)s[m++]=t[j];k=0;b=!b;}s[m++]=t[i];}s[m]=0; puts(s); getchar();}
Ссылка на комментарий
Поделиться на другие сайты

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

#include <iostream.h>#include <string.h>#include <conio.h>#define n 150char text[n],obmin[15];int i,m=0,k=0,j;void main(){clrscr();text[0]=' ';cout<<"\nVvedit vawy stri4ky iz "<<n<<" sumvoliv:\n";cin.getline (text,n);text[n]=' ';for (i=0;i<=n;i++){if (text[i]==' ') {m=0;k++;m=i+1;if (k%2==0) {j=0;while (text[m]!=' ')obmin[j++]=text[m++];obmin[j+1]='\0';cout<<strrev(obmin)<<" ";}}};getch();}
Ссылка на комментарий
Поделиться на другие сайты

core:

Так это ж не на C! Чего ж ты меня с C мучил? Ты уж определись, на каком языке тебе надо. У C++ масса возможностей, которых нет у C. Не говоря уж про неполную совместимость.

как добавить пробел в начало, чтоб остальные символы посунулись)?
Это по-разному делается в C и в C++.
и вот еще - в последнем слове текста не выводится последняя буква
Добавь в конец строки пробел - может, сработает.

P.S. Пробел в начале у тебя уже стоит, просто он затирается при вводе. Замени cin.getline (text,n); на cin.getline (text+1,n);

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

У меня есть задача. Все никак не могу ее решить. =(

Дано: натуральное число n, целые числа а1,.....,а25, b1,.....bn.

Среди них нет повторяющихся чисел.

Верно ли что все члены последовательности а1,.....,а25 входят в пооследовательность b1,.....bn.

---

Пробывал ее решить, но не могу. код ниже, работает, но находит только одно совпадение, а потом, при выводе на экран, просто дублирует его н-е количесто раз Подскажите как решить задачу. Код на С++ Зараннее благодарен за любую помощь.

#include "stdafx.h"#include "iostream"#include "math.h"#include "conio.h"#include "stdlib.h"using namespace System;using namespace std;int main(array<System::String ^> ^args){int n,i,p,x,y;otv=0;int iArr[24];int iSeArr[50];cin>>n;for (i=0; i<25; i++){	iArr[i]=rand()%50+1; // массив заполняемый рандомом от 1 до 50	Console::WriteLine("Число = "+iArr[i]);}Console::WriteLine(); for (p=0; p<n; p++){	iSeArr[p]=rand()%70+1; // массив заполняемый рандомом от 1 до 70	Console::WriteLine("Число = "+iSeArr[p]);} //x=0; asd: y=0; for (p=0; p<=n; p++) {		 if(iArr[x]==iSeArr[y])	 {		 	 Console::WriteLine("УРА!!! номер"+x+" Совпадает с "+y);					  Console::WriteLine("УРА!!! есть совпадение"+iSeArr[y]+"="+iArr[x]);		 //break;			 		 }	 else	 {		 //Console::WriteLine("НЕТ!!!");		 y++;	 }	 if(y==n)	 {   		 x++;		 if (x==25)		 {		 break;		 }		 else		 {			 goto asd;		 }	 } }Console::ReadLine();return 0;}
Изменено пользователем DoctorG
Ссылка на комментарий
Поделиться на другие сайты

DoctorG:

Я эту задачу решу и без компьютера :) . Ответ отрицательный. Если среди чисел а1,.....,а25, b1,.....bn нет повторяющихся, то никакие совпадения невозможны :) .

Правильно было бы сказать, что в каждой последовательности нет повторяющихся чисел, а так получается, что их вообще нет.

Ну да ладно. Будем проверять, все ли числа первой последовательности входят во вторую.

Что-то у тебя очень сложно... При условии, что во второй последовательности нет повторяющихся чисел, будет 25 совпадений.

#include <iostream.h>main(){const int m=25; int n,a[m],b[1000],i,j,c=0;; cout<<"a ? "; for(i=0;i<m;i++)cin>>a[i]; cout<<"n ? "; cin>>n; cout<<"b ? ";  for(i=0;i<n;i++)cin>>b[i];  for(i=0;i<m;i++)for(j=0;j<n;j++)if(a[i]==b[j])c++; cout<<(c==m?"Yes!":"No!")<<endl; getchar(); getchar(); } 

Для проверки, чтобы не вводить 25 чисел, сделай в тексте программы m равным, скажем, 3, а не 25.

При вводе последовательностей числа разделяются пробелами (можно, впрочем, и Enter), завершается ввод каждой последовательности Enter.

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

Чет я действительно все запутал )))

Я во тут

тоже решение накидал, но все же сомневаюсь в его верности. Не подскажешь что тут не так?

// 338e2.cpp : main project file.#include "stdafx.h"#include "iostream"#include "math.h"#include "conio.h"#include "stdlib.h"using namespace System;using namespace std;int main(array<System::String ^> ^args){setlocale(LC_CTYPE, "Russian");int n,i,j,k,p;k=0;int iArr[25];int iSeArr[50];Console::WriteLine("Введите n");cin>>n;for (i=0; i<25; i++){ iArr[i]=rand()%50+1; // массив от 0 до 50Console::WriteLine("Число = "+iArr[i]); }Console::WriteLine();for (p=0; p<n; p++){iSeArr[p]=rand()%50+1; // массив от 1 до 50	Console::WriteLine("Число = "+iSeArr[p]);}for (i=0; i<25; i++){ for (j=0; j<n; j++) {  if (iArr[i]==iSeArr[j])    k=k+1;  Console::WriteLine(iArr[i]+"="+iSeArr[j]); }}if (k==25) Console::WriteLine("Да");else Console::WriteLine("Нет");Console::ReadLine();return 0;}
Ссылка на комментарий
Поделиться на другие сайты

Мне нужна програма в С++ , чтобы на икране была виведина буква (М) симолами размером масива 10*10 к примеру:

__________ ,да и буква должна бить под 270°. А таже в этой програмке должны быть ешо пара пунктов:

_00000000_ 1.Поворот буквы на 90°.

_______0__ 2.Поворот буквы на 180°.

______0___ 3.Поворот буквы на 270°.

_____0____ 4.Поворот буквы на 360°.

______0___ 5.Ввод своей буквы.

_______0_

_00000000_

__________

__________

p.s.(зарание блаодарен :) )

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

DoctorG:

Ты собирался выводить сообщение при каждом совпадении? Тогда одна из скобок в

for (i=0; i<25; i++){ for (j=0; j<n; j++) {  if (iArr[i]==iSeArr[j])    k=k+1;  Console::WriteLine(iArr[i]+"="+iSeArr[j]); }}if (k==25) Console::WriteLine("Да");else Console::WriteLine("Нет");

не на месте.

У тебя сообщение выводится для всех сравнений элементов, причем всегда пишется, что они равны, независимо от того, так это или не так.

Правильно будет

for (i=0; i<25; i++)for (j=0; j<n; j++)  if (iArr[i]==iSeArr[j]){k=k+1;Console::WriteLine(iArr[i]+"="+iSeArr[j]);}if (k==25) Console::WriteLine("Да"); else Console::WriteLine("Нет");

Хотя вообще зачем устраивать на экране шум и сообщать о каждом совпадении? Достаточно конечного результата. И избегай лишних скобок, они запутывают. И чего тебе так полюбился громоздкий Console::WriteLine, а не обычный cout?

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

Спасибо. Еще вопрос.

Допустим у меня есть некоторое число в переменной. Допустим 342. Так вот, как вывести его на экран, в виде текста

(Триста сорок два)?

Я так понимаю, это нужно расматривать каждую цифру состовляющую число по отдельности, а потом, а вот что потом?

Еще нашел функцию toascii. Но вот только ничего не понял, о том как ее использовать

К примеру

int main(array<System::String ^> ^args){ setlocale(LC_CTYPE, "Russian");	char *s = "один";	toascii(*s);	Console::WriteLine(s);Console::ReadLine();return 0;}

программа выводит на экран True. И все.

А при таком вот коде

int s = 1;	toascii(s);	Console::WriteLine(s);

1.

А надо чтобы вывела на экран слово - Одни.

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

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

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

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

Здесь было сообщение с просьбой объяснить как ввести строку с клавы =)))

Разобрался сам. Простите за беспокойство

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

DoctorG:

а где можно взять эти макросы?
Ну, поиск можно начать с обзора тут, например. Исходный текст программы такого перевода, чтобы долго не искать, есть на Бейсике, например, тут (советы 227 и 228).

P.S. Если Бейсик забылся, то, чтобы не было (или было меньше) вопросов по тексту программы на нем, в нем тип переменной задается прямо в имени переменной его последним символом: $ - строка, % - целое, & - длинное целое, без спец. символа в конце - вещественное. Кроме того, оператор switch называется select, и в нем, в отличие от C, в конце ветвей выбора операторы break не ставятся. они уже подразумеваются там Бейсиком.

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

Здравствуйте. Помогите пожалуйста решить задачу на паскале:

Цель задания

1. Ознакомление с возможностью добавления информации в упорядоченный внешний файл.

Постановка задачи

Подготовить список из N наименований товаров. Информация о каждом товаре содержит:

1. Название товара.

2. Цену.

3. Год выпуска.

4. Количество.

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

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

Методические указания

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

И собственно сам вариант:

Товары упорядочены по не убыванию года выпуска, N=10, M=3.

P.S. Заранее спасибо за любую помощь...

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

Троль спасибо. Программу написал. Вроде работает.

У меня тут еще один глупый вопрос есть у меня матрица допустим 3х3

к примеру вот

int main(array<System::String ^> ^args){const int m=3;const int n=3;int i,j;int a[m][n]= {			{1,1,1},			{2,2,2},			{3,3,3},			};int out[n][m];for (i = 0; i < m; i++){ cout << "[ "; for (j = 0; j < n; j++)  cout<< a[i][j]; // выводим на экран нашу матрицу cout << " ]"; cout << endl; }Console::WriteLine();// пробую менять строчкиout[1][j]=a[3][j];out[2][j]=a[2][j];out[3][j]=a[1][j];for (i = 0; i < m; i++){ cout << "[ "; for (j = 0; j < n; j++)  cout<< out[i][j]; cout << " ]"; cout << endl; }Console::ReadLine();return 0;}

Как поменять местами строки? Допустим 1 и 3?

Знаю что глупый вопрос, но чего то не могу понять как это сделать :rolleyes:

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

Как обычно, меняешь первый элемент одной строки с первым элементом другой. Потом меняешь местами вторые элементы этих строк. Потом меняешь местами третьи элементы этих строк...

#include <iostream.h>int main(){const int m=3,n=3,WIDTH=3; int i,j,k,a[m][n]={{1,1,1},{2,2,2},{3,3,3}};for(i=0;i<m;i++){cout<<"[ "; for(j=0;j<n;j++)cout<<a[i][j]; cout<<" ]"<<endl;}for(j=0;j<n;j++){k=a[0][j]; a[0][j]=a[2][j]; a[2][j]=k;} cout<<endl;for(i=0;i<m;i++){cout<<"[ "; for(j=0;j<n;j++)cout<<a[i][j]; cout<<" ]"<<endl;}getchar(); return 0;}
Ссылка на комментарий
Поделиться на другие сайты

Пасиб, теперь буду вникать в сказанное. Спасибо, еще раз.

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

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

нахождение обратной матрицы
Слегка доработал твою прогу :rolleyes:
#include <iostream.h>int main(){const int n=4; double q,a[n][n]={{5,7,6,5},{7,10,8,7},{6,8,10,9},{5,7,9,10}};//ввели тестовую  матрицуfor(int i=0;i<n;i++){for(int j=0;j<n;j++){cout.width(8);cout<<a[i][j];}cout<<endl;}cout<<endl;//распечатали ееfor(int i=0;i<n;i++){q=1/a[i][i]; a[i][i]=1; for(int k=0;k<n;k++)a[i][k]*=q; for(int j=0;j<n;j++)if(i!=j){q=a[j][i]; a[j][i]=0; for(int k=0;k<n;k++)a[j][k]-=q*a[i][k];}}//обратилиfor(int i=0;i<n;i++){for(int j=0;j<n;j++){cout.width(8);cout<<a[i][j];}cout<<endl;}//вывели обратную матрицуgetchar(); return 0;}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

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



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