עזרה קטנה בשפת C בבקשה... - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה קטנה בשפת C בבקשה...


t0m3r

Recommended Posts

שלום.

יש לי בעיה, אני לא בדיוק יודע כיצד לפתור אותה. הנה היא:

אני צריך לכתוב תוכנית, או חלק מתכנית שתקלוט את המספרים M ו-N, ומערך דו מימדי בגודל NxM.

זאת אומרת, אם למשל אכניס M=5 ו-N=3 - אז יווצר לי מערך דו מימדי בגודל 3x5.

תודה מראש!

קישור לתוכן
שתף באתרים אחרים

const, שמעתה נקרא לו "קבוע" (constant) זהו מספר שאין ניתן לשנותו בתוכנית, והוא בעצם ערך שניתן להשתמש בו לכל אורך התוכנית. יעיל במיוחד אם אתה למשל עושה תוכנית שעושה משהו נגיד על מספר קבוע מראש, 1000 נגיד, ועושה מלא פעולות עליו. אז במקום לכתוב תמיד 1000 אתה יכול להגדיר const DDD ולכתוב DDD במקום (כמו כל משתנה), ככה גם אם תרצה להחליף את 1000 בבו נגיד 543 לא תצטרף לשנות מליון שורות אלא רק את ההצהרת const.

זאתי הייתה חצי דקה עם הסבר שטחי על קבוע.

קישור לתוכן
שתף באתרים אחרים

אהא, אני מבין.

אנחנו משתמשים ב:

#define n 5

אז הערך הקבוע ש-n יקבל יהיה 5.

זו לא ממש הבעיה. זה ממש קל, אבל עכשיו אני מבין שככה צריך לעשות, חשבתי שזה יותר מסובך.

הבעיה הייתה בהבנת הנקרא.

ארצה לנצל את השרשור הזה לעוד שאלה, שאודה לכם אם תסבירו לי אותה. אני אקצר;

אם

NUM=123456789 ו-N=3 > אז הפונקציה תחזיר > NUM=123456987

זאת אומרת, הפונקציה הופכת את הסדר של N הספרות.

אשמח אם תענו כמה שיותר לעומק.

ד"א, שמי תומר, ונעים מאוד להיות בפורום שלכם.

תודה

קישור לתוכן
שתף באתרים אחרים

ממש אסור לך לעשות את מה שעשית הרגע

גודל של מארך חייב להיות ידוע בזמן קומפלציה

לא בזמן ריצה

רק קומפלייר מפגר יקמפל תוכנית כזאת כי עוד אישהו יש const

אבל בתכלס זה ממש אסור

קשה לי להאמין שזה מתקמפל

קישור לתוכן
שתף באתרים אחרים

דווקא אין שום בעייה ב-Define!!!

זה ממש כמו CONST... בזמן הריצה אין שוני בכלל... (בטח שלא בשביל דברים פשוטים כמו מטריצה...)

ולשאלה השנייה:


#include <iostream.h>
void main()
{
unsigned int num,N;
int i,temp=0;
cout<<"Enter a number and length";
cin>>num>>N;
for (i=0;i<N;i++){
temp=temp*10+num%10;
num/=10;
}
for (i=0;i<N;i++){
num*=10;
}
num+=temp;
cout<<num;
}

אבל זה לא פועל על מספרים גדולים מדי, בגלל הבלות האינטג'ר.

קישור לתוכן
שתף באתרים אחרים

Define אפשר לעשות בלי שום בעיה

כי פקודה שמתחילה ב

#

היא הוראה לקומפלייר

במקרה של

#define N 3

לפני קומפלציה הקומפלייר עובר על כל הקוד ושפוט מחליף כל מקום שכתוב N ב-3

אני ממש לא בטוח שאפשר לעשות Const

סתם int בטוח שאי אפשר

לגבי להפוך סדר יש פתרון יפה ברקורסיה אם אתה מעוניין

קישור לתוכן
שתף באתרים אחרים

חשבתי שאתה לא בטוח שאפשר Define

וכן...אפשר Const... זה דרך בשוטה יותר לDefine... זה עושה בדיוק את אותו הדבר...

ומישהו שלא ממש יודע מטריצות, לא ציפיתי שמחכה לתשובה ברקורסיה.. לכן נתתי תשובה בלולאות.

קישור לתוכן
שתף באתרים אחרים

אני כולה תלמיד כיתה יא' במורחב מחשבים. רקורסיות זה מסובך מדי בשבילי.

ובקשר לתכנית ש-Asystole כתב לי:

מזה "count", "cin" וכל ה->> האלה? למה הם משמשים?

אשמח לקבל הסבר.

מה אומר ה-"unsigned" שבהתחלה?

תודה

נ.ב.

אני מעוניין לקבל את הדרך הפשוטה ביותר לפתרון התרגיל, תוך כדי שימוש במהדר הכי פשוט שיש (TC).

שוב,

תודה רבה

קישור לתוכן
שתף באתרים אחרים

זה סך הכל C++, בטח תלמד את זה בשנה הבאה...

ת'כלס הקומפיילר שלך יקבל את זה כי הוא מיועד גם לC++...רק צריך להוסיף את ה

#include<iostream.h>

אבל אל תשתמש בזה....אסור לך במקצוע של C...

פשוט תחליף את זה ב...

cout<<" ", = printf(" ");

cin>>x; = scanf("%d",&x);

קישור לתוכן
שתף באתרים אחרים

ה CIN ו COUT זה אפילו לא C++... זה סתם Include.

מה שזה נותן זה נוחות כתיבה... זה הכל.

אני רגיל להשתמש בזה... אז תסתדרו אם מה שיש :-)

וה Unsigned זה כמו ערך מוחלט במתמטיקה.

אינטג'ר רגיל הוא 4 בית, כלומר הוא בטווח של מ: 32,768- עד ל: 32,767.

מה שה-Unsugned נותן, הוא טווח של מ-0 עד 65,535. הוא פשוט לא מקבל שליליים ובכך מכפיל את טווח החיוביים.

קישור לתוכן
שתף באתרים אחרים

טוב, קודם כל, הקונסט (קבוע) אפשרי בסי. בסי פלוס פלוס קיימת האפשרות (היותר טובה) של הדפיין, אשר מאפשר להגדיר גם את סוג הקבוע - דבר שעוזר מאוד בדיבגינג.

לגבי השאלה השנייה שלך, תומר, הפתרון הוא פשוט.


long x,y; /*Integer isn't enough for such numbers*/
y=123456789;
x=y%10;
y/=10;
while (y!=0)
{
x*=10;
x+=y%10;
y/=10;
}

מה שקורה הוא שאיקס מקבל כל פעם את הערך של עצמו כפול 10 + האחדות של וואי. אח"כ וואי מתחלק ב-10, עד שהוא מתאפס...

קישור לתוכן
שתף באתרים אחרים

ה CIN ו COUT זה אפילו לא C++... זה סתם Include.

מה שזה נותן זה נוחות כתיבה... זה הכל.

זה מה שנקרא שטות דיברת

cin/cout זה פונקציות שיש רק בc++ והן נמצאות בספריה של c++

iostream.h

ב-c רגיל או בשמו האמיתי ansi c אין לך cin/cout ועוד מלא דברים אחרים

אלה תוספות של c++

מכיוון שאתה עובד על קומפיילר של c++ שתומך גם ב-c אתה חושב שאתה מתכנת ב-c אבל אתה בעצם מתכנת ב-c++

קישור לתוכן
שתף באתרים אחרים

זאת טעות להגיד שאין הבדל בין const ו- define,

define זאת הוראה של ה- preprocessor.

אין קשר לקומפילציה עצמה ואין שמירה שלהם בתור symbols ב- executable.

לעומת זאת const מגדיר משתנים-קבועים, מוקצה להם שטח קבוע בזכרון, אבל אי אפשר לשנות אותו.

ב- win32, קבועים כאלו נשמרים ב- Global area של הפרוסס.

בדלפי, לדוגמא, יש project option בשם assignable contants, מה זה?

אם אתה מסמן את זה, נחש מה אפשר לעשות לקבועים.

עכשיו גם ב- c++, גם

פונקציה כזאת: void func(const int* i (

ובתוך הפונקציה יקרא const_cast<int*> אל תוך משתנה אחר כבר לא תהיה מוגנת.

כמו שנאמר פה כל ה- streaming לא קיים ב- ansi c, וזה ממש לא סתם include.

ה- constים ב- c++ באו בעיקר כדי שאנשים יפסיקו להשתמש ב- defineים, שהם בלתי אפשריים לדיבוג,

וגם שוברים אינקפסולציה.

אני ממליץ שתבדקו את הדבר הבא, קובץ ה- source הוא עם סיומת cpp, במקרה כזה VS מקמפל אותו תמיד כקובץ c++

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...