![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#101
|
|
![]() Зануда Сообщений: 2 237 Спасибо сказали: 2899 раз ![]() |
Какой же лютый трындец. Неужели нельзя взять уже готовую высокоуровневую обертку? Не поверю, что для си++ нет такой.
|
|
|
![]()
Сообщение
#102
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
Какой же лютый трындец. Неужели нельзя взять уже готовую высокоуровневую обертку? Не поверю, что для си++ нет такой. Ну я нагуглил исходники программы которая может посылать e-mail и умеет работать с SDL_net называется она SDLmail правда она только текст умеет посылать (как и curl) то есть для атачмента надо еще base64 делать, вот он эта программа: -------------------- |
|
|
![]()
Сообщение
#103
|
|
![]() 🐓🐓🐓🐓🐓🐓🐓 Сообщений: 1 845 Спасибо сказали: 1570 раз ![]() |
Цитата Код using namespace std; Ну сколько можно… -------------------- using namespace fbx;
|
|
|
![]()
Сообщение
#104
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
Цитата Код using namespace std; Ну сколько можно… Ну я счас для интереса попробовал изменить на Код using namespace fbx; g++ сильно заругался. Код danya@danya:~/hello$ g++ server.cc -w -lSDL_net -o server server.cc:9:17: ошибка: «fbx» is not a namespace-name server.cc:9:20: ошибка: expected namespace-name before «;» token server.cc:17:7: ошибка: «string» не является именем типа server.cc:18:7: ошибка: «string» не является именем типа server.cc: В функции «int main(int, char**)»: server.cc:37:9: ошибка: нет декларации «cout» в этой области видимости server.cc:37:9: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:37:73: ошибка: нет декларации «endl» в этой области видимости server.cc:37:73: замечание: suggested alternative: /usr/include/c++/4.6/ostream:543:5: замечание: «std::endl» server.cc:45:9: ошибка: нет декларации «cout» в этой области видимости server.cc:45:9: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:50:9: ошибка: нет декларации «cout» в этой области видимости server.cc:50:9: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:50:143: ошибка: нет декларации «endl» в этой области видимости server.cc:50:143: замечание: suggested alternative: /usr/include/c++/4.6/ostream:543:5: замечание: «std::endl» server.cc:66:9: ошибка: нет декларации «cout» в этой области видимости server.cc:66:9: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:66:79: ошибка: нет декларации «endl» в этой области видимости server.cc:66:79: замечание: suggested alternative: /usr/include/c++/4.6/ostream:543:5: замечание: «std::endl» server.cc:74:9: ошибка: нет декларации «cout» в этой области видимости server.cc:74:9: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:75:62: ошибка: нет декларации «endl» в этой области видимости server.cc:75:62: замечание: suggested alternative: /usr/include/c++/4.6/ostream:543:5: замечание: «std::endl» server.cc:83:9: ошибка: нет декларации «cout» в этой области видимости server.cc:66:9: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:66:79: ошибка: нет декларации «endl» в этой области видимости server.cc:66:79: замечание: suggested alternative: /usr/include/c++/4.6/ostream:543:5: замечание: «std::endl» server.cc:74:9: ошибка: нет декларации «cout» в этой области видимости server.cc:74:9: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:75:62: ошибка: нет декларации «endl» в этой области видимости server.cc:75:62: замечание: suggested alternative: /usr/include/c++/4.6/ostream:543:5: замечание: «std::endl» server.cc:83:9: ошибка: нет декларации «cout» в этой области видимости server.cc:83:9: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:88:9: ошибка: нет декларации «cout» в этой области видимости server.cc:88:9: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:88:57: ошибка: нет декларации «endl» в этой области видимости server.cc:88:57: замечание: suggested alternative: /usr/include/c++/4.6/ostream:543:5: замечание: «std::endl» server.cc:94:5: ошибка: нет декларации «cout» в этой области видимости server.cc:94:5: замечание: suggested alternative: /usr/include/c++/4.6/iostream:62:18: замечание: «std::cout» server.cc:94:38: ошибка: нет декларации «endl» в этой области видимости server.cc:94:38: замечание: suggested alternative: /usr/include/c++/4.6/ostream:543:5: замечание: «std::endl» server.cc:143:33: ошибка: нет декларации «SERVER_NOT_FULL» в этой области видимости server.cc:157:33: ошибка: нет декларации «SERVER_FULL» в этой области видимости -------------------- |
|
|
![]()
Сообщение
#105
|
|
![]() Зануда Сообщений: 2 237 Спасибо сказали: 2899 раз ![]() |
![]() Вот к чему приводит бездумное копирование кода из гугла в блокнот. Чувак даже не знает, что значит та или иная строка. А ещё уроки пишет. Хорошо хоть не по майнкрафту. |
|
|
![]()
Сообщение
#106
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
![]() Вот к чему приводит бездумное копирование кода из гугла в блокнот. Чувак даже не знает, что значит та или иная строка. А ещё уроки пишет. Хорошо хоть не по майнкрафту. Почему бездумное? Я же копирую не любой код а который нахожу по нужным мне запросам. Например мне нужно оправить e-mail и я гугулю запрос "код C++ SDL_net отправить e-mail " а про строку что она значит по моему самый простой способ понять что она делает это вставить ее в программу и посмотреть что она делает. Вот я вставил строчку Код using namespace fbx; И увидел что она делает. Она делает ошибки. Значит это строчка не правильная! А правильная строчка вот такая: Код using namespace std; Потому что с ней программа работает. -------------------- |
|
|
![]()
Сообщение
#107
|
|
Immortal Сообщений: 798 Спасибо сказали: 555 раз ![]() |
Цитата И увидел что она делает. Она делает ошибки. Если в коде ошибки, его лучше закомментировать от греха подальше: Код // using namespace fbx; Потом запускаешь программу, которая генерит набор символов заданной длины в лексикографическом порядке (например, "usign namespcae fеr;", "singu spaceamen sdt;" и т.д.) и комментишь неудачные варианты. Спустя конечное время обязательно должен получиться вариант, который скомпилируется. |
|
|
![]()
Сообщение
#108
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20603 раза ![]() |
Срочно, срочно учебник.
Мне для сишки когда-то очень зашел полуучебник-полусправочник Шилдта (по нему и учился, когда K&R еще советского издания отдал владельцу). Он и для С++ писал - вот его не читал, не знаю, но думаю - тоже вполне годнота для начала. Герберт Шилдт, "Полный справочник по С++". |
|
|
![]()
Сообщение
#109
|
|
Immortal Сообщений: 798 Спасибо сказали: 555 раз ![]() |
Как поётся в одной старой песне: "Поймём потом, поймём потом"
https://www.youtube.com/watch?v=2KW3roDj3RI |
|
|
![]()
Сообщение
#110
|
|
![]() 😸🧡✊✌️ Сообщений: 16 457 Спасибо сказали: 3339 раз ![]() |
Также неплохо попробовать другие варианты:
Код using deep space nine; Вариантов нереально много.
tossing whole place down; mocking to face a clown; -------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]()
Сообщение
#111
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
Цитата И увидел что она делает. Она делает ошибки. Если в коде ошибки, его лучше закомментировать от греха подальше: Код // using namespace fbx; Я так и делаю Цитата Потом запускаешь программу, которая генерит набор символов заданной длины в лексикографическом порядке (например, "usign namespcae fеr;", "singu spaceamen sdt;" и т.д.) и комментишь неудачные варианты. Спустя конечное время обязательно должен получиться вариант, который скомпилируется. А вот это не правильно! Надо просто посмотреть в Google что за ошибка. И вставить тот код который написано что надо вставлять при таких ошибках. И тогда получается намного быстрее. Кстат вот! Вот код исходника что делает base64 кодирование. Код #include <cstdio> #include <iostream> #include <cstdlib> #include "base64.h" #include <cstring> int main() { // char *FileBuf = NULL; FILE* hFile = NULL; unsigned long int FileSize,TotalSize; // char *SendBuf = NULL; unsigned int q, i,res; hFile = fopen("input.txt","rb"); if(hFile == NULL) { fputs("Ошибка файла \n", stderr); exit(1); } // Из примера // определяем размер файла fseek(hFile , 0 , SEEK_END); // устанавливаем позицию в конец файла long lSize = ftell(hFile); // получаем размер в байтах q = lSize/54+1; rewind (hFile); // устанавливаем указатель в конец файла char * SendBuf = (char*) malloc(sizeof(char) * lSize); char * FileBuf = (char*) malloc(sizeof(char) * lSize); // выделить память для хранения содержимого файла if (FileBuf == NULL) { fputs("Ошибка памяти", stderr); exit(2); } /* size_t result = fread(buffer, 1, lSize, hFile); // считываем файл в буфер // fread(buffer,sizeof(char),54,hFile); if (result != lSize) { fputs("Ошибка чтения", stderr); exit (3); } //содержимое файла теперь находится в буфере puts(buffer); // завершение работы fclose (hFile); free (buffer); // Конец из примера */ // Проверяем размер: // FileSize = 0; // while(!feof(hFile)) // FileSize += fread(FileBuf,sizeof(char),54,hFile); // TotalSize += FileSize; // sending the file: // if(TotalSize/1024 > MSG_SIZE_IN_MB*1024) // throw ECSmtp(ECSmtp::MSG_TOO_BIG); // else // { // fseek (hFile,0,SEEK_SET); // MsgPart = 0; // for(i=0;i<FileSize/54+1;i++) // { // res = fread(FileBuf,sizeof(char),54,hFile); // //MsgPart ? strcat(SendBuf,base64_encode(reinterpret_cast<const unsigned char*(FileBuf),res).c_str()): : //strcpy(SendBuf,base64_encode(reinterpret_cast<const unsigned char*(FileBuf),res).c_str()); // strcat(SendBuf,"\r\n"); // MsgPart += res + 2; // if(MsgPart >= BUFFER_SIZE/2) // { // sending part of the message // MsgPart = 0; // SendData(); // FileBuf, FileName, fclose(hFile); // } // } // if(MsgPart) // { // SendData(); // FileBuf, FileName, fclose(hFile); // } // } // fclose(hFile); // } // delete[] FileBuf; // delete[] FileName; FileSize = 0; while(!feof(hFile)) { FileSize = fread(FileBuf,sizeof(char),54,hFile); // std::cout << "FileSize равно=" << FileSize << "\r\n"; // TotalSize += FileSize; // std::cout << "TotalSize равно=" << TotalSize << "\r\n"; } // Делаем буфер: fseek (hFile,0,SEEK_SET); // std::cout << "TotalSize равно=" << TotalSize << "\r\n"; // std::cout << "FileSize равно=" << FileSize << "\r\n"; // std::cout << "lSize равно=" << lSize << "\r\n"; // std::cout << "q равно=" << q << "\r\n"; for(i=0;i<q;i++) { res = fread(FileBuf,sizeof(char),54,hFile); // std::cout << "i равно =" << i << "\r\n"; strcat(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),54).c_str()); // strcat(SendBuf,"ПРИВЕТ ЭТО ДАНЯ!!!!!\r\n"); strcpy(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str()); strcat(SendBuf,"\r"); // puts(SendBuf); // std::cout << "RES равно=" << res << "\r\n"; if(SendBuf) { puts(SendBuf); // FILE * ptrFile = fopen ( "output.txt" , "wb" ); // fwrite(SendBuf, 1 , sizeof(SendBuf) , ptrFile ); // записать в файл содержимое буфера // fclose (ptrFile); // fclose(hFile); } } return 0; } Собрал его из трех разных правда он еще в файл писать не может, приходится его вот так запускать Код ./test > test.txt Но кодирует уже правильно. ![]() ![]() ![]() -------------------- |
|
|
![]()
Сообщение
#112
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
Фух заработало!
![]() ![]() ![]() И вот что у меня получилось: Код #include <cstdio> #include <iostream> #include <cstdlib> #include "base64.h" #include <cstring> int main() { FILE* hFile = NULL; unsigned int q, i,res; hFile = fopen("input.txt","rb"); if(hFile == NULL) { fputs("Ошибка файла \n", stderr); exit(1); } // определяем размер файла fseek(hFile , 0 , SEEK_END); // устанавливаем позицию в конец файла long lSize = ftell(hFile); // получаем размер в байтах q = lSize/54+1; rewind (hFile); // устанавливаем указатель в конец файла char * SendBuf = (char*) malloc(sizeof(char) * lSize); char * FileBuf = (char*) malloc(sizeof(char) * lSize); // выделить память для хранения содержимого файла if (FileBuf == NULL) { fputs("Ошибка памяти", stderr); exit(2); } // Делаем буфер: fseek (hFile,0,SEEK_SET); FILE * ptrFile = fopen ( "output.txt" , "wb" ); for(i=0;i<q;i++) { res = fread(FileBuf,sizeof(char),54,hFile); strcat(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str()); strcpy(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str()); strcat(SendBuf,"\r"); fputs(SendBuf, ptrFile); } fclose (ptrFile); return 0; } -------------------- |
|
|
![]()
Сообщение
#113
|
|
Immortal Сообщений: 798 Спасибо сказали: 555 раз ![]() |
Цитата Фух заработало! Ну и слава богу! |
|
|
![]()
Сообщение
#114
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
Цитата Фух заработало! Ну и слава богу! Да чуть не забыл! Чтобы код работал рядом с ним надо положить еще два файлика: base64.h и base64.cpp и в них написать код из вот этого примера http://www.adp-gmbh.ch/cpp/common/base64.html и собирать или камандой Код g++ *.cpp -o test Или сделать вот такой make файл Код nano makefile Написать в него вот такой код (я его взял от другой программы) Код # Automatyczny makefile CC = g++ CFLAGS = -Wall -O2 -DLINUX ONLYCOMPILE = $(CC) $(CFLAGS) -c -g OBJFILES := $(patsubst %.cpp,%.o,$(wildcard *.cpp)) PROGNAME = test all: $(PROGNAME) $(PROGNAME) : $(OBJFILES) $(CC) -o $(PROGNAME) $(OBJFILES) %.o: %.cpp ${ONLYCOMPILE} -o $@ $< clean: rm *.o И собирать камандой Код make
-------------------- |
|
|
![]()
Сообщение
#115
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
Фух заработало! ![]() ![]() ![]() И вот что у меня получилось: Код #include <cstdio> #include <iostream> #include <cstdlib> #include "base64.h" #include <cstring> int main() { FILE* hFile = NULL; unsigned int q, i,res; hFile = fopen("input.txt","rb"); if(hFile == NULL) { fputs("Ошибка файла \n", stderr); exit(1); } // определяем размер файла fseek(hFile , 0 , SEEK_END); // устанавливаем позицию в конец файла long lSize = ftell(hFile); // получаем размер в байтах q = lSize/54+1; rewind (hFile); // устанавливаем указатель в конец файла char * SendBuf = (char*) malloc(sizeof(char) * lSize); char * FileBuf = (char*) malloc(sizeof(char) * lSize); // выделить память для хранения содержимого файла if (FileBuf == NULL) { fputs("Ошибка памяти", stderr); exit(2); } // Делаем буфер: fseek (hFile,0,SEEK_SET); FILE * ptrFile = fopen ( "output.txt" , "wb" ); for(i=0;i<q;i++) { res = fread(FileBuf,sizeof(char),54,hFile); strcat(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str()); strcpy(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str()); strcat(SendBuf,"\r"); fputs(SendBuf, ptrFile); } fclose (ptrFile); return 0; } Я вот думаю! Мне надо три файла по почте послать - autosave.sav, fheroes2.hgs и fheroes2.hgsс и получается что для кадого файла надо будет писать такой же код и он получится очень длинный. Я посмотрел как в других программах сделано, там сделано по другому делается void Send и что-то такое и потом просто в дпругой месте просто пишут это Send и именен файла который надо послать. И подумал может мне тоже так сделать? Только правильно надо этот void Send написать чтобы потому ему файлы можно было указывать? -------------------- |
|
|
![]()
Сообщение
#116
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20603 раза ![]() |
СРОЧНО УЧЕБНИК
|
|
|
![]()
Сообщение
#117
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
Так ну я вроде сделал
Код #include <cstdio> #include <iostream> #include <cstdlib> #include "base64.h" #include <cstring> int Send(const char *FileName) { unsigned int q, i,res; FILE* hFile = NULL; hFile = fopen(FileName,"rb"); if(hFile == NULL) { fputs("Ошибка файла \n", stderr); exit(1); } // определяем размер файла fseek(hFile , 0 , SEEK_END); // устанавливаем позицию в конец файла long lSize = ftell(hFile); // получаем размер в байтах q = lSize/54+1; rewind (hFile); // устанавливаем указатель в конец файла char * SendBuf = (char*) malloc(sizeof(char) * lSize); char * FileBuf = (char*) malloc(sizeof(char) * lSize); // выделить память для хранения содержимого файла char * TitleBuf = (char*) malloc(sizeof(char) * 1024); if (FileBuf == NULL) { fputs("Ошибка памяти", stderr); exit(2); } // Делаем буфер: fseek (hFile,0,SEEK_SET); FILE * ptrFile = fopen ( "output.txt" , "ab" ); //Пишем заголовки strcat(TitleBuf,"\n"); strcat(TitleBuf,"Subject: Turnir\n"); strcat(TitleBuf,"Content-Type: multipart/mixed;\n"); strcat(TitleBuf,"Content-Disposition: attachment;\n"); strcat(TitleBuf,"\tfilename=autosave.sav\n"); strcat(TitleBuf,"Content-Transfer-Encoding: base64\n"); strcat(TitleBuf,"Content-Type: application/octet-stream;\n"); strcat(TitleBuf,"\tname=autosave.sav\n\n"); fputs(TitleBuf, ptrFile); //Кодируем и пищем файл for(i=0;i<q;i++) { res = fread(FileBuf,sizeof(char),54,hFile); strcat(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str()); strcpy(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str()); strcat(SendBuf,"\r\n"); fputs(SendBuf, ptrFile); fflush (ptrFile); } //fclose (ptrFile); return(0); } int main() { Send("autosave.sav"); Send("fheroes2.hgs"); Send("fheroes2.hgsc"); return 0; } И оно сейчас вроде работает но есть одна проблема. Если в конце int Send написать как оно и полагается каманду fclose (ptrFile); то она пишет в конце в файл еще какие-то дурацкие значки. Я погуглил это называется мусор и вроде советуют вставить в код команду fflush я ее в разные места на пробу повствалял. И оно вроде заработало нормально (мусор перестало писать) но только при условии если команда fclose (ptrFile); выключена (как это в коде сейчас), оно сейчас вроде работает но мне это нравится почему команда fclose (ptrFile); включена все равно пишет мусор. -------------------- |
|
|
![]()
Сообщение
#118
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
Фух вроде нашел правильную каманду
Код memset(Buf, 0, sizeof(Buf)); И в результате получилось вот так Код #include <cstdio> #include <cstdlib> #include <cstring> #include "base64.h" int Send(const char *FileName) { unsigned int q, i,res; FILE* hFile = NULL; hFile = fopen(FileName,"rb"); if(hFile == NULL) { fputs("Ошибка файла \n", stderr); exit(1); } // определяем размер файла fseek(hFile , 0 , SEEK_END); // устанавливаем позицию в конец файла long lSize = ftell(hFile); // получаем размер в байтах q = lSize/54+1; rewind (hFile); // устанавливаем указатель в конец файла char * SendBuf = (char*) malloc(sizeof(char) * lSize); char * FileBuf = (char*) malloc(sizeof(char) * lSize); // выделить память для хранения содержимого файла char * TitleBuf = (char*) malloc(sizeof(char) * 1024); if (FileBuf == NULL) { fputs("Ошибка памяти", stderr); exit(2); } // Делаем буфер: fseek (hFile,0,SEEK_SET); FILE * ptrFile = fopen ( "output.txt" , "ab" ); //Пишем заголовки memset(SendBuf, 0, sizeof(SendBuf)); // чистим буфер от мусора memset(TitleBuf, 0, sizeof(TitleBuf)); // чистим буфер от мусора strcat(TitleBuf,"Subject: Turnir\n"); strcat(TitleBuf,"Content-Type: multipart/mixed;\n"); strcat(TitleBuf,"Content-Disposition: attachment;\n"); strcat(TitleBuf,"\tfilename=autosave.sav\n"); strcat(TitleBuf,"Content-Transfer-Encoding: base64\n"); strcat(TitleBuf,"Content-Type: application/octet-stream;\n"); strcat(TitleBuf,"\tname=autosave.sav\n\n"); fputs(TitleBuf, ptrFile); //Кодируем и пищем файл for(i=0;i<q;i++) { res = fread(FileBuf,sizeof(char),54,hFile); strcat(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str()); strcpy(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str()); strcat(SendBuf,"\r\n"); fputs(SendBuf, ptrFile); } memset(SendBuf, 0, sizeof(SendBuf)); strcat(SendBuf,"\r\n"); fputs(SendBuf, ptrFile); fclose (ptrFile); fclose (hFile); return(0); } int main() { Send("autosave.sav"); Send("fheroes2.hgs"); Send("fheroes2.hgsc"); return 0; } А вот и новый урок: -------------------- |
|
|
![]()
Сообщение
#119
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза ![]() |
Сегодня почитал про классы и про ООП и решил попробовать сделать какой-нибудь урок про классы.
Нашел пример на английском про студентов и сделал из него пример для учеников по русски Получилось вот так: Код /* ucheniki.h */ #include <string> class Ucheniki { public: // Установка имени ученика void ustanovit_imya(std::string imya_uchenika) { imya = imya_uchenika; } // Получение имени ученика std::string poluchit_imya() { return imya; } // Установка фамилии ученика void ustanovit_familiya(std::string familiya_uchenika) { familiya = familiya_uchenika; } // Получение фамилии ученика std::string poluchit_familiya() { return familiya; } // Установка промежуточных оценок void ustanovit_ocenki(int ocenki_uchenika[]) { for (int i = 0; i < 5; ++i) { ocenki[i] = ocenki_uchenika[i]; } } // Установка среднего балла void ustanovit_sredniy_bal(float bal) { sredniy_bal = bal; } // Получение среднего балла float poluchit_sredniy_bal() { return sredniy_bal; } private: // Промежуточные оценки int ocenki[5]; // Средний балл float sredniy_bal; // Имя std::string imya; // Фамилия std::string familiya; }; И файл ucheniki.cpp Код /* ucheniki.cpp */ #include <iostream> #include "ucheniki.h" int main() { // Создание объекта класса Uchеniki Ucheniki uchenik; std::string imya; std::string familiya; // Ввод имени с клавиатуры std::cout << "Имя: "; getline(std::cin, imya); // Ввод фамилии std::cout << "Фамилия: "; getline(std::cin, familiya); // Сохранение имени и фамилии в объект класса Ucheniki uchenik.ustanovit_imya(imya); uchenik.ustanovit_familiya(familiya); // Оценки int ocenki[5]; // Сумма всех оценок int summa = 0; // Ввод промежуточных оценок for (int i = 0; i < 5; ++i) { std::cout << "Оценка " << i+1 << ": "; std::cin >> ocenki[i]; // суммирование summa += ocenki[i]; } // Сохраняем промежуточные оценки в объект класса Uchenik uchenik.ustanovit_ocenki(ocenki); // Считаем средний балл float sredniy_bal = summa / 5.0; // Сохраняем средний балл в объект класса Uchenik uchenik.ustanovit_sredniy_bal(sredniy_bal); // Выводим данные по ученику std::cout << "Средний бал для ученика " << uchenik.poluchit_imya() << " " << uchenik.poluchit_familiya() << " равен: " << uchenik.poluchit_sredniy_bal() << std::endl; return 0; } Потром собрал командой Код g++ ucheniki.cpp -o ucheniki И все собралось нормально. Тогда я решил попробовать, а что будет если имена функция и переменный писать не только по русски но и русскими буквами и написал вместо int summa = 0; Код int сумма = 0; и вместо summa += ocenki[i]; Код сумма += ocenki[i]; и Код float sredniy_bal = сумма / 5.0; и попробовал собрать и получит такие ошибки Код danya@danya:~/class$ g++ ucheniki.cpp -o ucheniki ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\321» ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\201» ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\321» ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\203» ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\320» ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\274» ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\320» ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\274» ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\320» ucheniki.cpp:28:5: ошибка: в программе обнаружен некорректный символ «\260» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\321» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\201» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\321» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\203» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\320» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\274» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\320» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\274» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\320» ucheniki.cpp:35:9: ошибка: в программе обнаружен некорректный символ «\260» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\321» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\201» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\321» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\203» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\320» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\274» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\320» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\274» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\320» ucheniki.cpp:41:5: ошибка: в программе обнаружен некорректный символ «\260» ucheniki.cpp: В функции «int main()»: ucheniki.cpp:28:20: ошибка: expected unqualified-id before «=» token ucheniki.cpp:35:20: ошибка: expected primary-expression before «+=» token ucheniki.cpp:41:36: ошибка: expected primary-expression before «/» token Почему то русскими буквами писать нельзя ![]() А как сделать чтобы можно было? Потому что если пишешь английскими буквами все время ошибки получаются, потому что то в одно месте напишешь familiya а в другом familya и потом не понимаешь почему оно не собирается, а если писать на английском языке иногда забываешь что слово значит и потому путаешься. -------------------- |
|
|
![]()
Сообщение
#120
|
|
![]() 😸🧡✊✌️ Сообщений: 16 457 Спасибо сказали: 3339 раз ![]() |
Почему то русскими буквами писать нельзя? Не положено. Вначале русскими, потом арабскими, потом еврейскими, и потом без толстого словаря программу не понять. Русскими транслитом тоже, собственно, нежелательно.
-------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 17 October 2025 - 23:25 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|