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

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


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

Спасибо большое Тролль А пом оги пож ещё немного ее доделать

нужно ещё добавить к уже существующей программе возможность ввести целое выражение (например 2+3 вводид а программа должна 5 вывести.......)

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

[b]temich5000[/b]#include <stdio.h>int _tmain(){char q; float fb,fd,fe; int b,d; char s[40];while(1){scanf("%s",s); if(s[0]>='+' && s[0]<='9')break; else printf("Error! Once more!\n");}sscanf(s,"%f%c%f",&fb,&q,&fd);switch(q){case '+':fe=fb+fd;break; case '-':fe=fb-fd;break;         case '*':fe=fb*fd;break; case '/':fe=fb/fd;break;}printf("%f %c %f = %f\n",fb,q,fd,fe); getchar(); getchar();}

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

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

спасибо большое тролль

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

мне оч нужно чтобы чтобы программа делилась на 2 дейсвия : ввод поэлементно (он у меня выложен где вводим переменные а и б ) или целого выражения по выбору пользователя...

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

temich5000

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

Неясно, чем отличается "ввод поэлементно" от "ввода целого выражения" - что, при "поэлементном вводе" просто после ввода каждого числа или знака операции должна нажиматься Enter? - и что, должны вводиться только целые числа, а действительные запрещено вводить? - не вижу смысла, и что тогда будет получаться при делении 2 на 3?

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

Привет троллль ещё раз большое спасибо за проги ))))

но никак не могу запустить эту прогу :(выдает ошику fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? )

code

#include <stdio.h>

int _tmain(){

char q; float fb,fd,fe; int b,d; char s[40];

while(1){scanf("%s",s); if(s[0]>='+' && s[0]<='9')break;

else printf("Error! Once more!\n");}

sscanf(s,"%f%c%f",&fb,&q,&fd);

switch(q){case '+':fe=fb+fd;break; case '-':fe=fb-fd;break;

case '*':fe=fb*fd;break; case '/':fe=fb/fd;break;}

printf("%f %c %f = %f\n",fb,q,fd,fe); getchar(); getchar();}

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

Раз он просит вставить #include "stdafx.h", вставь его. Вообще поставь заголовочные файлы, как они у тебя были в твоей программе. Visual C++ у меня сейчас не установлен, я проверял работу в Dev-C++, а Microsoft часто требует вставлять какие-нибудь свои заголовочные файлы для правильной компиляции.

P.S.

мне оч нужно чтобы чтобы программа делилась на 2 дейсвия : ввод поэлементно (он у меня выложен где вводим переменные а и б ) или целого выражения по выбору пользователя...
Если требуется отдельно "ввод поэлементно", хотя мне непонятно, зачем это нужно, если можно вводить целиком выражения, то пусть себе пользователь вводит поэлементно, а ты объединяешь это в целую строку и передаешь дальше в ту часть программы, где читается находящееся в строке выражение (эта часть программы начинается с sscanf). Всегда полезно свести задачу к уже решенной :)

Кстати, полезно дать пользователю возможность вводить выражение и с пробелами, например, не только

5+3

но и

5 + 3

Тогда надо просто перед разбором строки sscanf'ом удалить из нее эти пробелы, например, программной строкой

for(b=d=0;b<40;b++)if(s!=' ')s[d++]=s; s[d]=0;

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

ок спасибо тролль )

мне тут задали ещё сделать чтобы пользователь мог много раз ввоить переменные а и б пока ему это не надоест ( через цикл while) Но программа работает хорошо только один раз ((( а при последующих вводах а и б туда можно ввести символы и программа запоминает результаты других действий (((

надо наверно переменные а и б где то обноввить ???(или мб присвоить им 0 в каком то месте...)

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

temich5000

Возможно, цикл должен охватывать больше, чем ты в него внес? Я ведь твоего кода не вижу. Если твою программу, во всяком случае старую, зациклить (от начала и до строки return 0;), то все работает нормально.

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

ясн вот моя программа

code

#include "stdafx.h"#include <conio.h>#include <stdio.h>int _tmain(int argc, _TCHAR* argv[]){char zn,q,d,ch,g;int a,b,i;float fa, fb,n;//float c;do{bool f = false, f1,n = true;do (вот это я добавил){do{printf("Vvedite chislo  a v diapazone OT -2 147 483 648 DO 2 147 483 647\n ");flushall();scanf("%f%c",&fa,&q);if (q!=10) {printf("Neverno!! "); n = false;}else n = true;}while ((n == false) || fa < -2147483648.0 || fa > 2147483647.0);a = fa;do{printf("Vvedite chislo b v diapazone OT -2 147 483 648 DO 2 147 483 647\n");flushall();scanf("%f%c",&fb,&q);if (q!=10) {printf("Neverno!! "); n = false;}else n = true;}while ((n == false) || fb < -2147483648.0 || fb > 2147483647.0);b = fb;do{do{printf("Vvedite operaciu:\n ");printf("Nazmite [1] dlya  [+]\n");printf("Nazmite [2] dlya  [-]\n");printf("Nazmite [3] dlya  [*]\n");printf("Nazmite [4] dlya  [/]\n");flushall();scanf("%c%c",&zn,&q);if (q!=10) {printf("Neverno!! "); n = false;}else n = true;}while (n == false);switch(zn){case '1': {float c = (float)a + (float)b;if ((c < -2147483648.0) || (c > 2147483647.0)){printf("Perepolnenie!\n");f1=false;f=false;}else{printf("%i \n",(int)c); f = true; f1 = true;}break;}case '2': {float c = (float)a - (float)b;if ((c < -2147483648.0) || (c > 2147483647.0)) {printf("Perepolnenie!\n"); f1=false; f=false; }else{printf("%i \n",(int)c); f = true; f1 = true;}break;}case '3': {float c = (float)a * (float)b;if ((c < -2147483648.0) || (c > 2147483647.0)){printf("Perepolnenie!\n"); f1=false; f=false;}else{printf("%i \n",(int)c); f = true; f1 = true;}break;}case '4': {float c = 0.0;if (b!=0) {c = (float) a / (float)b;if ((c < -2147483648.0) || (c > 2147483647.0)){printf("Perepolnenie!\n"); f1 = false; f = false;}else{printf("%i \n",(int)c); f = true; f1 = true;}break;}else printf("Delenie na 0!!!\n"); f = true; f1 = false; break;}default: {printf("Neverno!!! "); f = false; flushall();}}}while(f == false);}while(f1 == false);printf("\n Eshe raz hotite?(y/g): ");	scanf("%c%c",&ch,&q);}while (ch !='g');  (вот это я добавил)return 0;

}

ограничения на переполнение на ввод символа работают к сожалению только первый раз, затем если пользователь ещё значения вводит то ограничения не работают (((

!

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

Ну вот что именно конкретно вам мешает прочитать первый пост темы? Где простыми кириллическими буквами сказано -

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

Ну? Ну хоть одно слово?

Ну что же - штрафы вам налепливать, что ли?

Право слово - не очень хочется...

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

temich5000

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

#include "stdafx.h"#include <stdio.h>int _tmain(){float b,d,e; char s[40],q;while(1){do{printf("expression / by parts / quit (e/b/q): "); scanf("%s",s); q=s[0];} while(q!='e'&&q!='b'&&q!='q'); if(q=='q')break;if(q=='b'){ do{printf("first number?  "); scanf("%s",s);}while(!(s[0]>='+'&&s[0]<='9')); sscanf(s,"%f",&b); do{printf("second number? "); scanf("%s",s);}while(!(s[0]>='+'&&s[0]<='9')); sscanf(s,"%f",&d); do{printf("operation?     "); scanf("%s",s); q=s[0];}while(q!='+'&&q!='-'&&q!='*'&&q!='/');}else{do{printf("expression? "); scanf("%s",s); q=s[0]; if(q>='+'&&q<='9')break; else printf("Error! Once more!\n");}while(1); sscanf(s,"%f%c%f",&b,&q,&d);}switch(q){case '+':e=b+d;break; case '-':e=b-d;break; case '*':e=b*d;break; case '/':e=b/d;}printf("%f %c %f = %f\n\n",b,q,d,e); getchar();}}
Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

В Pascal напишите пожалуйста:

Найти элемент массива, наиболее часто встречающийся.

Большое спасибо!)

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

Найти элемент массива, наиболее часто встречающийся.
var a:array[1..100]of integer; i,j,k,m,p,n:integer;beginwrite('How many numbers? '); readln(k); writeln('Enter ',k,' numbers');for i:=1 to k do read(a[i]); readln; m:=0; for i:=1 to k do begin n:=0; for j:=i to k do if a[i]=a[j] then inc(n);  if n>m then begin m:=n; p:=i end end;writeln(a[p]); readln end. 
  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

Привет всем

Ребят помогите пожалуйста в си++ написать программу любыми тремя способами.

Нужно: Определить в целочисленном массиве А из n элементов положительные элементы больше 200 и меньше 300

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

temich5000

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

Попробуем использовать три разных вида цикла, может быть, этого хватит.

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

#include <stdlib.h> #include <time.h> #include <iostream>#include <iomanip>using namespace std;const int n=30;main(){int a[n],i; srand(time(NULL)); for(i=0;i<n;i++)a[i]=rand()%800-300; for(i=0;i<n;i++)cout<<setw(5)<<a[i]; cout<<endl<<endl;// for(i=0;i<n;i++)if(a[i]>200&&a[i]<300)cout<<setw(5)<<a[i]; cout<<endl;// i=-1; while(++i<n)if(a[i]>200&&a[i]<300)cout<<setw(5)<<a[i]; cout<<endl;// i=0; do if(a[i]>200&&a[i]<300)cout<<setw(5)<<a[i]; while(++i<n); cout<<endl; cin.get();}
Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Помогите, пожалуйста, написать программу, не получается( структуры, с++

1. Описать структуру с именем STUDENT, содержащую следующие поля:

• фамилия и инициалы;

• помер группы;

ш успеваемость (массив из пяти элементов).

2. Написать программу, выполняющую следующие действия:

• ввод с клавиатуры данных в массив, состоящий из десяти структур типа

STUDENT; записи должны быть упорядочены по алфавиту;

ш вывод на дисплей фамилий и номеров групп для всех студентов, имеющих

хотя бы одну оценку 2;

• если таких студентов пет, вывести соответствующее сообщение.

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

KatrinMalinina

#include <stdio.h>#include <string.h>const int n=10;main(){struct STUDENT{char NAME[30]; unsigned GROUP,BALL[5];}TABL[n],t;int i,j,k=0,los=2; bool b=false; char Name[30];for(i=0;i<n;i++){ printf("\nName? "); gets(TABL[i].NAME); if(!strlen(TABL[i].NAME))break; printf("Group? "); scanf("%u",&TABL[i].GROUP); printf("Balls (5 balls)? "); for(j=0;j<5;j++)scanf("%u",&TABL[i].BALL[j]); gets(Name); k++;}for(i=1;i<k;i++)for(j=1;j<=k-i;j++)if(strcmp(TABL[j].NAME,TABL[j-1].NAME)<0) {t=TABL[j]; TABL[j]=TABL[j-1]; TABL[j-1]=t;}for(i=0;i<k;i++)for(j=0;j<5;j++)if(TABL[i].BALL[j]==los) {printf("\n%-30s %5u",TABL[i].NAME,TABL[i].GROUP); b=true; break;}if(!b)printf("\nNo such persons!"); printf("\n\n"); getchar(); return 0;}

После запуска программы вводятся имена студентов (максимально 10), номера их груп и полученные ими баллы (пять штук для каждого студента, через пробелы). Можно не вводить данные всех студентов, ввод данных студентов можно закончить, введя пустое имя студента, то есть если в ответ на запрос имени сразу нажать Enter.

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

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

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

KatrinMalinina

Вообще-то лучше хвост рубить условие писать сразу, а не по частям...

#include <stdio.h>#include <string.h>const int n=10;main(){struct STUDENT{char NAME[30]; unsigned GROUP,BALL[5];}TABL[n],t;int i,j,k=0,los=2; bool b=false; char Name[30];for(i=0;i<n;i++){ do{printf("\nName? "); gets(TABL[i].NAME); if(strpbrk(TABL[i].NAME,"0123456789"))   printf("Error! Once more, please!"); else break;}while(true);  if(!strlen(TABL[i].NAME))break; printf("Group? "); scanf("%u",&TABL[i].GROUP); do{printf("Balls (5 balls)? "); b=false;     for(j=0;j<5;j++){scanf("%s",&Name[j]); if(Name[j]<'1'||Name[j]>'5')b=true;}    if(b)printf("Error! Once more, please!\n"); else break;}while(true);  for(j=0;j<5;j++)TABL[i].BALL[j]=Name[j]-48; gets(Name); k++;}for(i=1;i<k;i++)for(j=1;j<=k-i;j++)if(strcmp(TABL[j].NAME,TABL[j-1].NAME)<0) {t=TABL[j]; TABL[j]=TABL[j-1]; TABL[j-1]=t;}for(i=0;i<k;i++)for(j=0;j<5;j++)if(TABL[i].BALL[j]==los) {printf("\n%-30s %5u",TABL[i].NAME,TABL[i].GROUP); b=true; break;}if(!b)printf("\nNo such persons!"); printf("\n\n"); getchar(); return 0;}
Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Привет троллль ещё раз большое спасибо за проги ))))

но никак не могу запустить эту прогу :(выдает ошику fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? )

code

#include <stdio.h>

int _tmain(){

char q; float fb,fd,fe; int b,d; char s[40];

while(1){scanf("%s",s); if(s[0]>='+' && s[0]<='9')break;

else printf("Error! Once more!\n");}

sscanf(s,"%f%c%f",&fb,&q,&fd);

switch(q){case '+':fe=fb+fd;break; case '-':fe=fb-fd;break;

case '*':fe=fb*fd;break; case '/':fe=fb/fd;break;}

printf("%f %c %f = %f\n",fb,q,fd,fe); getchar(); getchar();}

Тролль, а можешь в этой программе ещё добавить

ограничение на переполнение; при делении на ноль чтобы ошибку выводило; и чтобы пользователь мог с этой программой много раз работать пока не захочет выйти….

Если не сложно …

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

temich5000

#include "stdafx.h"#include <stdio.h>int _tmain(){char q; float fb,fd,fe; int b,d; char s[40];while(1){while(1){printf("Expression? "); scanf("%s",s); if(s[0]>='+' && s[0]<='9')break;else printf("Error! Once more!\n");}sscanf(s,"%f%c%f",&fb,&q,&fd);switch(q){case '+':fe=fb+fd;break; case '-':fe=fb-fd;break;case '*':fe=fb*fd;break; case '/':fe=fb/fd;break;}if(fd==0&&q=='/')printf("Divizion by zero\n"); else printf("%f %c %f = %f\n",fb,q,fd,fe); getchar(); printf("Once more (y/n)? "); scanf("%s",s); printf("\n"); if(*s!='Y'&&*s!='y')return 0;}}

У вас вообще есть какая-то определенная формулировка задачи или куда ветер подует?

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

Спасибо большое Тролль !!! Да это просто нам преподаватель задания дает по данной лабе(каждый раз модифицируем данный калькулятор)

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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



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