עבור לתוכן

עזרה בתרגיל בC, לולאות

Featured Replies

פורסם

זקוק לעזרה בתרגיל, אני מצליח להבין את הלוגיקה ובניתי את הקוד אבל נירא לי התנאי(if(arr1==0&&prev==1 לא עובד והוא פשוט לא נכנס אליו, אשמח לכל עזרה, זה דיי דחוף למחר :s07:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 20
void main (void)
{
int arr1[N]={0},arr2[N]={0},count=0,prev;
float result;
clrscr();
randomize();
for(int i=0;i<N;i++)
{
arr1[i]=random(2);
printf("%d",arr1[i]);
if(i!=0)
prev=arr1[i];
if(prev==1)
count++;
if(arr1[i]==0&&prev==1)
{
arr2[count]++;
count=0;
}
}
for(i=1;i<N;i++)
if(arr2[i])
printf("\nesh %d sdarot shel %d ahadot\n",arr2[i],i);

}

הפקודה printf("%d",arr1); היא בשבילי על מנת לראות אם יוצא נכון וכמובן שכחתי לצרף את התרגיל [br]פורסם בתאריך: 12 מאי 2009, 00:51:42שכחתי להוסיף את התרגיל סורי :silly: ככה זה כשיושבים על זה כבר שעה וחצי :bash:

[attachment deleted by admin]

פורסם

התנאי הזה לא יתקיים אף פעם, כי prev שווה לערך שמאוכסן במקום ה-i במערך שלך, במקום במקום ה-i-1.

פורסם
  • מחבר

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

פורסם
  • מחבר

הצלחתי לתקן חלק אבל אני לא מצליח לגרום שהסיפרה האחרונה תקלט :kopfpatsch:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 20
void main (void)
{
int arr1[N]={0},arr2[N]={0},count=0,prev,last;
float result;
clrscr();
randomize();
for(int i=0;i<N;i++)
{
arr1[i]=random(2);
printf("%d",arr1[i]);
if(i!=0)
{
last=prev;
prev=arr1[i];
}
if(prev==1)
count++;
if(i==0&&arr1[i]==1)
{
count++;
prev=arr1[i];
}
if(i==19&&arr1[i]==1)
count++;
if(arr1[i]==0&&last==1)
{
arr2[count]++;
count=0;
}
}
for(i=1;i<N;i++)
if(arr2[i])
printf("\nesh %d sdarot shel %d ahadot\n",arr2[i],i);

}

פורסם

#include <iostream.h>
#include <stdlib.h>
#include <time.h>

#define N 20
void main ()
{
int arr1[N]={0},arr2[N]={0};
int i;
srand(time(NULL));
//klita
for(i=0;i<N;i++)
{
arr1[i]=rand()%2;
cout << arr1[i] <<" ";
}
cout <<"\n";
for(i=0;i<N;i++)
{
int cnt=0;

while(i<N && arr1[i]==1) //found a serie of 1
{
cnt++; //count them
i++;
}
if(cnt!=0)
arr2[cnt]++;
}
int sdarot=0;
for(i=0;i<N;i++)
if(arr2[i]!=0)
cout << "sidra sheyesh " << i << "achadot " << arr2[i] <<"\n";

}

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

ארכיון

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

דיונים חדשים