این ویدیو توضیحات مثال قبلی است که متاسفانه کیفیت صدای آن در برخی لحظات خوب نیست. برخی فریمها هم ناقص ضبط شده اند.
این ویدیو توضیحات مثال قبلی است که متاسفانه کیفیت صدای آن در برخی لحظات خوب نیست. برخی فریمها هم ناقص ضبط شده اند.
این مثال دو بخش دارد، یکی ایجاد پایگاه داده از اطلاعات کتابها و نوشتن آنها در فایل باینری book_data.db و بخش دوم شامل خواندن اطلاعات از همین فایل و نمایش آنها. ویدیوی ضبط شده مربوط به این مثال در پست بعدی منتشر می شود.
#include "stdafx.h" #include <iostream> struct BookInfo { char name[30]; char author[30]; int nPage; float price; int year; }; void CreateDatabase() { printf("To start, enter number of books you want to store in the database\n"); int n = 0; scanf_s("%d", &n); printf("Please enter Book information for %d books as follows\n", n); printf("Name, Author, Pages, Price, Year of Publication\n"); BookInfo *books = new BookInfo[n]; for (int i = 0; i < n; i++) { std::cin.ignore(); printf("\n#%d Name: ", i + 1); gets_s(books[i].name, 30); printf("\n#%d Author: ", i + 1); gets_s(books[i].author, 30); printf("\n#%d Pages: ", i + 1); scanf_s("%d", &books[i].nPage); printf("\n#%d Price: ", i + 1); scanf_s("%f", &books[i].price); printf("\n#%d Year: ", i + 1); scanf_s("%d", &books[i].year); } FILE* fp = 0; fopen_s(&fp, "book_data.db", "wb"); if (!fp) { printf("File can't be oppened.\n"); return; } fwrite(books, sizeof(BookInfo), n, fp); fclose(fp); printf("Data saved successfully\n"); } void ReadDatabase() { int n = 2; BookInfo *books = new BookInfo[n]; FILE* fp = 0; fopen_s(&fp, "book_data.db", "rb"); if (!fp) { printf("File can't be oppened.\n"); return; } fread(books, sizeof(BookInfo), n, fp); for (int i = 0; i < n; i++) { printf("\n#%d Name: %s", i + 1, books[i].name); printf("\n#%d Author: %s", i + 1, books[i].author); printf("\n#%d Pages: %d", i + 1, books[i].nPage); printf("\n#%d Price: %.1f", i + 1, books[i].price); printf("\n#%d Year: %d", i + 1, books[i].year); printf("\n--------------------------------------------"); } fclose(fp); delete[] books; } int main() { printf("Welcome to Book Database Application:\n"); bool create_data = false; //change to false for read mode if (create_data) CreateDatabase(); else ReadDatabase(); getchar(); return 0; }
در این مثال نحوه ایجاد فایل باینری و توابع نوشتن و خواندن (fread, fwrite) توضیح داده شده و یک فایل حاوی صد عدد اعشاری به دو صورت باینری و متنی ساخته شده و مقایسه می شوند:
در این مثال نحوه ایجاد فایل متنی، نوشتن در و خواندن از آن را خواهید دید. دو نوع فایل اسکی و یونیکد بررسی می شود:
مثالهایی از تابع که در کلاس بیان شد را از این آدرس دانلود کنید.
ویدیوی ضبط شده در کلاس به دلیل تنظیم نامناسب میکروفون، کیفیت صدای مناسبی ندارد اما به کارتان می آید:
مثالی که در کلاس مطرح شد جهت تسهیل حل تمرین سری سوم (بخش ج). در این مثال نحوه تفکیک یک رشته محاسباتی به دو بخش عددی نشان داده می شود:
#include "stdafx.h" #include <iostream> //Shahrood University of Technology //C Programming //Hossein Khosravi - http://Khosravi.blog.ir using namespace std; int main() { char str[100] = "1625-4520"; //str[4] = 0; //cout << str; char* p1 = strstr(str, "-"); char s1[10] = { 0 }, s2[10] = { 0 }; int n1 = 0, n2 = 0; if (p1 == NULL) cout << "operator - not found"; else { cout << "operator - is located on index " << p1 - str; strncpy_s(s1, 10, str, p1 - str); strcpy_s(s2, 10, p1 + 1); n1 = atoi(s1); //convert first part to integer n2 = atoi(s2); //convert second part to integer } //char* p = str + 5; //cout << p; getchar(); return 0; }
مثال دریافت n عدد اعشاری به کمک اشاره گر، مرتب سازی حبابی آنها و نمایش خروجی:
#include "stdafx.h" #include <iostream> int main() { /*int x = 10, y = 21; float z = (float)y / x; //remove (float) and see the results x = (int)z; printf("z = %.f", z);*/ unsigned long N = 0; printf("Please enter N:\n"); GET_N: scanf_s("%ld", &N); if (N < 1) { printf("Invalid size, try again\n"); goto GET_N; } printf("\nEnter %d Numbers: ", N); double* data = new double[N]; memset(data, 0, N * sizeof(double)); for (int i = 0; i < N; i++) scanf_s("%lf", &data[i]); for (int i = 0; i < N; i++) { for (int j = i + 1; j < N; j++) { if (data[j] > data[i]) { double t = data[i]; data[i] = data[j]; data[j] = t; } } } printf("Sorted output:\n"); for (int i = 0; i < N; i++) printf("%.2lf, ", data[i]); std::cin.ignore(); getchar(); return 0; }
مثال مطرح شده در کلاس برای کار با رشته ها:
#include <stdlib.h> #include <stdio.h> #include <string.h> using namespace std; int main() { //khosravi.blog.ir char s1[20] = ""; char s2[20] = ""; char s3[40] = ""; printf("\nPlease enter 2 strings less than 20 characters\n"); scanf("%s", s1); scanf("%s", s2); if(strcmp(s1, s2) == 0) printf("\nTwo strings are equal"); else printf("\nTwo strings are not equal"); strcpy(s3, s1); strcat(s3, " "); strcat(s3, s2); printf("\ns3 = %s", s3); getchar(); return 0; }
#include <stdio.h> int main() { // printf() displays the string inside quotation printf("Hello, World!"); return 0; }
Hello, World!
#include <stdio.h> int main() { int number; printf("Enter an integer: "); scanf("%d", &number); // True if the number is perfectly divisible by 2 if(number % 2 == 0) printf("%d is even.", number); else printf("%d is odd.", number); return 0; }
Enter an integer: -7 -7 is odd.
توضیح: این مثال برای جابجایی دو عدد اعشاری (double) نوشته شده است. برای دریافت اعداد اعشاری از lf% استفاده می کنیم. اگر بخواهید برنامه را برای اعداد صحیح بنویسید، به جای double از int و به جای lf% از d% استفاده کنید.
#include <stdio.h> int main() { double firstNumber, secondNumber, temporaryVariable; printf("Enter first number: "); scanf("%lf", &firstNumber); printf("Enter second number: "); scanf("%lf",&secondNumber); // Value of firstNumber is assigned to temporaryVariable temporaryVariable = firstNumber; // Value of secondNumber is assigned to firstNumber firstNumber = secondNumber; // Value of temporaryVariable (which contains the initial value of firstNumber) is assigned to secondNumber secondNumber = temporaryVariable; printf("\nAfter swapping, firstNumber = %.2lf\n", firstNumber); printf("After swapping, secondNumber = %.2lf", secondNumber); return 0; }
Enter first number: 1.20 Enter second number: 2.45 After swapping, firstNumber = 2.45 After swapping, secondNumber = 1.20مثالها از سایت مثالهای C برداشته شده است و می توانید مثالهای بیشتری را آنجا مطالعه کنید.