Sprawdzenie 2 programow

0

Moze Wam wpadna poprawki w oko.

Czy moglby ktos to sprawdzic ? Napisany jest w C++ a mialbyc w c.
Temat tablice 2 wymiarowe i textowe.

tekst - zamiana wskazanego znaku na wskazany

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

int main()
{
    char* tab;
    char znak;
    int rozmiar, indeks;
   

    printf("Podaj rozmiar tablicy: ");
    scanf("%d",&rozmiar);
   
    tab = (char*) malloc (rozmiar); //Alokowanie pamieci
    srand (time(0));
 
    for (int i=0; i<rozmiar; i++) //Uzupelnianie tablicy losowymi elementami
    {
        tab[i]= rand()%26+97;
    }
   
   for (int i=0; i<rozmiar; i++) //Wypisanie tablicy
    {
        printf("%c\n",(char)tab[i]);   
       
    }
   
    printf("Podaj indeks elementu, ktory chcesz zmienic (pamietaj indeksowanie zaczyna sie od 0): ");
    scanf("%d",&indeks);
    printf("\nPodaj podaj na jaki znak chcesz zmienic ten element: \n");
    fflush(stdin); //Wyczyszczenie bufora
    scanf("%c",&znak);
    tab[indeks]=znak;
    printf("\nPo zmianie: \n");
       
        for (int i=0; i<rozmiar; i++) //Ponowne wypisanie tablicy
    {
        printf("%c\n",(char)tab[i]);   
       
    }
   
    free(tab); //Zwalnianie pamieci
   
system("pause");
} 

Napisz program w C, który wczytuje wierszami tablicę typu int A o K kolumnach i W
wierszach. Utwórz wektor wynik, w którym zapamiętasz elementy o parzystych indeksach
kolumny i nieparzystych indeksach wiersza. Tablicę naleŜy przeglądać kolumnami

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

int main ()
{
int **A;

int *wynik;
int k, w, i,j,k1,w1;                                               //k - kolumny, w - wiersze

    puts("Liczba kolumn: ");
    scanf("%d", &k);
    A = (int**)malloc(k * sizeof(int*));
    puts("\nLiczba wierzy: ");
    scanf("%d", &w);
   


    for(i=0; i<k; i++)
    {
        *(A+i)=(int*)malloc(w*sizeof(int));
    }
   
    srand(time(0));
   
    for(i=0; i<k; i++)
    {
        for(j=0; j<w; j++)
        {
           
           A[j][i]= rand()% 10000;
        }   
    }
   
   
      for(j=0; j<w; j++)
    {
        for(i=0; i<k; i++)
        {
           printf("Element A[%d][%d]: %d\n",j,i,A[j][i]);
        }   
    }
    k1=0;
    w1=0;
   
     if (k % 2 == 0)
     {
            k1= k/2;
       
     }
     else
     {
     k1= (k / 2) + 1;
     }
     
     if (w % 2 == 0)
     {
        w1= w/2;     
     }
     else
     {
     w1= (w / 2) + 1;
     }
     
 
   
    wynik=(int*)malloc(k1*w1*sizeof(int));
   
   
int kk=0;
      for(int i=0;i<w;i++)
      {
        for(int j=0; j<k;j++)
        {
          
          if((j%2==0)&&(i%2!=0))
          {
            wynik[kk]=A[i][j];
            kk++;
          }
        }
      }
     
     
       
        for(i=0; i<k1*w1; i++)
    {
       
           printf("Element Wynik[%d]: %d\n",i,wynik[i]);
   
    }

free(A);
free(wynik);
system ("pause");
return 0;
} 
0

Ogólnie w standardzie C przed C99 nie jest możliwa deklaracja zmiennych w pętli for (gcc domyślnie bez dodatkowych parametrów wyrzuca tutaj błędy, więc bym tego nie używał). Dodatkowo np. na moim systemie nie mam programu pause, więc wyświetla to błąd przy wywołaniu.
//edit fflush nie powinno się używać do buforu wejściowego, może być to nie przenośne (w c++ jest cin.ignore, w c nie kminiłem tego problemu). Dodatkowo w C main musi zwrócić zero przy zakończeniu programu (w C++ jeśli nie zwrócisz żadnej wartości to automatycznie zwraca się zero, a w C nie).

1 użytkowników online, w tym zalogowanych: 0, gości: 1