עבור לתוכן

בעיית מערכים בC

Featured Replies

פורסם
  • מחבר

הסתדרתי אפשר לדלג כרגע

פורסם
  • מחבר

התוכנית מציגה במקום את הערכים שיישמתי כתובות או משהו כזה, למה זה קורה?

צריך לכתוב לפחות 30 תווים לבדיקה הזאת.

תודה!

#include <stdio.h>
#include <conio.h>
#define N 32


char getNum (char arr1[],char arr2[],int n);
char addNums(char arr1[],char arr2[],char arr3[],int n);
int main ()
{
char arr1[32];
char arr2[32];
char arr3[33];
getNum(arr1,arr2,N);
printf("\n %d %d\n",arr1[0],arr2[0]);
addNums(arr1,arr2,arr3,N);










getch();
return 0;
}


char getNum (char arr1[],char arr2[],int n)
{
int i,j,count;
char k=0,m=0,z=0,l=0;


printf("Please enter two positive numbers:\n ");
printf("num 1 ");


for (i=31;i>-1&&z!=1;i--){
k=scanf ("%c",&arr1[i]);
if (arr1[i]=='\n')
z=1;
if ((arr1[i]>'9'||arr1[i]<'0')&&z!=1)
{


printf("wrong input! ");
return 0;
}
}
i=i++;
count=i;
for (count;count>-1;count--){
arr1[count]=0;}


fflush(stdin);
printf(" num 2 ");
for (j=31,z=0;j>-1&&z!=1;j--){
m=scanf ("%c",&arr2[j]);
if (arr2[j]=='\n')
z=1;
if ((arr2[j]>'9'||arr2[j]<'0')&&z!=1)
{
printf("wrong input! ");
return 0;
}


}


j=j++;
for (count=j;count>-1;count--){
arr2[count]=0;}






}
char addNums(char arr1[],char arr2[],char arr3[],int n)
{
printf("%d %d %d %d %d %d %d",arr1[0],arr1[1],arr1[2],arr1[3],arr1[4],arr1[5],arr1[6]);
printf("\n%d %d %d %d %d %d %d",arr2[0],arr2[1],arr2[2],arr2[3],arr2[4],arr2[5],arr2[6]);}

פורסם

אתה מדפיס את האיברים במערכים כאילו הם מספרים (int) למרות שהם תווים (char).

חוץ מזה, בשביל להעלות את i ב-1 צריך לעשות ++i או i=i+1, לא ++i=i.

פורסם
  • מחבר

אוי אתה צודק...תודה!

יואב איך נמנעים מטעויות כאלה?

טעויות כאלה קטנות מורידות לי שעה ולפעמים גם יותר עד שאני מבין מה קורה שם,

לא תמיד אני מצליח עם הדבאגר לעלות על הטעות..

פורסם
  • מחבר

נשארה לי בעיה אחת כל כך קטנה ואני לא מבין מה הבעיה

אני מנסה לחשב את 8+3 ולא את הכתובות שלהם, אני מנסה עם פוינטרים, בלי פוינטרים, בכל מקרה הוא מחשב לי 51+56

[attachment deleted by admin]

פורסם

בבירור, כי אתה משתמש בתווים במקום מספרים. אתה יכול להמיר מתו למספר ע"י חיסור התו '0'.

פורסם
  • מחבר

אבל עכשיו קורה בדיוק הפוך, הוא מחשב את מה שבחוץ

[attachment deleted by admin]

פורסם

תחשוב (לוגית) מה אתה מנסה להדפיס.

להזכירך - חיסור '0' הופך מתו למספר.

פורסם
  • מחבר

אני כבר לא יודע מה אני מנסה, ישבתי על זה חצי לילה, לא הלכתי ללימודים בגלל זה, ואני עדיין מנסה לפתור את זה,

כרגע זה ממש תקוע ומשהו שם פשוט לא עובד.

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

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

אני באמת מיואש יואב, אשמח אם תראה לי איפה אני טועה.

תודה!

מזה הסייז הזה בקוד? הוא רושם כאן בצורה לא מסודרת...

[size=0.7em]#include <stdio.h>[/size]
[size=0.7em]#include <conio.h>[/size]
[size=0.7em]#define N 32[/size]

[size=0.7em]char getNum (char arr1[],char arr2[],int n);[/size]
[size=0.7em]char addNums(char arr1[],char arr2[],char arr3[],int n); [/size]
[size=0.7em]int main ()[/size]
[size=0.7em]{[/size]
[size=0.7em] char arr1[32];[/size]
[size=0.7em] char arr2[32];[/size]
[size=0.7em] char arr3[33];[/size]
[size=0.7em] getNum(arr1,arr2,N);[/size]
[size=0.7em] addNums(arr1,arr2,arr3,N);[/size]





[size=0.7em] getch();[/size]
[size=0.7em] return 0;[/size]
[size=0.7em]}[/size]

[size=0.7em]char getNum (char arr1[],char arr2[],int n)[/size]
[size=0.7em]{[/size]
[size=0.7em] int i,j,count;[/size]
[size=0.7em] char k=0,m=0,z=0,l=0;[/size]

[size=0.7em] printf("Please enter two positive numbers:\n ");[/size]
[size=0.7em] printf("num 1 ");[/size]

[size=0.7em] for (i=31;i>-1&&z!=1;i--){[/size]
[size=0.7em] k=scanf ("%c",&arr1[i]);[/i][/size]
[size=0.7em] if (arr1[i]=='\n')[/i][/size]
[size=0.7em] z=1;[/size]
[size=0.7em]if ((arr1[i]>'9'||arr1[i]<'0')&&z!=1) [/i][/i][/size]
[size=0.7em]{[/size]

[size=0.7em] printf("wrong input! ");[/size]
[size=0.7em] return 0;[/size]
[size=0.7em] }[/size]
[size=0.7em] } [/size]

[size=0.7em] count=i;[/size]
[size=0.7em] for (count;count>-1;count--){[/size]
[size=0.7em] arr1[count]=0;}[/size]

[size=0.7em] fflush(stdin);[/size]
[size=0.7em] printf(" num 2 ");[/size]
[size=0.7em] for (j=31,z=0;j>-1&&z!=1;j--){[/size]
[size=0.7em] m=scanf ("%c",&arr2[j]);[/size]
[size=0.7em] if (arr2[j]=='\n')[/size]
[size=0.7em] z=1;[/size]
[size=0.7em] if ((arr2[j]>'9'||arr2[j]<'0')&&z!=1) [/size]
[size=0.7em] {[/size]
[size=0.7em] printf("wrong input! ");[/size]
[size=0.7em] return 0;[/size]
[size=0.7em] }[/size]

[size=0.7em] [/size]
[size=0.7em] } [/size]

[size=0.7em] [/size]
[size=0.7em] for (count=j;count>-1;count--){[/size]
[size=0.7em] arr2[count]=0;} [/size]

[size=0.7em] [/size]


[size=0.7em]}[/size]
[size=0.7em]char addNums(char arr1[],char arr2[],char arr3[],int n)[/size]
[size=0.7em]{[/size]
[size=0.7em] char i,j,w,a=0,bit1,bit2;[/size]

[size=0.7em] int la;[/size]
[size=0.7em] for (j=31,i=31,la=0;la>-1;la++,j--,i--){[/size]
[size=0.7em] [/size]


[size=0.7em] arr3[31-la]=arr2[j]+arr1[i]-'0';[/i][/size]

[size=0.7em] }[/size]
[size=0.7em] for (w=31,la=0;w>-1;w--,la++)[/size]
[size=0.7em] printf("%c",arr3[31-la]);[/size]

[size=0.7em]}[/size]

פורסם
  • מחבר

יש לי שתי בעיות קטנות כאן

1)אם החיבור גדול מ-9

2)אני רוצה להעלים את האפסים בסוף אבל מצד שני אם יש אפס באמצע המספר זה בסדר לכן אני תקוע אם התנאי

[attachment deleted by admin]

פורסם
  • מחבר

זה הקוד



[size=1] for (i=31,j=31;i>-1,j>-1;i--,j--){[/size]
[size=1] arr3[j]=arr2[i]+arr1[i]-'0';[/size]

[size=1] }[/size]

[size=1] i=31;[/size]
[size=1] for(i=31;i>-1;i--){[/size]
[size=1] printf("%c",arr3[i]);[/size]

[size=1] }[/size]
[size=1] }[/size]

ארכיון

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

דיונים חדשים