Program w C (struktury plus pliki)

piasektt
Użytkownik
Użytkownik
Posty: 195
Rejestracja: 14 paź 2007, o 20:59
Płeć: Mężczyzna
Lokalizacja: MM
Podziękował: 29 razy

Program w C (struktury plus pliki)

Post autor: piasektt »

Witam
Próbuje napisać program do poniższego zadania, mam zrealizowany podpunkt a.Trzech pozostałych podpunktów nie potrafie zrealizować. Czy ktoś potrafi dopisać pozostałe podpunkty?

Zadanie jest nastepujące:

Napisać program,który w tablicy struktur będzie przechowywał
informacje o ocenach studentów. Informacjami tymi są:
- nazwisko i imię studenta,
- nr grupy,
- rok studiów,
- ocena.

Program ma zapewnić:
a)wypełnienie tablicy struktur,
b)wydrukowanie listy studentów, których oceny mieszczą się w
przedziale [4,5] (należy zapewnić druk nazwiska i imienia studenta oraz
oceny).

c) program należy uzupełnić o możliwość zapisu elementów
składowych struktur zorganizowanych w tablice do pliku tekstowego
d) program powinien mieć możliwość odczytu danych z pliku tekstowego
i wyświetlania ich na ekranie


UWAGA: W programie stosować funkcje zdefiniowane przez użytkownika.

Kod: Zaznacz cały

 
#include <stdio.h>
#include <stdlib.h>

struct Grupa
{
char imie[10];
char nazwisko[10];
int rok;
int nr_grupy;
int ocena;
};

int main(int argc, char *argv[])
{
const iloscStud=3;
int i;
struct Grupa Student[iloscStud];
printf("Wprowadz dane studentow: 

");
for (i=0;i<iloscStud;i++)
{
printf("Student nr. %d
",i);
printf("Imie: ");
scanf("%s",Student[i].imie);
printf("Nazwisko: ");
scanf("%s",Student[i].nazwisko);
printf("Rok studiow: ");
scanf("%d",&Student[i].rok);
printf("Numer grupy: ");
scanf("%d",&Student[i].nr_grupy);
printf("Ocena studenta: ");
scanf("%d",&Student[i].ocena);
printf("
");

}
-- 7 czerwca 2010, 13:42 --Mam już właściwie gotowy program,ale wyświetla mi jeszcze kilka błędów ( w linijce 29,30,38,51,52).
Czy ktoś pomoże mi to poprawić??

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
       char imie[10];
       char nazw[10];
       int rok;
       int grupa;
       int ocena;

} Student;

void wysw (Student s)
{
     printf("%s    %s    %i    %i    %i    
",s.imie,s.nazw,s.rok,s.grupa,s.ocena);     
}

void oceny (Student s,FILE* plik)
{
     printf("%s    %s    %i    %i    
",s.imie,s.nazw,s.rok,s.ocena);
     fprintf(plik,"%s    %s    %i    %i    
",s.imie,s.nazw,s.rok,s.ocena);
}     

int main()
{
    printf("1. Wpisanie danych recznie
");
    printf("2. Pobranie danych z pliku
");
    int a;
    scanf("%i",&a);
    switch (a)
    {
           case 1:
           {                
    
           int i;
           Student studenci [10];
           printf("Podaj liczbe studentow
");
           scanf ("%i",&a);
    
           for(i=0; i<a; i++)
           {
                    printf("Podaj: nazwisko i imie,rok studiow, nr grupy,ocena
");    
                    scanf("%s %s %i %i %i", &studenci[i].imie,&studenci[i].nazw,&studenci[i].rok,&studenci[i].grupa,&studenci[i].ocena);             
             
           }
    
           for(i=0; i<a; i++)
                    wysw(studenci[i]);
    
           FILE* plik;
           plik = fopen ("oceny.txt","w");
           if (plik!=NULL)
           {
               fprintf (plik,"Studenci posiadajacy ocene 4 lub 5
");         
               printf("Studenci posiadajacy ocene 4 lub 5
");
               for(i=0; i<a; i++)
                   if(studenci[i].ocena>3)       
                      oceny(studenci[i], plik);         
                     
               fclose(plik);
           }
    
           break;
           }      
    
           case 2:
           {
           FILE* plik;
           int i;
           Student studenci [10];           
           plik = fopen ("wejscie.txt","r");       
           if (plik!=NULL)
           {                  
               fscanf (plik,"%i",&a);
    
               for(i=0; i<a; i++)
               {
                    fscanf(plik,"%s %s %i %i %i", &studenci[i].imie,&studenci[i].nazw,&studenci[i].rok,&studenci[i].grupa,&studenci[i].ocena);                       
               }
               fclose(plik);
            }   
               for(i=0; i<a; i++)
                   wysw(studenci[i]);
        
               plik = fopen ("oceny.txt","w");
               if (plik!=NULL)
               {
                   fprintf (plik,"Studenci posiadajacy ocene 4 lub 5
");          
                   printf("Studenci posiadajacy ocene 4 lub 5
");
                   
                   for(i=0; i<a; i++)
                       if(studenci[i].ocena>3)
                          oceny(studenci[i], plik);                     
                          
                   fclose(plik);
               }
            break;
            }
        
    }
    
 system("PAUSE");
 return 0;   
    
}
waldeQ
Użytkownik
Użytkownik
Posty: 15
Rejestracja: 8 paź 2007, o 18:45
Płeć: Mężczyzna
Lokalizacja: Chrzanów
Podziękował: 3 razy

Program w C (struktury plus pliki)

Post autor: waldeQ »

Skoro to jest język C to deklaracje zmiennych lokalnych umieszcza się tylko na początku bloku. Najpierw deklaracje a później instrukcje. Jak masz np. int a to wcześniej masz jeszcze dwie instrukcje czyli wywołanie printf. W C++ jest to zmienione. Chyba już nie ma innych błędów.
ODPOWIEDZ