چالش برنامه نویسی loop type FOR

پرسیده شده
فعالیت 1197 روز پیش
دیده شده 1300 بار
5

با توجه به آرایه ذیل و مقدار خروجی ذکر شده با استفاده از حلقه های تو در تو ( for ) مقادیر را به صورت پویا استخراج و مانند نمونه چاپ نمایید . (آرایه مذکور از نوع دو بعدی می باشد برای شمارش ایندکس از i , j استفاده نمایید)

 

نمونه آرایه :

array(["efran", 20], ["maryam", 28], ["ehsan", 18], ["sara", 22])

خروجی (عینا مانند نمونه باشد)

name: efran age: 20
name: maryam age: 28
name: ehsan age: 18

name: sara age: 22

 

نمونه سورس کد برای استفاده بیشتر قرار گرفته است نسبت به درج کد تکراری خود داری نمایید . ( چالش به منظور تمرین بیشتر شما ایجاد شده است بنابراین برای حل مثال از نگاه کردن به سورس کد خود داری فرمایید)

 

 

 

<?php

    // for ($i=0; $i < ; $i++) { 
    //     # code...
    // }

    $users = array(["efran", 20], ["maryam", 28], ["ehsan", 18], ["sara", 22]);
    // print_r($users);

    for ($i=0; $i < count($users) ; $i++) {
      for ($j=0; $j < count($users[$i]) ; $j++) { 
           # code...
            // print_r($users[$i][$j]." ");
            switch ($j) {
                case 0:
                    # code...
                    $name = $users[$i][$j];
                    break;
                
                default:
                    # code...
                    $age = $users[$i][$j];
                    break;
            }
            //echo"<br>";
            //or
            //echo"{$users[$i][$j]}";
      }
      echo"name: $name  "."age: $age ".",  "."<br>";
 }

 // count number of array member
 // echo sizeof($users); 

 

فایل پیوست

حسن سهرابیان
حسن سهرابیان

6 بهمن 98

3
حذف شده

نیازی به دوتا حلقه نیست ولی من هم تک حلقه ای نوشتم هم دو حلقه ای

  $arr = array(
        ["efran", 20], ["maryam", 28],
        ["ehsan", 18], ["sara", 22]
    );
    for ($i = 0, $size = count($arr); $i < $size; $i++) {
        //with one for loop
        echo "name : {$arr[$i][0]} age : {$arr[$i][1]}" . '<br>';
        //if want two for loop
        /* $output = '';
        for ($j = 0; $j <= 1; $j++) {
            $output = $j == 0 ? $output . "name : {$arr[$i][$j]}" : $output . "age : {$arr[$i][$j]}";
        }
        echo $output . '<br>';*/
    }

 

فایل پیوست

مرتضی ترکمن

توسط

مرتضی ترکمن

6 بهمن 98

حذف شده
یک نکته خیلی ریزی حلقه ی for من با شما داره. دوست دارم خودتون متوجه بشید. اگر متوجه شدید، اینجا کامنت کنید.
مرتضی ترکمن

6 بهمن 98

حذف شده
سلام . برنامه نویسی شما باید با استفاده از طرح سوال صورت گیرد با while - do while و... هم امکان نوشتن وجود دارد . اما اگر به سورسی که در اختیار گذاشتم دقت فرمائید مقادیر آرایه دو بعدی به صورت پویا واکشی شده دقیقا همین کاری که شما انجام دادید ولی در for اولی دقیقا شما به صورتی دستی ایندکس ها رو برای بعد دوم مشخص کردید . اینکه ازternary استفاده کردید احسنت داره . سوال ایجاد شده به جهت ایجاد تمرین بیشتر و مرور مطالب قبل می باشد و البته ما برنامه نویسی رو یادمی گیریم برای ماژولار نوشتن و پویا کردن آن .
حسن سهرابیان

6 بهمن 98

حذف شده
من متن آخر شما رو ندیدم . در for اولی بهتر هست که طبق ساختار psr پیش برید به جای $sieze شما میتونستید .... یاد شعبده بازی ها .... من رو انداختید.
حسن سهرابیان

6 بهمن 98

2
حذف شده

چالش خوبی بود.واقعا تشکر میکنم از شما آقایی سهرابیان عزیز.

اگر منظورتونو درست متوجه شده باشم استفاده از حلقه تودرتوی for بوده که من به این شکل انجامش دادم.ولی روش خودتون و اقای ترکمن خیلی خلاقانه بود.

<?php
$arr = [["erfan", 20], ["maryam", 28], ["ehsan", 18], ["sara", 22]];

//First For Loop

for ($i = 0; $i < count($arr); $i++) {
    echo "name : {$arr[$i][0]}";
    
    //Secend For Loop

    for ($j = 0; $j < count($i); $j++) {
        echo " age : {$arr[$i][1]} <br>";
    }
};
/* output code:
name : erfan age : 20
name : maryam age : 28
name : ehsan age : 18
name : sara age : 22
*/

 

فایل پیوست

جبار محمدی

توسط

جبار محمدی

6 بهمن 98

حذف شده
جالب بود
مرتضی ترکمن

6 بهمن 98

حذف شده
سلام . من معمولا کامنت زیاد درج نمی کنم ولی کد شما از لحاظ پیچیدگی زمانی در بهترین حالت قرار داره به عبارت دیگه بهینه ترین حالت رو داره . احسنت . چون من در سورس خودم یا آقای مرتضی ترکمن از شرط استفاده کردیم بنابراین پیچیدگی زمانی بیشتر شده و از لحاظ سرعت اجرا و تخصیص حافظه بهینه نیست . افرین
حسن سهرابیان

6 بهمن 98

حذف شده
ممنون از شما آقایی سهرابیان عزیز و آقایی ترکمن بزرگوار.اینکه نظر دادین برام خیلی خیلی ارزشمندم بود.واقعا خوشحالم که در این دوره با شما عزیزان با دانشم.تو همین تایپیک و تایپیک آقایی ترکمن چندتا نکته خوب یاد گرفتم.مطرح کردن سوالات و تایپیکایی این چنینی خیلی کمک کنندس.امیداورم بیشتر شاهد باشیم.
جبار محمدی

6 بهمن 98

1
حذف شده

من یه اصلاحی بزنم:

الان کامنتتون دیدم در مورد پویا بودن کد پس من اصلاح میکنم کدمو:

<?php
$arr = [["erfan", 20], ["maryam", 28], ["ehsan", 18], ["sara", 22]];

//First For Loop

for ($i = 0; $i < count($arr); $i++) {
    $name = $arr[$i][0];
    
    //Secend For Loop

    for ($j = 0; $j < count($i); $j++) {
        $age = $arr[$i][1] . '<br>';
    }
    // Print 
    echo "Name : {$name}" .' '. "Age : {$age}";
};

 

فایل پیوست

جبار محمدی

توسط

جبار محمدی

6 بهمن 98

حذف شده
افرین . البته یک نکته ی دیگه ای هم که وجود داره هنوز پویایی لازم رو نداره و ماژولار نیست چرا ؟‌ بعد دوم آرایه رو به صورت Manual مقدار دهی کردید . در رابطه با صورت مسئله درست هست ولی به صورت کلی جای کار داره البته کلا این آرایه ای که شما یا من ایجاد کردیم به صورت ایندکسی هست مثل این ممیمونه که کاربر یک اطلاعاتی رو وارد کنه و یک سری رو نه و باید براش فیلتر بزاریم که اگر کاربر اطلاعاتی رو وارد نکر مقدار null تزریق کنه و یا از کلید استفاده کنیم .
حسن سهرابیان

6 بهمن 98

حذف شده
نکته ی دیگه ای که وجود داره همیشه همه چیز تا زمانی که به صورت دو به دو هست حل کردنش آسونه ولی زمانی که شما مقادیر آرایه تون بالا میره دیگه نمی تونید به صورت manual یا دستی بعد دوم رو مقداری دهی کنید و شاید مقادیر آرایه نزدیک ۶ مورد باشه و بهینه بودن سورس شما زیر سوال میره . موفق باشید .
حسن سهرابیان

6 بهمن 98

حذف شده
ممنون از راهنمایتون.واقعیتش اینه که من تا الان نمیدونستم برنامه نویسی مازولار ینی چی!و گفتین پویا باشه فکر کردم بزاریمش درون یک متغییر مثل کد شما و اقایی ترکمن کافیه!!!از سادگی کدم نسبت به کد شما و اقایی ترکمن میشه فهمید که به اندازه شما دانش ندارم.واقعا ممنونم بخاطر شیرکردن اطلاعات و نظرات مفیدتون.
جبار محمدی

6 بهمن 98

0
حذف شده
$array = array(["efran", 20], ["maryam", 28], ["ehsan", 18], ["sara", 22]);
$count = sizeof($array);
for( $counter = 0  ; $counter <  $count ; $counter++){
    echo "name: {$array[$counter][0]} age: {$array[$counter][1]} <br>";
}

ایرادات منم اگه بگید ممنون میشم دوستان

 

فایل پیوست

mahdi mortezaee

توسط

mahdi mortezaee

7 بهمن 98

حذف شده
سلام و ادب . کد شما در ظاهر کار میکنه ( البته من چشمی نگاه کردم ) ولی ساختار آن با توجه به صورت سوال نیست . دقت بفرمایید گفته شده با ساختار for های تو در تو . چرا صورت سوال به این صورت طراحی شده است ؟ به خاطر اینکه شما تمرین بیشتر و درک بهتری نسبت به ساختار حلقه ی for داشته باشد و مقادیر به صورت داینامیک واکشی و در خروجی ثبت گردد . جوابتون نباید شبیه به استاد باشه .
حسن سهرابیان

8 بهمن 98

0
حذف شده

سلام و عرض ادب

ممنون میشم کد من رو هم نگاه کنید و ایرادها رو بهم بگید

با تشکر

$students = array(["efran", 20], ["maryam", 28], ["ehsan", 18], ["sara", 22]);
for($m=0;$m<count($students);$m++){
    for($n=0;$n<=0;$n++)
    {
        $b = 1;
        echo "name : ".$students[$m][$n]." age : ".$students[$m][$b]."<br>";
        
    }
}

output //

name : efran age : 20
name : maryam age : 28
name : ehsan age : 18
name : sara age : 22

فایل پیوست

دیاکو دیندار

توسط

دیاکو دیندار

21 خرداد 99

حذف شده
فور دوم شما دینامیک نیست بهتره دوباره به ارایه برگردید مثلا من میخوام بعد دوم رو داشته باشم برای این منظور در فور دوم در بخش شرط میگم اندازه تعداد عناصر دوم آرایه رو به من بده پس از دستور sizeof($students[$m] استفاده میکنیم وقتی ایندکس آرایه با فور اول صفر هست وارد بعد دوم میشه و بررسی میکنه بعد دوم چه تعداد عضو داره و بر اساس اون شمارش رو انجام میده
0
حذف شده

مرسی از چالش  آقای سهرابیان . من با  حلقه while نوشتم.

​
$users=array(["efran", 20], ["maryam", 28], ["ehsan",18], ["sara", 22]);

$att=count($users);
$a=0;
while ($a <$att) 
{
   echo "Name: {$users[$a][0]}  age:{$users[$a][1]} <br>";
   $a++;

}

/*
outopt: خروجی

Name: efran age:20
Name: maryam age:28
Name: ehsan age:18
Name: sara age:22*/


​

 

فایل پیوست

آرش مکینیان

توسط

آرش مکینیان

25 مهر 99

0
حذف شده

من وایل تودرتو نوشتم ولی نمیدونم چرا فقط یکی از داخل آرایه رو چاپ میکنه ممنون میشم کمکم کنید

$users = array(["alireza",37],["amirali",36],["reyhane",34],["mahboube",37]);
$i = 0;
$j = 0;
while ($i < sizeof($users)){
    while ($j < sizeof($users[$i])){
        switch ($j){
            case 0:
                echo "name : ". $users[$i][$j];
                $j++;
                break;
            default:
            echo " age: ". $users[$i][$j]."<br>";
            $j++;
        }
    }
    $i++;
}
فایل پیوست

علیرضا جهانی

توسط

علیرضا جهانی

29 آذر 99

حذف شده
سلام جناب جهانی مشکل کد شما اینه که متغیر $j رو باید جای دیگری تعریف کنید در زیر شکل صحیح کد رو براتون فرستادم
Amir F

27 دی 99

0
حذف شده
$users = array(["alireza", 37], ["amirali", 36], ["reyhane", 34], ["mahboube", 37]);
$i = 0;
while ($i < sizeof($users)) {
    $j = 0;
    while ($j < sizeof($users[$i])) {
        switch ($j) {
            case 0:
                echo "name : " . $users[$i][$j];
                $j++;
                break;
            default:
                echo " age: " . $users[$i][$j] . "<br>";
                $j++;
        }
    }
    $i++;
}
فایل پیوست

Amir F

توسط

Amir F

27 دی 99