Çözüldü C yazdığım program sadece bir değerde hatalı sonuç veriyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
12 Aralık 2015
Mesajlar
6.697
Makaleler
9
Çözümler
11
Daha fazla  
Sistem Özellikleri
i7 10750H || GTX 1660 Ti 6 GB Mobile || 2x16 GB RAM || 512 GB NVMe M.2 SSD || 1080p 144 Hz IPS Panel || Windows 11-macOS Big Sur || Acer Nitro 5 AN515-55 2020 ||
Cinsiyet
Erkek
Meslek
Öğrenci
C:
#include <stdio.h>
#define size 10

int main() {
   
    int a[size]={};
    int b,c,d;
   
   
    printf("Sayi giriniz, (-1 girilince biter...)");
   
   
   
   
    for (b=0; b < 10; b++) {
       
        scanf(" %d",&a[b]);
       
       
        if (a[b]==-1) {
           
            for (d=0; d < b ; d++) {
               
           
            printf(" %d\n", a[d]*a[d]);  
               
            }
           
           
        printf(" %d'ye kadarki sayilarin karesi usttedir...",b);
       
        }
   
       
   
    }
   
    for (c=0; c < 10; c++) {
   
    printf(" %d\n",a[c]*a[c]);
   
     }
   
    printf("10 tane sayiyi direkt girdiniz. (-1'e basilmadi) Sonuclar usttedir...");
   
 
   
    return 0;
   
}

Soru: Klavyeden ''-1'' girilinceye kadarki değerleri diziye aktaran ve bu değerlerin karesini ekrana bastıran programı yazınız.

Böyle bir kod yazdım. 1'den 10 kadar hiç ''-1'' girmeyince ve 8 elemana kadar yazıp ardından ''-1'' yazınca çalışıyor. Ama soruya göre 9 eleman ve sonrasında ''-1'' girilince de hesaplayabilmesi lazım.


1639572226456.png


1639572259535.png


1639572302943.png


Bunun olma sebebi işlemi durdurmak için kullandığım ''-1'' in de diziye atanması ve 10. eleman olarak görünmesi ancak uğraştım ve bu problemi gideremedim.
''printf(" %d'ye kadarki sayilarin karesi usttedir...",b);'' bu satırdan sonra b=9 ise aşağıdaki adımlara inmesini engelleyecek bir kodu yazamadım kısaca.

Mümkünse yeni kod olmadan bu kodların üzerinde düzenleme ile bir çözüm tavsiyesi verebilirseniz çok memnun olurum.
Düzenleme: Sorunu dediğim satırın ardından
if (b==9) {
return 0;
kodu ile çözdüm.
 
Son düzenleme:

Geri
Yukarı