temich5000 Опубликовано 27 октября, 2011 Жалоба Поделиться Опубликовано 27 октября, 2011 Спасибо большое Тролль А пом оги пож ещё немного ее доделать нужно ещё добавить к уже существующей программе возможность ввести целое выражение (например 2+3 вводид а программа должна 5 вывести.......) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 27 октября, 2011 Жалоба Поделиться Опубликовано 27 октября, 2011 (изменено) [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. Изменено 27 октября, 2011 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 27 октября, 2011 Жалоба Поделиться Опубликовано 27 октября, 2011 спасибо большое тролль а помоги пож добавить кусок это программы (где можно добавить целое выражение) к моей исходной (большая которая) мне оч нужно чтобы чтобы программа делилась на 2 дейсвия : ввод поэлементно (он у меня выложен где вводим переменные а и б ) или целого выражения по выбору пользователя... Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 27 октября, 2011 Жалоба Поделиться Опубликовано 27 октября, 2011 temich5000 а помоги пож добавить кусок это программы (где можно добавить целое выражение) к моей исходной (большая которая)Ну, я весьма отдаленно представляю, что и, главное, зачем делается у тебя в программе - какие-то странные преобразования, вводятся действительные числа, преобразуются в целые... Ясно только, что это какой-то калькулятор. Непонятно, что от него требуется. Неясно, чем отличается "ввод поэлементно" от "ввода целого выражения" - что, при "поэлементном вводе" просто после ввода каждого числа или знака операции должна нажиматься Enter? - и что, должны вводиться только целые числа, а действительные запрещено вводить? - не вижу смысла, и что тогда будет получаться при делении 2 на 3? Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 28 октября, 2011 Жалоба Поделиться Опубликовано 28 октября, 2011 Привет троллль ещё раз большое спасибо за проги )))) но никак не могу запустить эту прогу выдает ошику 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();} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 28 октября, 2011 Жалоба Поделиться Опубликовано 28 октября, 2011 (изменено) Раз он просит вставить #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; Изменено 29 октября, 2011 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 29 октября, 2011 Жалоба Поделиться Опубликовано 29 октября, 2011 ок спасибо тролль ) мне тут задали ещё сделать чтобы пользователь мог много раз ввоить переменные а и б пока ему это не надоест ( через цикл while) Но программа работает хорошо только один раз ((( а при последующих вводах а и б туда можно ввести символы и программа запоминает результаты других действий ((( надо наверно переменные а и б где то обноввить ???(или мб присвоить им 0 в каком то месте...) Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 29 октября, 2011 Жалоба Поделиться Опубликовано 29 октября, 2011 точнее программа запоминает результаты прошлых действий если символы ввести Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 30 октября, 2011 Жалоба Поделиться Опубликовано 30 октября, 2011 temich5000 Возможно, цикл должен охватывать больше, чем ты в него внес? Я ведь твоего кода не вижу. Если твою программу, во всяком случае старую, зациклить (от начала и до строки return 0;), то все работает нормально. Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 30 октября, 2011 Жалоба Поделиться Опубликовано 30 октября, 2011 ясн вот моя программа 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 листингом и без данного тега будут удаляться, а автору - предупреждение. Ну? Ну хоть одно слово? Ну что же - штрафы вам налепливать, что ли? Право слово - не очень хочется... Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 31 октября, 2011 Жалоба Поделиться Опубликовано 31 октября, 2011 (изменено) 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();}} Изменено 31 октября, 2011 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 31 октября, 2011 Жалоба Поделиться Опубликовано 31 октября, 2011 Спасибо большое Тролль ))))))))))))))))))))) :rolleyes: Ссылка на комментарий Поделиться на другие сайты Поделиться
Riki_Tiki_Tavi Опубликовано 6 ноября, 2011 Жалоба Поделиться Опубликовано 6 ноября, 2011 В Pascal напишите пожалуйста: Найти элемент массива, наиболее часто встречающийся. Большое спасибо!) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 7 ноября, 2011 Жалоба Поделиться Опубликовано 7 ноября, 2011 Найти элемент массива, наиболее часто встречающийся. 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. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 11 ноября, 2011 Жалоба Поделиться Опубликовано 11 ноября, 2011 Привет всем Ребят помогите пожалуйста в си++ написать программу любыми тремя способами. Нужно: Определить в целочисленном массиве А из n элементов положительные элементы больше 200 и меньше 300 Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 11 ноября, 2011 Жалоба Поделиться Опубликовано 11 ноября, 2011 (изменено) 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();} Изменено 11 ноября, 2011 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 11 ноября, 2011 Жалоба Поделиться Опубликовано 11 ноября, 2011 тролль спасибо большое !!!!!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
KatrinMalinina Опубликовано 12 ноября, 2011 Жалоба Поделиться Опубликовано 12 ноября, 2011 (изменено) Помогите, пожалуйста, написать программу, не получается( структуры, с++ 1. Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • помер группы; ш успеваемость (массив из пяти элементов). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по алфавиту; ш вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2; • если таких студентов пет, вывести соответствующее сообщение. Изменено 12 ноября, 2011 пользователем KatrinMalinina Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 12 ноября, 2011 Жалоба Поделиться Опубликовано 12 ноября, 2011 (изменено) 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. Изменено 12 ноября, 2011 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
KatrinMalinina Опубликовано 13 ноября, 2011 Жалоба Поделиться Опубликовано 13 ноября, 2011 Спасибо большое, а вот с нас препод еще требует, чтобы допустим в имена нельзя цифры вводить, а в балы буквы. И еще нужно, чтобы было упорядоченны имена по алфавиту)) Пожалуйста, можешь подправить, а то я дуб) Ссылка на комментарий Поделиться на другие сайты Поделиться
KatrinMalinina Опубликовано 13 ноября, 2011 Жалоба Поделиться Опубликовано 13 ноября, 2011 Ой, только нужно, чтобы в имена нельзя цифры вводить, а в баллы буквы, а так супер все)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 13 ноября, 2011 Жалоба Поделиться Опубликовано 13 ноября, 2011 (изменено) 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;} Изменено 13 ноября, 2011 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 18 ноября, 2011 Жалоба Поделиться Опубликовано 18 ноября, 2011 Привет троллль ещё раз большое спасибо за проги )))) но никак не могу запустить эту прогу выдает ошику 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();} Тролль, а можешь в этой программе ещё добавить ограничение на переполнение; при делении на ноль чтобы ошибку выводило; и чтобы пользователь мог с этой программой много раз работать пока не захочет выйти…. Если не сложно … Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 19 ноября, 2011 Жалоба Поделиться Опубликовано 19 ноября, 2011 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;}} У вас вообще есть какая-то определенная формулировка задачи или куда ветер подует? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
temich5000 Опубликовано 19 ноября, 2011 Жалоба Поделиться Опубликовано 19 ноября, 2011 Спасибо большое Тролль !!! Да это просто нам преподаватель задания дает по данной лабе(каждый раз модифицируем данный калькулятор) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти