Çözüldü C Dili Dersi Ödevi

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

mutsuzmert

Centipat
Katılım
27 Mayıs 2020
Mesajlar
10
Merhabalar herkese üniversite 1.sınıfa gidiyorum. C dili öğreniyoruz sınıfça, hocamız biraz kıl, zorlamayı seviyor 10 soruluk ödev verdi finaller için. 9'unu yaptım sadece 1tane sorum kaldı. Şu 2.soruda bana yardım edebilir misiniz.

Adsız.png
 

Dosya Ekleri

  • Adsız.png
    Adsız.png
    22,8 KB · Görüntüleme: 46
Son düzenleyen: Moderatör:
Çözüm
Kod:
#include <stdio.h>

void dogru(FILE *f){
    printf("Sifre dogru, vallahi\n");
   
    char c;
   
    while ((c = fgetc(f)) != EOF){
        printf("%c", c);
    }
   
    printf("\nDERS KODU\n");
}

void yanlis(){
    printf("Sifre yanlis\n");
}


int main() {
    FILE *f = fopen("191202000.txt", "r");
   
    if (NULL == f){
        printf("Dosya acilamadi.\n");
        return 1;
    }
   
    char arr[] = "191202000";
    //~ char arr[10];
   
    char pass[10];
    char c;
    int index = 0;
    int flag = 0;
   
    while ((c = fgetc(f)) != EOF){
        if ('\n' == c){
            break;
        }
       
        pass[index++] = c;
    }

   
    for (int i = 0; i< sizeof(pass); ++i){
        if (arr[i] != pass[i]){
            ++flag;
        }
    }
   
   
    fclose(f);
   
    f = fopen("191202000.txt", "r");
   
    if (NULL == f){
        printf("Dosya acilamadi.\n");
        return 1;
    }
   
    if (0 == flag){
        dogru(f);
    }
    else{
        yanlis();
    }
   
    fclose(f);
   
    return 0;
}

Zahmet olmazsa konuyu raporlayıp en iyi cevap olarak seçilmesini rica edin bari.
Ödev olduğu için direkt kodu atamam, ama öncelikle dosyayı "Append" modda açman lazım. Sonra girilen öğrenci numarası ile şifreyi dosyadan "Read" modunda okuyacak ve doğru olup olmadığını kontrol edecek. Diğer aşamalar belli zaten.
hocam ilk sorudaki kodu kendim ayarladım ama cidden 2.sorudaki kodları ne okuldla gördük ne de hoca kaynak attı. vizedan sonra uyuzluğuna geldi herhalde. Etik açısından çözmemene saygı duyarım ama rica etsem devam yollarını anlatırsan bi şekilde kendim bulabilirim. çok teşekkür ederim yanıt verdiğin için
 
Normalde yapardım ama buna kıl ve zor dediğin için yapmayacağım. İnsanlar C ile sürücü yazıyor sen şurada dosya açıp içine 2 satır veri yazmaya zor diyorsun.

Bak sana bizim hocamızın yaptığı final sınavını metin olarak atayım. Bunu oku, hala seninkinin zor olduğunu düşünüyorsan ödevini yapacağım. Bu arada bunları 6 saatte yapmamızı istedi. Sen buraya sorabiliyorsan en az 1 gün süre vermiştir. Soracaksan şimdiden cevap vermiş olayım. Ben de 1. sınıfa gidiyorum.
1- Lojistik süreçlerinin yönetilmesi için bir yazılıma ihtiyaç duyulmaktadır.
2- Firmamızda 3 ana türde araç bulunmaktadır. Bunlar; kamyon, kamyonet ve tır türü araçlardır.
3- Her araçta ortak olarak; plaka, sorumlu şoför, yük listesi ve araç türü bilgileri bulunmaktadır.
4- Kamyonların tamamı açık kasaya sahiptir. Bu nedenle; kasaları için taşıma hacimleri yoktur. Bunun yerine; sadece maksimum yük kapasiteleri vardır. Bir kamyon 2000 ila 10000 kilo arası yük taşıyabilir (sınırlar her zaman dahildir.).
5- Kamyonetler farklı kasa türlerine sahip (açık kasa, kapalı kasa, soğutmalı kasa) araçlardır a. Açık kasa kamyonetler düşük maksimum yük kapasitesine [1500 Kg, 3000 Kg] sahip kamyonlar olarak düşünülebilir. B. Kapalı kasa kamyonetlerin maksimum yük kapasitesine ek olarak yük hacimleri vardır. Bir kapalı kasa aracın yük hacmi 10 ila 30 M3 arasında olabilir. C. Soğutmalı kasalı kamyonetlerin tamamı kapalı kasa kamyonettir. Bu araçların kapalı kasa kamyonetlerden farklı olarak minimum sıcaklık bilgisi mevcuttur. Soğutmalı araçların minimum sıcaklıkları -10 ila -40 OC arasındadır.
6- Tır türü araçların yük hacimleri 30 ila 40 M3 arasında olabilir. Tır türü araçlar için maksimum yük kapasitesi bilgisi yoktur. Bu araç türünde tır’a takılı olan dorsenin tanımı için bir dorse kodu bilgisi yer almaktadır. Dorse kodu bilgisi bir char* olarak tutulmaktadır ve gerekli yer çalışma zamanında dinamik olarak alınmaktadır.
7- Bir plaka bilgisi toplam 8 karakterdir. Plaka; 2 karakterlik il kodunu takip eden 6 karakterden oluşur. Son 6 karakterin ilk bölümü harflerden oluşur. Harf bölümünde en az 1 en çok 4 harf olabilir. 8- Sorumlu şoför bilgisi en az 1 ad ve 1 soyad içerir.
9- Bir yük bilgisi yükün adı, yükün türü (kuru yük, gıda, kimyasal), yükün hacmi ve yükün ağırlığı bilgilerini içerir. Araç azami yük hacmini veya azami yük kapasitesini aşmadığı sürece istenilen sayıda yük ile yüklenebilir. Yük bilgisi bir sınıf olarak yazılmalıdır. A. Yük listesi stl: List şeklinde tutulmalıdır. B. Her araç için yük ekle ve yük boşalt fonksiyonları olmalıdır. C. Tüm yükleri tek seferde boşaltabilecek bir fonksiyon bulunmalıdır. D. Araçtaki yüklerin listesi ekrana basılabilmelidir. E. Aracın yüklü olup olmadığı öğrenilebilmelidir. F. Araç += yük şeklinde bir ifade ile araca yük eklenebilmelidir. Araca kapasitesinden fazla yük yüklenmemelidir. G. Araç -= yük şeklinde bir ifade ile araçtan yük çıkartılabilmelidir. Tüm bilgiler araçtaki yük ile eşleşiyorsa yük araçtan indirilir. H. Yük bilgisi için << operatörü tanımlı olmalıdır. İ. Yükleri sıralayabilen bir fonksiyon standart kütüphanedeki benzer fonksiyonlar kullanılmadan yazılmalıdır. Bu fonksiyon; 3 farklı şekilde sıralama yapabilmelidir: İ. Ağırlıklarına göre büyükten küçüğe, II. Hacimlerine göre küçükten büyüğe, III. Yük adlarına göre alfabetik,
10- Araç türü bilgisi aracın türünü belirten bir metindir. Bu metnin tutulması için Vector kullanılmalıdır.
11- Araç parkı girişine hangi türde aracın ne sırada geleceği bilinmemektedir. Parka gelen her aracın bilgileri ekranda gösterilmelidir. Bilgi ekranında araç türüne özel bilgiler de yer almalıdır.
12- Geliştirilecek sistemin yeni araç türlerinin eklenmesini kolaylaştıracak şekilde geliştirilmesi beklenmektedir.
13- Ar-ge departmanımız ilerleyen dönemde yazılımda geliştirmeler yapacağı için kodun iyi şekilde açıklanmış olması ve kodlama standartlarına uyum beklenmektedir. Yazılımda modern C++ özellikleri tercih edilmelidir.
14- Çalışma zamanı ile önemli bir kısıtımız yoktur. Bu nedenle; nesneye yönelik programlama prensiplerine tam uyumlu bir yazılım geliştirilmesi istenilmektedir.
15- Kapasite sınırları mutlaka kontrol edilmeli ve yanlış bir araç oluşturulması veya aracın yanlış değerlerle güncellenmesi mümkün olmamalıdır.
16- Tüm özel veri üyeleri için alıcı/düzenleyici (getter/setter) fonksiyonlar kurallara uygun şekilde oluşturulmalıdır.
17- Aykırı durumlar doğru şekilde yönetilmelidir.
18- Sonraki projelerde de birlikte çalışabilmek için sizce faydalı olacak diğer ek özellikleri de yazılıma dahil edebilirsiniz.
Çözülmesi beklenen durum: Araç parkının girişinde 20 araçlık bir kuyruk vardır. Kuyrukta her araç türünden en az 3 araç (kamyon, açık kasa kamyonet, kapalı kasa kamyonet, soğutmalı kasalı kamyonet, tır) bulunmalıdır. Bu araçların giriş bilgileri ekrana yazdırılmalıdır. Bir tıra en az 10 adet yük yüklenmelidir. Sonra bu yükler tüm sıralama yöntemlerine göre teker teker sıralanmalı ve her sıralama sonrasında baştan 3. yük araçtan indirilmelidir.
 
Normalde yapardım ama buna kıl ve zor dediğin için yapmayacağım. İnsanlar C ile sürücü yazıyor sen şurada dosya açıp içine 2 satır veri yazmaya zor diyorsun.

Bak sana bizim hocamızın yaptığı final sınavını metin olarak atayım. Bunu oku, hala seninkinin zor olduğunu düşünüyorsan ödevini yapacağım. Bu arada bunları 6 saatte yapmamızı istedi. Sen buraya sorabiliyorsan en az 1 gün süre vermiştir. Soracaksan şimdiden cevap vermiş olayım. Ben de 1. sınıfa gidiyorum.
1- Lojistik süreçlerinin yönetilmesi için bir yazılıma ihtiyaç duyulmaktadır.
2- Firmamızda 3 ana türde araç bulunmaktadır. Bunlar; kamyon, kamyonet ve tır türü araçlardır.
3- Her araçta ortak olarak; plaka, sorumlu şoför, yük listesi ve araç türü bilgileri bulunmaktadır.
4- Kamyonların tamamı açık kasaya sahiptir. Bu nedenle; kasaları için taşıma hacimleri yoktur. Bunun yerine; sadece maksimum yük kapasiteleri vardır. Bir kamyon 2000 ila 10000 kilo arası yük taşıyabilir (sınırlar her zaman dahildir.).
5- Kamyonetler farklı kasa türlerine sahip (açık kasa, kapalı kasa, soğutmalı kasa) araçlardır a. Açık kasa kamyonetler düşük maksimum yük kapasitesine [1500 Kg, 3000 Kg] sahip kamyonlar olarak düşünülebilir. B. Kapalı kasa kamyonetlerin maksimum yük kapasitesine ek olarak yük hacimleri vardır. Bir kapalı kasa aracın yük hacmi 10 ila 30 M3 arasında olabilir. C. Soğutmalı kasalı kamyonetlerin tamamı kapalı kasa kamyonettir. Bu araçların kapalı kasa kamyonetlerden farklı olarak minimum sıcaklık bilgisi mevcuttur. Soğutmalı araçların minimum sıcaklıkları -10 ila -40 OC arasındadır.
6- Tır türü araçların yük hacimleri 30 ila 40 M3 arasında olabilir. Tır türü araçlar için maksimum yük kapasitesi bilgisi yoktur. Bu araç türünde tır’a takılı olan dorsenin tanımı için bir dorse kodu bilgisi yer almaktadır. Dorse kodu bilgisi bir char* olarak tutulmaktadır ve gerekli yer çalışma zamanında dinamik olarak alınmaktadır.
7- Bir plaka bilgisi toplam 8 karakterdir. Plaka; 2 karakterlik il kodunu takip eden 6 karakterden oluşur. Son 6 karakterin ilk bölümü harflerden oluşur. Harf bölümünde en az 1 en çok 4 harf olabilir. 8- Sorumlu şoför bilgisi en az 1 ad ve 1 soyad içerir.
9- Bir yük bilgisi yükün adı, yükün türü (kuru yük, gıda, kimyasal), yükün hacmi ve yükün ağırlığı bilgilerini içerir. Araç azami yük hacmini veya azami yük kapasitesini aşmadığı sürece istenilen sayıda yük ile yüklenebilir. Yük bilgisi bir sınıf olarak yazılmalıdır. A. Yük listesi stl: List şeklinde tutulmalıdır. B. Her araç için yük ekle ve yük boşalt fonksiyonları olmalıdır. C. Tüm yükleri tek seferde boşaltabilecek bir fonksiyon bulunmalıdır. D. Araçtaki yüklerin listesi ekrana basılabilmelidir. E. Aracın yüklü olup olmadığı öğrenilebilmelidir. F. Araç += yük şeklinde bir ifade ile araca yük eklenebilmelidir. Araca kapasitesinden fazla yük yüklenmemelidir. G. Araç -= yük şeklinde bir ifade ile araçtan yük çıkartılabilmelidir. Tüm bilgiler araçtaki yük ile eşleşiyorsa yük araçtan indirilir. H. Yük bilgisi için << operatörü tanımlı olmalıdır. İ. Yükleri sıralayabilen bir fonksiyon standart kütüphanedeki benzer fonksiyonlar kullanılmadan yazılmalıdır. Bu fonksiyon; 3 farklı şekilde sıralama yapabilmelidir: İ. Ağırlıklarına göre büyükten küçüğe, II. Hacimlerine göre küçükten büyüğe, III. Yük adlarına göre alfabetik,
10- Araç türü bilgisi aracın türünü belirten bir metindir. Bu metnin tutulması için Vector kullanılmalıdır.
11- Araç parkı girişine hangi türde aracın ne sırada geleceği bilinmemektedir. Parka gelen her aracın bilgileri ekranda gösterilmelidir. Bilgi ekranında araç türüne özel bilgiler de yer almalıdır.
12- Geliştirilecek sistemin yeni araç türlerinin eklenmesini kolaylaştıracak şekilde geliştirilmesi beklenmektedir.
13- Ar-ge departmanımız ilerleyen dönemde yazılımda geliştirmeler yapacağı için kodun iyi şekilde açıklanmış olması ve kodlama standartlarına uyum beklenmektedir. Yazılımda modern C++ özellikleri tercih edilmelidir.
14- Çalışma zamanı ile önemli bir kısıtımız yoktur. Bu nedenle; nesneye yönelik programlama prensiplerine tam uyumlu bir yazılım geliştirilmesi istenilmektedir.
15- Kapasite sınırları mutlaka kontrol edilmeli ve yanlış bir araç oluşturulması veya aracın yanlış değerlerle güncellenmesi mümkün olmamalıdır.
16- Tüm özel veri üyeleri için alıcı/düzenleyici (getter/setter) fonksiyonlar kurallara uygun şekilde oluşturulmalıdır.
17- Aykırı durumlar doğru şekilde yönetilmelidir.
18- Sonraki projelerde de birlikte çalışabilmek için sizce faydalı olacak diğer ek özellikleri de yazılıma dahil edebilirsiniz.
Çözülmesi beklenen durum: Araç parkının girişinde 20 araçlık bir kuyruk vardır. Kuyrukta her araç türünden en az 3 araç (kamyon, açık kasa kamyonet, kapalı kasa kamyonet, soğutmalı kasalı kamyonet, tır) bulunmalıdır. Bu araçların giriş bilgileri ekrana yazdırılmalıdır. Bir tıra en az 10 adet yük yüklenmelidir. Sonra bu yükler tüm sıralama yöntemlerine göre teker teker sıralanmalı ve her sıralama sonrasında baştan 3. yük araçtan indirilmelidir.
Hocam haklısın ama okuduğum okul çok kaliteli bir okul değil programlama 2.dönem geldi ve korona yüzünden malum okula gidemedik.Uzaktan derste vermediler. Vizede verdiği soruları elimizden geldiğince yaptık ama finalde hiçbir şey görmeden daha kodları bilmeden bu tarz bir şey verince hepimiz zorlandık.Bana zor geldi kısaca.Buraya konu açmamın sebebi bu döngüyü öğrenip ödevimi teslim etmem. yardım edersen ne mutlu
@mutsuzmert hocanın senden istediği şey aslında Kayıt İşlemleri. YouTube'da izleyeceğin yarım saatlik video ile olayı çözersin, üstüne sana anlattığım algoritma ile yaparsın. Yine takıldığın yer olursa sor, yardımcı olmaya çalışırım. Video.
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE *dosya = fopen("191202112.txt","w");
fputs("191202112",dosya);
fputs("\nKopya cekmek ahlaksizliktir. Final sinavinda kopya cektigi ve kopya verdigi tespit edilen ogrenciler disipline sevk edilerek okuldan uzaklastirma cezasi alacaktir.",dosya);
fclose(dosya);

FILE *dosya = fopen("191202112.txt","r");
return 0;
}

ikinci olarak tekrar baştan başıp w yerine r yazsam aynı klasörü okuduktan sonra şifrenin doğru olup olmayacağını nasıl seçicem hocamm yardımın için teşekkür ederim
 
Kod:
#include <stdio.h>

int main() {
    FILE *f;
    
    f = fopen("191202000.txt", "w+");
    
    fprintf(f, "191202000\n");
    fprintf(f, "Kopya cekmek ahlaksizliktir. Final sinavinda kopya cektigi ve kopya verdigi tespit edilen ogrenciler disipline sevk edilerek okuldan uzaklastirma cezasi alacaktir. Ben daha bunu bile yapamayacak kadar aciz bir ogrenciyim.\n");
    
    fclose(f);
    
    return 0;
}

Hocanızın kafası mı güzel? Adam ilkinde şifre yazdır diyor. İkincide bak bakalım o yazdırdığın doğru mu diyor. Hoca verinin değişmesini mi bekliyoruz?
 
Kod:
#include <stdio.h>

int main() {
    FILE *f;
   
    f = fopen("191202000.txt", "w+");
   
    fprintf(f, "191202000\n");
    fprintf(f, "Kopya cekmek ahlaksizliktir. Final sinavinda kopya cektigi ve kopya verdigi tespit edilen ogrenciler disipline sevk edilerek okuldan uzaklastirma cezasi alacaktir. Ben daha bunu bile yapamayacak kadar aciz bir ogrenciyim.\n");
   
    fclose(f);
   
    return 0;
}

Hocanızın kafası mı güzel? Adam ilkinde şifre yazdır diyor. İkincide bak bakalım o yazdırdığın doğru mu diyor. Hoca verinin değişmesini mi bekliyoruz?
hocam cidden bilmiyorum böyle öğrenciye böyle hoca :D attığın 18soruluk ödevi bizim hoca çözer mi ondan emin değilim. Ben şimdi bu yoldan nasıl devam edebilirim bana yardımcı olur musun
 
Kod:
#include <stdio.h>

void dogru(FILE *f){
    printf("Sifre dogru, vallahi\n");
   
    char c;
   
    while ((c = fgetc(f)) != EOF){
        printf("%c", c);
    }
   
    printf("\nDERS KODU\n");
}

void yanlis(){
    printf("Sifre yanlis\n");
}


int main() {
    FILE *f = fopen("191202000.txt", "r");
   
    if (NULL == f){
        printf("Dosya acilamadi.\n");
        return 1;
    }
   
    char arr[] = "191202000";
    //~ char arr[10];
   
    char pass[10];
    char c;
    int index = 0;
    int flag = 0;
   
    while ((c = fgetc(f)) != EOF){
        if ('\n' == c){
            break;
        }
       
        pass[index++] = c;
    }

   
    for (int i = 0; i< sizeof(pass); ++i){
        if (arr[i] != pass[i]){
            ++flag;
        }
    }
   
   
    fclose(f);
   
    f = fopen("191202000.txt", "r");
   
    if (NULL == f){
        printf("Dosya acilamadi.\n");
        return 1;
    }
   
    if (0 == flag){
        dogru(f);
    }
    else{
        yanlis();
    }
   
    fclose(f);
   
    return 0;
}

Zahmet olmazsa konuyu raporlayıp en iyi cevap olarak seçilmesini rica edin bari.
 
Çözüm
Çok teşekkür ederim hocam dediğinizi yaptım sağ olun.
Kod:
#include <stdio.h>

void dogru(FILE *f){
    printf("Sifre dogru, vallahi\n");
  
    char c;
  
    while ((c = fgetc(f)) != EOF){
        printf("%c", c);
    }
  
    printf("\nDERS KODU\n");
}

void yanlis(){
    printf("Sifre yanlis\n");
}


int main() {
    FILE *f = fopen("191202000.txt", "r");
  
    if (NULL == f){
        printf("Dosya acilamadi.\n");
        return 1;
    }
  
    char arr[] = "191202000";
    //~ char arr[10];
  
    char pass[10];
    char c;
    int index = 0;
    int flag = 0;
  
    while ((c = fgetc(f)) != EOF){
        if ('\n' == c){
            break;
        }
      
        pass[index++] = c;
    }

  
    for (int i = 0; i< sizeof(pass); ++i){
        if (arr[i] != pass[i]){
            ++flag;
        }
    }
  
  
    fclose(f);
  
    f = fopen("191202000.txt", "r");
  
    if (NULL == f){
        printf("Dosya acilamadi.\n");
        return 1;
    }
  
    if (0 == flag){
        dogru(f);
    }
    else{
        yanlis();
    }
  
    fclose(f);
  
    return 0;
}

Zahmet olmazsa konuyu raporlayıp en iyi cevap olarak seçilmesini rica edin bari.
hocam merhaba size mesaj göndermek istemiştim fakat profilinize sınır getirilmiş. zahmet olmaz ise bana bir ulaşabilir misiniz özelden bir şey danışmam lazım da
 
Son düzenleme:

Geri
Yukarı